--- rpl/src/instructions_w1.c 2010/03/08 14:28:20 1.8 +++ rpl/src/instructions_w1.c 2010/04/21 13:45:49 1.13 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.12 + RPL/2 (R) version 4.0.15 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -262,16 +262,28 @@ instruction_wait(struct_processus *s_eta do { +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif code_retour = nanosleep(&temporisation, &temporisation); erreur = errno; +# 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) { @@ -462,16 +474,16 @@ instruction_write(struct_processus *s_et if ((*(*(*s_etat_processus).l_base_pile).donnee).type == FCH) { if ((*((struct_fichier *) (*(*(*s_etat_processus).l_base_pile) - .donnee).objet)).acces == 'S') + .donnee).objet)).acces == 'D') { - if (empilement_pile_last(s_etat_processus, 2) == d_erreur) + if (empilement_pile_last(s_etat_processus, 3) == d_erreur) { return; } } else { - if (empilement_pile_last(s_etat_processus, 3) == d_erreur) + if (empilement_pile_last(s_etat_processus, 2) == d_erreur) { return; } @@ -686,11 +698,8 @@ instruction_write(struct_processus *s_et "(id, data) values (%lld, '%s')", (*((integer8 *) (*s_objet_argument_2).objet)), chaine_utf8) < 0) { - free(chaine_utf8); - liberation(s_etat_processus, s_objet_argument_3); - liberation(s_etat_processus, s_objet_argument_2); - liberation(s_etat_processus, s_objet_argument_1); - + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; return; } @@ -733,14 +742,13 @@ instruction_write(struct_processus *s_et return; } - // Récupération de la valeur de la clef + // Récupération de la position de la clef if (alsprintf(&commande, "select key from control " "where id = 1") < 0) { - liberation(s_etat_processus, s_objet_argument_2); - liberation(s_etat_processus, s_objet_argument_1); - + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; return; } @@ -748,22 +756,19 @@ instruction_write(struct_processus *s_et commande, strlen(commande), &ppStmt, &queue) != SQLITE_OK) { - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } if (sqlite3_step(ppStmt) != SQLITE_ROW) { - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } if (sqlite3_column_type(ppStmt, 0) != SQLITE_INTEGER) { - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } @@ -771,15 +776,13 @@ instruction_write(struct_processus *s_et if (sqlite3_step(ppStmt) != SQLITE_DONE) { - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } if (sqlite3_finalize(ppStmt) != SQLITE_OK) { - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } @@ -901,11 +904,8 @@ instruction_write(struct_processus *s_et if (alsprintf(&commande, "select id from key where key = " "'%s'", clef_utf8) < 0) { - free(clef_utf8); - - liberation(s_etat_processus, s_objet_argument_2); - liberation(s_etat_processus, s_objet_argument_1); - + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; return; } @@ -913,9 +913,7 @@ instruction_write(struct_processus *s_et commande, strlen(commande), &ppStmt, &queue) != SQLITE_OK) { - free(clef_utf8); - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } @@ -937,7 +935,6 @@ instruction_write(struct_processus *s_et if (sqlite3_finalize(ppStmt) != SQLITE_OK) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -948,11 +945,8 @@ instruction_write(struct_processus *s_et if (alsprintf(&commande, "insert into key " "(key) values ('%s')", clef_utf8) < 0) { - free(clef_utf8); - - liberation(s_etat_processus, s_objet_argument_2); - liberation(s_etat_processus, s_objet_argument_1); - + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; return; } @@ -961,7 +955,6 @@ instruction_write(struct_processus *s_et commande, strlen(commande), &ppStmt, &queue) != SQLITE_OK) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -969,7 +962,6 @@ instruction_write(struct_processus *s_et if (sqlite3_step(ppStmt) != SQLITE_DONE) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -977,7 +969,6 @@ instruction_write(struct_processus *s_et if (sqlite3_finalize(ppStmt) != SQLITE_OK) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -988,11 +979,8 @@ instruction_write(struct_processus *s_et if (alsprintf(&commande, "select id from key " "where key = '%s'", clef_utf8) < 0) { - free(clef_utf8); - - liberation(s_etat_processus, s_objet_argument_2); - liberation(s_etat_processus, s_objet_argument_1); - + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; return; } @@ -1001,7 +989,6 @@ instruction_write(struct_processus *s_et commande, strlen(commande), &ppStmt, &queue) != SQLITE_OK) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -1009,7 +996,6 @@ instruction_write(struct_processus *s_et if (sqlite3_step(ppStmt) != SQLITE_ROW) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -1020,7 +1006,6 @@ instruction_write(struct_processus *s_et default: { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -1029,8 +1014,7 @@ instruction_write(struct_processus *s_et if (sqlite3_column_type(ppStmt, 0) != SQLITE_INTEGER) { - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } @@ -1038,16 +1022,13 @@ instruction_write(struct_processus *s_et if (sqlite3_step(ppStmt) != SQLITE_DONE) { - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } if (sqlite3_finalize(ppStmt) != SQLITE_OK) { - free(clef_utf8); - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } @@ -1060,11 +1041,8 @@ instruction_write(struct_processus *s_et if (alsprintf(&commande, "update key set key = '%s' where " "id = %lld", clef_utf8, id) < 0) { - free(clef_utf8); - - liberation(s_etat_processus, s_objet_argument_2); - liberation(s_etat_processus, s_objet_argument_1); - + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; return; } @@ -1072,7 +1050,6 @@ instruction_write(struct_processus *s_et commande, strlen(commande), &ppStmt, &queue) != SQLITE_OK) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -1080,7 +1057,6 @@ instruction_write(struct_processus *s_et if (sqlite3_step(ppStmt) != SQLITE_DONE) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -1088,7 +1064,6 @@ instruction_write(struct_processus *s_et if (sqlite3_finalize(ppStmt) != SQLITE_OK) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -1102,11 +1077,8 @@ instruction_write(struct_processus *s_et if (alsprintf(&commande, "delete from data where " "key_id = %lld", id) < 0) { - free(clef_utf8); - - liberation(s_etat_processus, s_objet_argument_2); - liberation(s_etat_processus, s_objet_argument_1); - + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; return; } @@ -1114,25 +1086,19 @@ instruction_write(struct_processus *s_et commande, strlen(commande), &ppStmt, &queue) != SQLITE_OK) { - free(clef_utf8); - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } if (sqlite3_step(ppStmt) != SQLITE_DONE) { - free(clef_utf8); - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } if (sqlite3_finalize(ppStmt) != SQLITE_OK) { - free(clef_utf8); - (*s_etat_processus).erreur_systeme = - d_es_erreur_fichier; + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } @@ -1219,6 +1185,7 @@ instruction_write(struct_processus *s_et 'F', &longueur_effective, &recursivite)) == NULL) { free(clef_utf8); + liberation(s_etat_processus, s_element); liberation(s_etat_processus, s_format); liberation(s_etat_processus, s_objet_argument_2); @@ -1245,11 +1212,8 @@ instruction_write(struct_processus *s_et "(data, key_id, sequence) values " "('%s', %lld, %lld)", chaine_utf8, id, ordre) < 0) { - free(chaine_utf8); - free(clef_utf8); - liberation(s_etat_processus, s_objet_argument_2); - liberation(s_etat_processus, s_objet_argument_1); - + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; return; } @@ -1257,7 +1221,6 @@ instruction_write(struct_processus *s_et commande, strlen(commande), &ppStmt, &queue) != SQLITE_OK) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -1265,7 +1228,6 @@ instruction_write(struct_processus *s_et if (sqlite3_step(ppStmt) != SQLITE_DONE) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -1273,7 +1235,6 @@ instruction_write(struct_processus *s_et if (sqlite3_finalize(ppStmt) != SQLITE_OK) { - free(clef_utf8); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; @@ -1415,8 +1376,11 @@ instruction_write(struct_processus *s_et 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 { if (sigaction(SIGPIPE, ®istre, NULL) != 0) { @@ -1439,7 +1403,11 @@ instruction_write(struct_processus *s_et 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) { @@ -1459,7 +1427,11 @@ instruction_write(struct_processus *s_et 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) { @@ -1511,19 +1483,32 @@ instruction_write(struct_processus *s_et 108); adresse_unix.sun_path[108 - 1] = d_code_fin_chaine; +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif if (sendto((*((struct_socket *) (*s_objet_argument_1).objet)).socket, chaine, strlen(chaine), 0, (struct sockaddr *) &adresse_unix, sizeof(adresse_unix)) < 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) { @@ -1538,7 +1523,11 @@ instruction_write(struct_processus *s_et 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) { @@ -1565,20 +1554,33 @@ instruction_write(struct_processus *s_et adresse_ipv4.sin_port = htons(port); adresse_ipv4.sin_addr.s_addr = htonl(calcul_adresse); +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus) .semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus) .semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif if (sendto((*((struct_socket *) (*s_objet_argument_1).objet)).socket, chaine, strlen(chaine), 0, (struct sockaddr *) &adresse_ipv4, sizeof(adresse_ipv4)) < 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) { @@ -1593,8 +1595,13 @@ instruction_write(struct_processus *s_et 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) { @@ -1635,20 +1642,33 @@ instruction_write(struct_processus *s_et adresse_ipv6.sin6_addr.s6_addr[i] = adresse[i], i++); +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus) .semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus) .semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif if (sendto((*((struct_socket *) (*s_objet_argument_1).objet)).socket, chaine, strlen(chaine), 0, (struct sockaddr *) &adresse_ipv6, sizeof(adresse_ipv6)) < 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) { @@ -1663,8 +1683,13 @@ instruction_write(struct_processus *s_et 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) { @@ -1870,13 +1895,25 @@ instruction_wflock(struct_processus *s_e return; } +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif +# 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) { @@ -2185,15 +2222,27 @@ instruction_wfproc(struct_processus *s_e registre_instruction_valide; } +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif nanosleep(&attente, NULL); +# 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) { @@ -2444,15 +2493,27 @@ instruction_wfdata(struct_processus *s_e return; } +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif nanosleep(&attente, NULL); +# 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) { @@ -2636,11 +2697,19 @@ instruction_wfsock(struct_processus *s_e { drapeau = d_vrai; +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif if (((*((struct_socket *) (*s_objet_resultat).objet)).socket = accept((*((struct_socket *) (*s_objet_argument).objet)) @@ -2649,7 +2718,11 @@ instruction_wfsock(struct_processus *s_e { erreur = errno; +# 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) { @@ -2681,7 +2754,11 @@ instruction_wfsock(struct_processus *s_e } else { +# 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) { @@ -2718,11 +2795,19 @@ instruction_wfsock(struct_processus *s_e { drapeau = d_vrai; +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif if (((*((struct_socket *) (*s_objet_resultat).objet)).socket = accept((*((struct_socket *) (*s_objet_argument).objet)) @@ -2731,7 +2816,11 @@ instruction_wfsock(struct_processus *s_e { erreur = errno; +# 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) { @@ -2763,7 +2852,11 @@ instruction_wfsock(struct_processus *s_e } else { +# 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) { @@ -2808,11 +2901,19 @@ instruction_wfsock(struct_processus *s_e { drapeau = d_vrai; +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif if (((*((struct_socket *) (*s_objet_resultat).objet)).socket = accept((*((struct_socket *) (*s_objet_argument).objet)) @@ -2820,7 +2921,11 @@ instruction_wfsock(struct_processus *s_e { erreur = errno; +# 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) { @@ -2852,7 +2957,11 @@ instruction_wfsock(struct_processus *s_e } else { +# 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) { @@ -3138,15 +3247,27 @@ instruction_wfpoke(struct_processus *s_e do { +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif nanosleep(&attente, NULL); +# 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) { @@ -3288,16 +3409,28 @@ instruction_wfack(struct_processus *s_et return; } +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } +# endif nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); +# 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) {