--- rpl/src/transliteration.c 2010/04/07 13:45:11 1.8 +++ rpl/src/transliteration.c 2010/08/10 18:02:43 1.16 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.14 + RPL/2 (R) version 4.0.18 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,8 +20,8 @@ */ -#include "rpl.conv.h" -#include "tex.conv.h" +#include "rpl-conv.h" +#include "tex-conv.h" #include @@ -50,6 +50,14 @@ transliteration(struct_processus *s_etat unsigned char *codage_sortie_transliteral; unsigned char *tampon; +# ifdef OS2 + unsigned char *ptr_e;; + unsigned char *ptr_l;; + unsigned char *tampon2; + + unsigned long i; +# endif + if ((codage_sortie_transliteral = malloc((strlen(codage_sortie) + strlen("//TRANSLIT") + 1) * sizeof(unsigned char))) == NULL) { @@ -63,6 +71,53 @@ transliteration(struct_processus *s_etat codage_entree, codage_sortie_transliteral); free(codage_sortie_transliteral); +# ifdef OS2 + + i = 0; + ptr_l = tampon; + + while((*ptr_l) != d_code_fin_chaine) + { + if ((*ptr_l) == '\n') + { + i++; + } + + ptr_l++; + } + + if ((tampon2 = malloc((strlen(tampon) + i + 1) * sizeof(unsigned char))) + == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return(NULL); + } + + ptr_e = tampon2; + ptr_l = tampon; + + 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++; + } + } + + free(tampon); + tampon = tampon2; + +# endif + return(tampon); } @@ -407,8 +462,11 @@ localisation_courante(struct_processus * * Récupération de la valeur de retour du processus détaché */ - if (sem_post(&((*s_etat_processus).semaphore_fork)) - != 0) +# 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; @@ -416,7 +474,11 @@ 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 (errno != EINTR) { @@ -429,7 +491,11 @@ localisation_courante(struct_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 (errno != EINTR) { @@ -450,7 +516,11 @@ 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; @@ -460,7 +530,11 @@ 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 (errno != EINTR) { @@ -482,14 +556,22 @@ 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 (errno != EINTR) { @@ -539,7 +621,11 @@ 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; @@ -549,7 +635,11 @@ localisation_courante(struct_processus * { // Le processus fils renvoie une erreur. +# ifndef SEMAPHORES_NOMMES while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) +# else + while(sem_wait((*s_etat_processus).semaphore_fork) == -1) +# endif { if (errno != EINTR) { @@ -562,7 +652,11 @@ localisation_courante(struct_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 (errno != EINTR) {