--- rpl/src/instructions_r6.c 2010/03/09 10:18:48 1.6 +++ rpl/src/instructions_r6.c 2011/09/14 17:55:59 1.31 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.13 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.3 + Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -265,7 +265,7 @@ instruction_recv(struct_processus *s_eta } } - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) + if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -275,13 +275,10 @@ instruction_recv(struct_processus *s_eta (*(*((struct_processus_fils *) (*s_objet_argument).objet)) .thread).pipe_objets[0])) == NULL) { - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) + 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 (registre_stop == 0) @@ -305,13 +302,10 @@ instruction_recv(struct_processus *s_eta return; } - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) + 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 (pthread_mutex_lock(&((*(*((struct_processus_fils *) @@ -359,7 +353,7 @@ instruction_recv(struct_processus *s_eta return; } - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) + if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -377,13 +371,10 @@ instruction_recv(struct_processus *s_eta } } - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) + 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 ((*s_etat_processus).profilage == d_vrai) @@ -1190,6 +1181,7 @@ instruction_rdgn(struct_processus *s_eta struct_objet *s_objet_argument; struct_objet *s_objet_resultat; + unsigned char *pointeur; unsigned char *requete; unsigned char **types_generateurs; @@ -1247,6 +1239,17 @@ instruction_rdgn(struct_processus *s_eta } strcpy(types_generateurs[i], (**type_courant).name); + pointeur = types_generateurs[i]; + + while((*pointeur) != d_code_fin_chaine) + { + if ((*pointeur) == '-') + { + (*pointeur) = '_'; + } + + pointeur++; + } } // Tri des types de générateurs (tri shaker)