--- rpl/src/instructions_s8.c 2011/09/20 09:51:43 1.37 +++ rpl/src/instructions_s8.c 2012/12/18 13:19:38 1.51 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.3 - Copyright (C) 1989-2011 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.12 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -247,7 +247,11 @@ instruction_send(struct_processus *s_eta attente.tv_sec = 0; attente.tv_nsec = GRANULARITE_us * 1000; - 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; @@ -257,7 +261,11 @@ instruction_send(struct_processus *s_eta (*s_etat_processus).pipe_nombre_objets_attente, &pid, sizeof(pid))) != sizeof(pid)) { - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -280,8 +288,11 @@ instruction_send(struct_processus *s_eta nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); - 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; @@ -299,7 +310,11 @@ instruction_send(struct_processus *s_eta (*s_etat_processus).pipe_nombre_objets_attente, &pid, sizeof(pid))) != sizeof(pid)) { - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -322,7 +337,11 @@ instruction_send(struct_processus *s_eta nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); - 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; @@ -331,7 +350,11 @@ instruction_send(struct_processus *s_eta scrutation_interruptions(s_etat_processus); } - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -352,12 +375,16 @@ instruction_send(struct_processus *s_eta } } - tid = -3; + tid = (pthread_t) -3; attente.tv_sec = 0; attente.tv_nsec = GRANULARITE_us * 1000; - 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; @@ -367,7 +394,11 @@ instruction_send(struct_processus *s_eta (*s_etat_processus).pipe_nombre_objets_attente, &tid, sizeof(tid))) != sizeof(tid)) { - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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; @@ -387,7 +418,11 @@ instruction_send(struct_processus *s_eta nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); - 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; @@ -405,7 +440,11 @@ instruction_send(struct_processus *s_eta (*s_etat_processus).pipe_nombre_objets_attente, &tid, sizeof(tid))) != sizeof(tid)) { - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -428,7 +467,11 @@ instruction_send(struct_processus *s_eta nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); - 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; @@ -437,7 +480,11 @@ instruction_send(struct_processus *s_eta scrutation_interruptions(s_etat_processus); } - 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; @@ -449,7 +496,11 @@ instruction_send(struct_processus *s_eta attente.tv_sec = 0; attente.tv_nsec = GRANULARITE_us * 1000; - 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; @@ -458,7 +509,11 @@ instruction_send(struct_processus *s_eta while(read_atomic(s_etat_processus, (*s_etat_processus).pipe_acquittement, &tampon, sizeof(unsigned char)) != sizeof(unsigned char)) { - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -470,7 +525,11 @@ instruction_send(struct_processus *s_eta nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); - 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; @@ -479,7 +538,11 @@ instruction_send(struct_processus *s_eta scrutation_interruptions(s_etat_processus); } - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -498,7 +561,11 @@ instruction_send(struct_processus *s_eta attente.tv_sec = 0; attente.tv_nsec = GRANULARITE_us * 1000; - 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; @@ -508,7 +575,11 @@ instruction_send(struct_processus *s_eta (*s_etat_processus).pipe_nombre_interruptions_attente, &pid, sizeof(pid))) != sizeof(pid)) { - 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; @@ -528,14 +599,22 @@ instruction_send(struct_processus *s_eta nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); - 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; } } - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -548,12 +627,16 @@ instruction_send(struct_processus *s_eta } else { - tid = -1; + tid = (pthread_t) -1; attente.tv_sec = 0; attente.tv_nsec = GRANULARITE_us * 1000; - 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; @@ -563,7 +646,11 @@ instruction_send(struct_processus *s_eta (*s_etat_processus).pipe_nombre_interruptions_attente, &tid, sizeof(tid))) != sizeof(tid)) { - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -586,7 +673,11 @@ instruction_send(struct_processus *s_eta nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); - 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; @@ -595,7 +686,11 @@ instruction_send(struct_processus *s_eta scrutation_interruptions(s_etat_processus); } - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -607,7 +702,11 @@ instruction_send(struct_processus *s_eta // ecriture_pipe() ne peut être interrompu par un signal. - 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; @@ -616,7 +715,11 @@ instruction_send(struct_processus *s_eta if (ecriture_pipe(s_etat_processus, (*s_etat_processus).pipe_donnees, s_objet) == d_erreur) { - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -634,7 +737,11 @@ instruction_send(struct_processus *s_eta return; } - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# 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) { @@ -680,25 +787,17 @@ instruction_sqlquery(struct_processus *s { # define d_LONGUEUR 1024 +# if defined(MYSQL_SUPPORT) || defined(POSTGRESQL_SUPPORT) logical1 connexion_permanente; - logical1 presence_resultat; +# endif struct_objet *s_copie_1; struct_objet *s_objet_1; struct_objet *s_copie_2; struct_objet *s_objet_2; - struct_objet *s_objet_resultat; - - struct_liste_chainee *l_element_courant; - struct_liste_chainee *l_element_courant_ligne; unsigned char *tampon; - unsigned int i; - unsigned int j; - unsigned int nombre_colonnes; - unsigned int nombre_lignes; - (*s_etat_processus).erreur_execution = d_ex; if ((*s_etat_processus).affichage_arguments == 'Y') @@ -773,7 +872,9 @@ instruction_sqlquery(struct_processus *s if ((*s_objet_1).type == LST) { +# if defined(MYSQL_SUPPORT) || defined(POSTGRESQL_SUPPORT) connexion_permanente = d_faux; +# endif s_copie_1 = s_objet_1; @@ -784,6 +885,16 @@ instruction_sqlquery(struct_processus *s return; } + if ((*s_etat_processus).erreur_execution == + d_ex_instruction_indisponible) + { + liberation(s_etat_processus, s_objet_1); + liberation(s_etat_processus, s_objet_2); + liberation(s_etat_processus, s_copie_1); + + return; + } + liberation(s_etat_processus, s_copie_1); } else @@ -803,7 +914,9 @@ instruction_sqlquery(struct_processus *s } } +# if defined(MYSQL_SUPPORT) || defined(POSTGRESQL_SUPPORT) connexion_permanente = d_vrai; +# endif } if (((*s_objet_1).type == SQL) && ((*s_objet_2).type == CHN)) @@ -845,8 +958,18 @@ instruction_sqlquery(struct_processus *s { # ifdef MYSQL_SUPPORT - MYSQL_RES *resultat_mysql; - MYSQL_ROW ligne; + unsigned int i; + unsigned int nombre_colonnes; + + logical1 presence_resultat; + + MYSQL_RES *resultat_mysql; + MYSQL_ROW ligne; + + struct_objet *s_objet_resultat; + + struct_liste_chainee *l_element_courant; + struct_liste_chainee *l_element_courant_ligne; if (mysql_real_query((*((struct_connecteur_sql *) (*s_objet_1) .objet)).descripteur.mysql, (unsigned char *) (*s_objet_2) @@ -1048,7 +1171,19 @@ instruction_sqlquery(struct_processus *s { # ifdef POSTGRESQL_SUPPORT - PGresult *resultat_postgresql; + unsigned int i; + unsigned int j; + unsigned int nombre_colonnes; + unsigned int nombre_lignes; + + logical1 presence_resultat; + + PGresult *resultat_postgresql; + + struct_objet *s_objet_resultat; + + struct_liste_chainee *l_element_courant; + struct_liste_chainee *l_element_courant_ligne; if (PQstatus((*((struct_connecteur_sql *) (*s_objet_1).objet)) .descripteur.postgresql) != CONNECTION_OK)