--- rpl/src/transliteration.c 2010/07/14 14:19:40 1.13 +++ rpl/src/transliteration.c 2010/08/13 21:00:37 1.17 @@ -20,8 +20,8 @@ */ -#include "rpl.conv.h" -#include "tex.conv.h" +#include "rpl-conv.h" +#include "tex-conv.h" #include @@ -158,8 +158,8 @@ reencodage(struct_processus *s_etat_proc ================================================================================ Entrées : -------------------------------------------------------------------------------- - Sorties : -------------------------------------------------------------------------------- + iorties : Effets de bord : néant ================================================================================ */ @@ -241,6 +241,17 @@ localisation_courante(struct_processus * verrouillage_threads_concurrents(s_etat_processus); pid = fork(); + +# ifdef OS2 + if (pid == 0) + { + sem_init(&semaphore_liste_threads, 0, 1); + sem_init(&semaphore_gestionnaires_signaux, 0, 0); + sem_init(&semaphore_gestionnaires_signaux_atomique, 0, 1); + sem_init(&((*s_etat_processus).semaphore_fork), 0, 0); + } +# endif + deverrouillage_threads_concurrents(s_etat_processus); pthread_sigmask(SIG_SETMASK, &oldset, NULL); @@ -545,7 +556,23 @@ localisation_courante(struct_processus * return; } - (*s_etat_processus).localisation = tampon; + if (strlen(tampon) > 0) + { + (*s_etat_processus).localisation = tampon; + } + else + { + free(tampon); + + if (((*s_etat_processus).localisation = malloc((strlen(d_locale) + + 1) * sizeof(unsigned char))) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } + + strcpy((*s_etat_processus).localisation, d_locale); + } if (sigaction(SIGINT, &action_passee, NULL) != 0) { @@ -634,6 +661,14 @@ transliterated_fprintf(struct_processus va_start(arguments, format); +# ifdef OS2 + unsigned char *ptr_e;; + unsigned char *ptr_l;; + unsigned char *tampon3; + + unsigned long i; +# endif + if (valsprintf(&tampon, format, arguments) < 0) { va_end(arguments); @@ -664,6 +699,53 @@ transliterated_fprintf(struct_processus tampon2 = tampon; } +# ifdef OS2 + i = 0; + ptr_l = tampon2; + + while((*ptr_l) != d_code_fin_chaine) + { + if ((*ptr_l) == '\n') + { + i++; + } + + ptr_l++; + } + + if ((tampon3 = malloc((strlen(tampon2) + i + 1) * sizeof(unsigned char))) + == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return(NULL); + } + + ptr_e = tampon3; + ptr_l = tampon2; + + while((*ptr_l) != d_code_fin_chaine) + { + (*ptr_e) = (*ptr_l); + + if ((*ptr_l) == '\n') + { + (*(++ptr_e)) = '\r'; + ptr_e++; + ptr_l++; + } + else + { + ptr_e++; + ptr_l++; + } + } + + (*ptr_e) = d_code_fin_chaine; + + free(tampon2); + tampon2 = tampon3; +# endif + # ifdef SunOS while((ios = fprintf(flux, "%s", tampon2)) < 0) {