version 1.4, 2010/02/10 10:14:24
|
version 1.73, 2019/01/01 09:03:09
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.0.11 |
RPL/2 (R) version 4.1.30 |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
Copyright (C) 1989-2019 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 20
|
Line 20
|
*/ |
*/ |
|
|
|
|
#include "rpl.conv.h" |
#include "rpl-conv.h" |
|
|
|
|
/* |
/* |
Line 109 instruction_recv(struct_processus *s_eta
|
Line 109 instruction_recv(struct_processus *s_eta
|
* de la structure présente dans la pile opérationnelle. |
* de la structure présente dans la pile opérationnelle. |
*/ |
*/ |
|
|
if (pthread_mutex_lock(&((*s_etat_processus).mutex)) != 0) |
if (pthread_mutex_lock(&((*s_etat_processus).mutex_pile_processus)) |
|
!= 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme_processus_fils = |
(*s_etat_processus).erreur_systeme_processus_fils = |
d_es_processus; |
d_es_processus; |
Line 207 instruction_recv(struct_processus *s_eta
|
Line 208 instruction_recv(struct_processus *s_eta
|
|
|
if (nombre_donnees == -1) |
if (nombre_donnees == -1) |
{ |
{ |
if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0) |
if (pthread_mutex_unlock(&((*s_etat_processus) |
|
.mutex_pile_processus)) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme_processus_fils = |
(*s_etat_processus).erreur_systeme_processus_fils = |
d_es_processus; |
d_es_processus; |
Line 223 instruction_recv(struct_processus *s_eta
|
Line 225 instruction_recv(struct_processus *s_eta
|
* On empile une valeur nulle |
* On empile une valeur nulle |
*/ |
*/ |
|
|
if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0) |
if (pthread_mutex_unlock(&((*s_etat_processus) |
|
.mutex_pile_processus)) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme_processus_fils = |
(*s_etat_processus).erreur_systeme_processus_fils = |
d_es_processus; |
d_es_processus; |
Line 265 instruction_recv(struct_processus *s_eta
|
Line 268 instruction_recv(struct_processus *s_eta
|
} |
} |
} |
} |
|
|
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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 275 instruction_recv(struct_processus *s_eta
|
Line 282 instruction_recv(struct_processus *s_eta
|
(*(*((struct_processus_fils *) (*s_objet_argument).objet)) |
(*(*((struct_processus_fils *) (*s_objet_argument).objet)) |
.thread).pipe_objets[0])) == NULL) |
.thread).pipe_objets[0])) == NULL) |
{ |
{ |
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -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) |
{ |
{ |
Line 301 instruction_recv(struct_processus *s_eta
|
Line 312 instruction_recv(struct_processus *s_eta
|
profilage(s_etat_processus, NULL); |
profilage(s_etat_processus, NULL); |
} |
} |
|
|
pthread_mutex_unlock(&((*s_etat_processus).mutex)); |
pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus)); |
return; |
return; |
} |
} |
|
|
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -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) |
{ |
{ |
Line 348 instruction_recv(struct_processus *s_eta
|
Line 363 instruction_recv(struct_processus *s_eta
|
= registre_stop; |
= registre_stop; |
} |
} |
|
|
pthread_mutex_unlock(&((*s_etat_processus).mutex)); |
pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus)); |
|
|
if ((*s_etat_processus).profilage == d_vrai) |
if ((*s_etat_processus).profilage == d_vrai) |
{ |
{ |
Line 359 instruction_recv(struct_processus *s_eta
|
Line 374 instruction_recv(struct_processus *s_eta
|
return; |
return; |
} |
} |
|
|
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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 377 instruction_recv(struct_processus *s_eta
|
Line 396 instruction_recv(struct_processus *s_eta
|
} |
} |
} |
} |
|
|
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -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) |
{ |
{ |
Line 404 instruction_recv(struct_processus *s_eta
|
Line 427 instruction_recv(struct_processus *s_eta
|
|
|
if (sigaction(SIGPIPE, ®istre, NULL) != 0) |
if (sigaction(SIGPIPE, ®istre, NULL) != 0) |
{ |
{ |
pthread_mutex_unlock(&((*s_etat_processus).mutex)); |
pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus)); |
|
|
(*s_etat_processus).erreur_systeme = d_es_signal; |
(*s_etat_processus).erreur_systeme = d_es_signal; |
return; |
return; |
} |
} |
|
|
if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0) |
if (pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus)) |
|
!= 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme_processus_fils = |
(*s_etat_processus).erreur_systeme_processus_fils = |
d_es_processus; |
d_es_processus; |
Line 472 instruction_row_fleche(struct_processus
|
Line 496 instruction_row_fleche(struct_processus
|
struct_objet *s_objet; |
struct_objet *s_objet; |
struct_objet *s_objet_elementaire; |
struct_objet *s_objet_elementaire; |
|
|
unsigned long i; |
integer8 i; |
unsigned long j; |
integer8 j; |
|
|
(*s_etat_processus).erreur_execution = d_ex; |
(*s_etat_processus).erreur_execution = d_ex; |
|
|
Line 545 instruction_row_fleche(struct_processus
|
Line 569 instruction_row_fleche(struct_processus
|
} |
} |
|
|
if ((((integer8 **) (*((struct_matrice *) (*s_objet_elementaire) |
if ((((integer8 **) (*((struct_matrice *) (*s_objet_elementaire) |
.objet)).tableau)[0] = malloc((*((struct_matrice *) |
.objet)).tableau)[0] = malloc(((size_t) |
(*s_objet_elementaire).objet)).nombre_colonnes * |
(*((struct_matrice *) (*s_objet_elementaire).objet)) |
sizeof(integer8))) == NULL) |
.nombre_colonnes) * sizeof(integer8))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = |
(*s_etat_processus).erreur_systeme = |
d_es_allocation_memoire; |
d_es_allocation_memoire; |
Line 597 instruction_row_fleche(struct_processus
|
Line 621 instruction_row_fleche(struct_processus
|
} |
} |
|
|
if ((((real8 **) (*((struct_matrice *) (*s_objet_elementaire) |
if ((((real8 **) (*((struct_matrice *) (*s_objet_elementaire) |
.objet)).tableau)[0] = malloc((*((struct_matrice *) |
.objet)).tableau)[0] = malloc(((size_t) |
(*s_objet_elementaire).objet)).nombre_colonnes * |
(*((struct_matrice *) (*s_objet_elementaire).objet)) |
sizeof(real8))) == NULL) |
.nombre_colonnes) * sizeof(real8))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = |
(*s_etat_processus).erreur_systeme = |
d_es_allocation_memoire; |
d_es_allocation_memoire; |
Line 649 instruction_row_fleche(struct_processus
|
Line 673 instruction_row_fleche(struct_processus
|
} |
} |
|
|
if ((((complex16 **) (*((struct_matrice *) (*s_objet_elementaire) |
if ((((complex16 **) (*((struct_matrice *) (*s_objet_elementaire) |
.objet)).tableau)[0] = malloc((*((struct_matrice *) |
.objet)).tableau)[0] = malloc(((size_t) |
(*s_objet_elementaire).objet)).nombre_colonnes * |
(*((struct_matrice *) (*s_objet_elementaire).objet)) |
sizeof(complex16))) == NULL) |
.nombre_colonnes) * sizeof(complex16))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = |
(*s_etat_processus).erreur_systeme = |
d_es_allocation_memoire; |
d_es_allocation_memoire; |
Line 773 instruction_rdate(struct_processus *s_et
|
Line 797 instruction_rdate(struct_processus *s_et
|
if ((*s_objet_argument).type == INT) |
if ((*s_objet_argument).type == INT) |
{ |
{ |
gettimeofday(&horodatage, NULL); |
gettimeofday(&horodatage, NULL); |
horodatage.tv_sec += (*((integer8 *) (*s_objet_argument).objet)); |
horodatage.tv_sec += (time_t) (*((integer8 *) |
|
(*s_objet_argument).objet)); |
|
|
if (horodatage.tv_sec < 0) |
if (horodatage.tv_sec < 0) |
{ |
{ |
Line 1185 instruction_rdgn(struct_processus *s_eta
|
Line 1210 instruction_rdgn(struct_processus *s_eta
|
long dernier; |
long dernier; |
long i; |
long i; |
long j; |
long j; |
|
long nombre_types; |
long premier; |
long premier; |
|
|
struct_objet *s_objet_argument; |
struct_objet *s_objet_argument; |
struct_objet *s_objet_resultat; |
struct_objet *s_objet_resultat; |
|
|
|
unsigned char *pointeur; |
unsigned char *requete; |
unsigned char *requete; |
unsigned char **types_generateurs; |
unsigned char **types_generateurs; |
|
|
unsigned long nombre_types; |
|
|
|
(*s_etat_processus).erreur_execution = d_ex; |
(*s_etat_processus).erreur_execution = d_ex; |
|
|
types = gsl_rng_types_setup(); |
types = gsl_rng_types_setup(); |
Line 1229 instruction_rdgn(struct_processus *s_eta
|
Line 1254 instruction_rdgn(struct_processus *s_eta
|
for(nombre_types = 0, type_courant = types; |
for(nombre_types = 0, type_courant = types; |
(*type_courant) != NULL; type_courant++, nombre_types++); |
(*type_courant) != NULL; type_courant++, nombre_types++); |
|
|
if ((types_generateurs = malloc(nombre_types * sizeof(unsigned char *))) |
if ((types_generateurs = malloc(((size_t) nombre_types) * |
== NULL) |
sizeof(unsigned char *))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
return; |
return; |
Line 1247 instruction_rdgn(struct_processus *s_eta
|
Line 1272 instruction_rdgn(struct_processus *s_eta
|
} |
} |
|
|
strcpy(types_generateurs[i], (**type_courant).name); |
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) |
// Tri des types de générateurs (tri shaker) |
Line 1284 instruction_rdgn(struct_processus *s_eta
|
Line 1320 instruction_rdgn(struct_processus *s_eta
|
premier = j; |
premier = j; |
} |
} |
|
|
for(i = 0; i < (long) nombre_types; i++) |
for(i = 0; i < nombre_types; i++) |
{ |
{ |
printf(" - %s\n", types_generateurs[i]); |
printf(" - %s\n", types_generateurs[i]); |
free(types_generateurs[i]); |
free(types_generateurs[i]); |
Line 1316 instruction_rdgn(struct_processus *s_eta
|
Line 1352 instruction_rdgn(struct_processus *s_eta
|
|
|
if ((*s_objet_argument).type == CHN) |
if ((*s_objet_argument).type == CHN) |
{ |
{ |
if ((requete = conversion_majuscule((unsigned char *) |
if ((requete = conversion_majuscule(s_etat_processus, (unsigned char *) |
(*s_objet_argument).objet)) == NULL) |
(*s_objet_argument).objet)) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
Line 1352 instruction_rdgn(struct_processus *s_eta
|
Line 1388 instruction_rdgn(struct_processus *s_eta
|
else |
else |
{ |
{ |
if (((*s_objet_resultat).objet = conversion_majuscule( |
if (((*s_objet_resultat).objet = conversion_majuscule( |
(unsigned char *) gsl_rng_name( |
s_etat_processus, (unsigned char *) gsl_rng_name( |
(*s_etat_processus).generateur_aleatoire))) == NULL) |
(*s_etat_processus).generateur_aleatoire))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = |
(*s_etat_processus).erreur_systeme = |
Line 1606 instruction_recode(struct_processus *s_e
|
Line 1642 instruction_recode(struct_processus *s_e
|
((*s_objet_argument_2).type == CHN) && |
((*s_objet_argument_2).type == CHN) && |
((*s_objet_argument_3).type == CHN)) |
((*s_objet_argument_3).type == CHN)) |
{ |
{ |
if ((encodage_source = conversion_majuscule((unsigned char *) |
if ((encodage_source = conversion_majuscule(s_etat_processus, |
(*s_objet_argument_2).objet)) == NULL) |
(unsigned char *) (*s_objet_argument_2).objet)) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
return; |
return; |
} |
} |
|
|
if ((encodage_destination = conversion_majuscule((unsigned char *) |
if ((encodage_destination = conversion_majuscule(s_etat_processus, |
(*s_objet_argument_1).objet)) == NULL) |
(unsigned char *) (*s_objet_argument_1).objet)) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
return; |
return; |
Line 1682 instruction_recode(struct_processus *s_e
|
Line 1718 instruction_recode(struct_processus *s_e
|
void |
void |
instruction_repl(struct_processus *s_etat_processus) |
instruction_repl(struct_processus *s_etat_processus) |
{ |
{ |
|
integer8 difference; |
|
integer8 difference_ecriture; |
|
integer8 difference_lecture; |
|
integer8 nombre_occurrences; |
integer8 position; |
integer8 position; |
|
|
long difference; |
|
long difference_ecriture; |
|
long difference_lecture; |
|
long nombre_occurrences; |
|
|
|
struct_liste_chainee *l_element_a_supprimer; |
struct_liste_chainee *l_element_a_supprimer; |
struct_liste_chainee *l_element_courant; |
struct_liste_chainee *l_element_courant; |
struct_liste_chainee *l_element_courant_2; |
struct_liste_chainee *l_element_courant_2; |
Line 1807 instruction_repl(struct_processus *s_eta
|
Line 1842 instruction_repl(struct_processus *s_eta
|
// Différence est positive si la nouvelle chaîne est plus longue |
// Différence est positive si la nouvelle chaîne est plus longue |
// que la chaîne originelle. |
// que la chaîne originelle. |
|
|
difference = strlen((unsigned char *) (*s_objet_argument_1).objet) |
difference = ((integer8) strlen((unsigned char *) (*s_objet_argument_1) |
- strlen((unsigned char *) (*s_objet_argument_2).objet); |
.objet)) - ((integer8) strlen((unsigned char *) |
|
(*s_objet_argument_2).objet)); |
|
|
if ((s_objet_resultat = allocation(s_etat_processus, CHN)) == NULL) |
if ((s_objet_resultat = allocation(s_etat_processus, CHN)) == NULL) |
{ |
{ |
Line 1817 instruction_repl(struct_processus *s_eta
|
Line 1853 instruction_repl(struct_processus *s_eta
|
} |
} |
|
|
if (((*s_objet_resultat).objet = malloc((strlen((unsigned char *) |
if (((*s_objet_resultat).objet = malloc((strlen((unsigned char *) |
(*s_objet_argument_3).objet) + (nombre_occurrences * |
(*s_objet_argument_3).objet) + ((size_t) (nombre_occurrences * |
difference) + 1) * sizeof(unsigned char))) == NULL) |
difference)) + 1) * sizeof(unsigned char))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
return; |
return; |
Line 1826 instruction_repl(struct_processus *s_eta
|
Line 1862 instruction_repl(struct_processus *s_eta
|
|
|
pointeur_lecture = (unsigned char *) (*s_objet_argument_3).objet; |
pointeur_lecture = (unsigned char *) (*s_objet_argument_3).objet; |
pointeur_ecriture = (unsigned char *) (*s_objet_resultat).objet; |
pointeur_ecriture = (unsigned char *) (*s_objet_resultat).objet; |
difference_lecture = strlen((unsigned char *) |
difference_lecture = (integer8) strlen((unsigned char *) |
(*s_objet_argument_2).objet); |
(*s_objet_argument_2).objet); |
difference_ecriture = strlen((unsigned char *) |
difference_ecriture = (integer8) strlen((unsigned char *) |
(*s_objet_argument_1).objet); |
(*s_objet_argument_1).objet); |
|
|
for(;;) |
for(;;) |
Line 1846 instruction_repl(struct_processus *s_eta
|
Line 1882 instruction_repl(struct_processus *s_eta
|
} |
} |
|
|
strncpy(ancien_pointeur_ecriture, ancien_pointeur_lecture, |
strncpy(ancien_pointeur_ecriture, ancien_pointeur_lecture, |
pointeur_lecture - ancien_pointeur_lecture); |
(size_t) (pointeur_lecture - ancien_pointeur_lecture)); |
strcpy(ancien_pointeur_ecriture + |
strcpy(ancien_pointeur_ecriture + |
(pointeur_lecture - ancien_pointeur_lecture), |
(pointeur_lecture - ancien_pointeur_lecture), |
(unsigned char *) (*s_objet_argument_1).objet); |
(unsigned char *) (*s_objet_argument_1).objet); |