--- rpl/src/transliteration.c 2011/04/11 13:02:29 1.26.2.1 +++ rpl/src/transliteration.c 2011/09/20 08:56:24 1.42 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.22 + RPL/2 (R) version 4.1.3 Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -105,7 +105,8 @@ reencodage(struct_processus *s_etat_proc chaine_sortie[0] = d_code_fin_chaine; - if ((buffer_sortie = malloc((d_LONGUEUR + 1) * sizeof(char))) == NULL) + if ((buffer_sortie = malloc((d_LONGUEUR + 1) * sizeof(unsigned char))) + == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); @@ -131,7 +132,7 @@ reencodage(struct_processus *s_etat_proc } } - tampon = (unsigned char *) chaine_sortie; + tampon = chaine_sortie; (*pointeur) = d_code_fin_chaine; if ((chaine_sortie = malloc((strlen(tampon) + strlen(buffer_sortie) + 1) @@ -175,16 +176,11 @@ localisation_courante(struct_processus * int pipes_sortie[2]; int status; - logical1 drapeau_fin; - long i; long nombre_arguments; pid_t pid; - sigset_t oldset; - sigset_t set; - struct sigaction action_passee; unsigned char *tampon; @@ -216,7 +212,6 @@ localisation_courante(struct_processus * arguments[2] = NULL; nombre_arguments = 2; - drapeau_fin = d_faux; if (pipe(pipes_entree) != 0) { @@ -236,16 +231,10 @@ localisation_courante(struct_processus * return; } - sigfillset(&set); - pthread_sigmask(SIG_BLOCK, &set, &oldset); - verrouillage_threads_concurrents(s_etat_processus); pid = fork(); deverrouillage_threads_concurrents(s_etat_processus); - pthread_sigmask(SIG_SETMASK, &oldset, NULL); - sigpending(&set); - if (pid < 0) { if (close(pipes_entree[0]) != 0) @@ -407,11 +396,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 { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -419,34 +404,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 (sem_wait(&((*s_etat_processus).semaphore_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 (sem_wait(&((*s_etat_processus).semaphore_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))); @@ -463,11 +434,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 { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -477,17 +444,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 (sem_wait(&((*s_etat_processus).semaphore_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; @@ -503,28 +463,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 { (*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 (sem_wait(&((*s_etat_processus).semaphore_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) @@ -584,11 +533,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 { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -610,17 +555,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 (sem_wait(&((*s_etat_processus).semaphore_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)