--- rpl/src/transliteration.c 2015/04/16 19:39:10 1.82 +++ rpl/src/transliteration.c 2024/01/09 07:33:56 1.107 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.21 - Copyright (C) 1989-2015 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.35 + Copyright (C) 1989-2024 Dr. BERTRAND Joël This file is part of RPL/2. @@ -131,7 +131,15 @@ reencodage(struct_processus *s_etat_proc longueur_sortie = d_LONGUEUR; pointeur = buffer_sortie; - if ((ios = iconv(transcodage, (char **) &buffer_entree, + if ((ios = iconv(transcodage, +# if defined(Linux) + (char **) +# elif defined(NetBSD) + (const char **) +# else + (char **) +# endif + &buffer_entree, &longueur_entree, (char **) &pointeur, &longueur_sortie)) == (size_t) -1) { @@ -291,7 +299,6 @@ localisation_courante(struct_processus * verrouillage_threads_concurrents(s_etat_processus); pid = fork(); - deverrouillage_threads_concurrents(s_etat_processus); if (pid < 0) { @@ -419,6 +426,8 @@ localisation_courante(struct_processus * } else { + deverrouillage_threads_concurrents(s_etat_processus); + if (close(pipes_entree[0]) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -464,23 +473,27 @@ localisation_courante(struct_processus * return; } - if (waitpid(pid, &status, 0) == -1) + while(waitpid(pid, &status, 0) == -1) { -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) -# else - while(sem_wait((*s_etat_processus).semaphore_fork) != 0) -# endif + if (errno != EINTR) { - if (errno != EINTR) +# ifndef SEMAPHORES_NOMMES + while(sem_wait(&((*s_etat_processus).semaphore_fork)) + != 0) +# else + while(sem_wait((*s_etat_processus).semaphore_fork) != 0) +# endif { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + 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 @@ -706,7 +719,6 @@ transliterated_fprintf(struct_processus if (s_etat_processus != NULL) { -uprintf("%s->%s\n", d_locale, (*s_etat_processus).localisation); if ((tampon2 = transliteration(s_etat_processus, tampon, d_locale, (*s_etat_processus).localisation)) == NULL) { @@ -878,8 +890,8 @@ readline_wrapper(struct_processus *s_eta return(NULL); } - if ((rpl_chaine = rpl_malloc(s_etat_processus, (strlen(sys_chaine) + 1) * - sizeof(unsigned char *))) == NULL) + if ((rpl_chaine = malloc((strlen(sys_chaine) + 1) * + sizeof(unsigned char))) == NULL) { sys_free(sys_chaine); (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;