--- rpl/src/transliteration.c 2011/08/30 14:19:28 1.39 +++ rpl/src/transliteration.c 2011/09/14 17:56:00 1.40 @@ -405,11 +405,7 @@ localisation_courante(struct_processus * * Récupération de la valeur de retour du processus détaché */ -# ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) -# else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) -# endif + if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -417,34 +413,20 @@ localisation_courante(struct_processus * if (waitpid(pid, &status, 0) == -1) { -# ifndef SEMAPHORES_NOMMES - if (sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) -# else - if (sem_wait((*s_etat_processus).semaphore_fork) == -1) -# endif + if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } (*s_etat_processus).erreur_systeme = d_es_processus; return; } -# ifndef SEMAPHORES_NOMMES - if (sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) -# else - if (sem_wait((*s_etat_processus).semaphore_fork) == -1) -# endif + if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } } while((!WIFEXITED(status)) && (!WIFSIGNALED(status))); @@ -461,11 +443,7 @@ localisation_courante(struct_processus * tampon[0] = d_code_fin_chaine; -# ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) -# else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) -# endif + if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -475,17 +453,10 @@ localisation_courante(struct_processus * pipes_sortie[0], &(tampon[pointeur]), longueur_lecture)) > 0) { -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) -# endif + if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } tampon[pointeur + ios] = d_code_fin_chaine; @@ -501,28 +472,17 @@ localisation_courante(struct_processus * return; } -# ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) -# else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) -# endif + if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } } -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) -# endif + if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } if (strlen(tampon) == 0) @@ -582,11 +542,7 @@ localisation_courante(struct_processus * free(arguments); -# ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) -# else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) -# endif + if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -608,17 +564,10 @@ localisation_courante(struct_processus * strcpy((*s_etat_processus).localisation, d_locale); } -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) -# endif + if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } if (close(pipes_erreur[0]) != 0)