--- rpl/src/instructions_s10.c 2012/05/20 17:28:26 1.58 +++ rpl/src/instructions_s10.c 2013/03/21 14:39:10 1.71 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.8 - Copyright (C) 1989-2012 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.13 + Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -130,26 +130,12 @@ instruction_spawn(struct_processus *s_et { if ((*(*s_etat_processus).pointeur_variable_courante).objet == NULL) { - if (pthread_mutex_lock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - if (recherche_variable_partagee(s_etat_processus, (*(*s_etat_processus).pointeur_variable_courante).nom, (*(*s_etat_processus).pointeur_variable_courante) .variable_partagee, (*(*s_etat_processus) - .pointeur_variable_courante).origine) == d_faux) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - liberation(s_etat_processus, s_objet); (*s_etat_processus).erreur_systeme = d_es; @@ -158,16 +144,14 @@ instruction_spawn(struct_processus *s_et return; } - if (((*(*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet) - .type != RPN) && ((*(*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet).type != ADR)) + if (((*(*(*s_etat_processus) + .pointeur_variable_partagee_courante).objet).type + != RPN) && ((*(*(*s_etat_processus) + .pointeur_variable_partagee_courante).objet).type + != ADR)) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -182,12 +166,11 @@ instruction_spawn(struct_processus *s_et if ((s_copie = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) + == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -202,7 +185,7 @@ instruction_spawn(struct_processus *s_et variable_partagee = d_vrai; if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -674,6 +657,7 @@ instruction_sqlconnect(struct_processus printf(" { \"mysql\" \"server\" \"database\" " "\"user\" \"password\" } SQLCONNECT\n"); + printf(" { \"sqlite\" \"file\" } SQLCONNECT\n"); printf(" { \"postgresql:iso-8859-1\" \"server\" " "\"database\" \"user\" \"password\" port }\n"); printf(" SQLCONNECT\n"); @@ -906,6 +890,21 @@ instruction_sqldisconnect(struct_process drapeau = d_faux; # endif } + else if (strcmp((*((struct_connecteur_sql *) (*s_objet).objet)) + .type, "SQLITE") == 0) + { + if ((*((struct_connecteur_sql *) (*(*l_element_courant) + .donnee).objet)).descripteur.sqlite == + (*((struct_connecteur_sql *) (*s_objet).objet)) + .descripteur.sqlite) + { + drapeau = d_vrai; + } + else + { + drapeau = d_faux; + } + } else { BUG(1, printf("SQL type '%s' not allowed!", @@ -1291,9 +1290,9 @@ instruction_smphrtrydecr(struct_processu } partie_entiere = floor((*((real8 *) (*s_objet_argument_1).objet))); - horodatage.tv_sec += partie_entiere; - horodatage.tv_usec += (*((real8 *) (*s_objet_argument_1).objet)) - - partie_entiere; + horodatage.tv_sec += (time_t) partie_entiere; + horodatage.tv_usec += ((suseconds_t) ((*((real8 *) + (*s_objet_argument_1).objet)) - partie_entiere)) * 1000000; if (horodatage.tv_usec > 1000000) { @@ -1648,8 +1647,8 @@ instruction_svd(struct_processus *s_etat struct_vecteur s_vecteur; - unsigned long i; - unsigned long j; + integer8 i; + integer8 j; (*s_etat_processus).erreur_execution = d_ex; @@ -1741,8 +1740,8 @@ instruction_svd(struct_processus *s_etat .nombre_lignes; if (((*((struct_matrice *) (*s_objet_resultat_2).objet)).tableau = - malloc((*((struct_matrice *) (*s_objet_resultat_2).objet)) - .nombre_lignes * sizeof(real8 *))) == NULL) + malloc(((size_t) (*((struct_matrice *) (*s_objet_resultat_2) + .objet)).nombre_lignes) * sizeof(real8 *))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -1752,9 +1751,9 @@ instruction_svd(struct_processus *s_etat .nombre_lignes; i++) { if ((((real8 **) (*((struct_matrice *) (*s_objet_resultat_2) - .objet)).tableau)[i] = malloc((*((struct_matrice *) - (*s_objet_resultat_2).objet)).nombre_colonnes * - sizeof(real8 *))) == NULL) + .objet)).tableau)[i] = malloc(((size_t) + (*((struct_matrice *) (*s_objet_resultat_2).objet)) + .nombre_colonnes) * sizeof(real8 *))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -1841,8 +1840,8 @@ instruction_svd(struct_processus *s_etat .nombre_lignes; if (((*((struct_matrice *) (*s_objet_resultat_2).objet)).tableau = - malloc((*((struct_matrice *) (*s_objet_resultat_2).objet)) - .nombre_lignes * sizeof(real8 *))) == NULL) + malloc(((size_t) (*((struct_matrice *) (*s_objet_resultat_2) + .objet)).nombre_lignes) * sizeof(real8 *))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -1852,9 +1851,9 @@ instruction_svd(struct_processus *s_etat .nombre_lignes; i++) { if ((((real8 **) (*((struct_matrice *) (*s_objet_resultat_2) - .objet)).tableau)[i] = malloc((*((struct_matrice *) - (*s_objet_resultat_2).objet)).nombre_colonnes * - sizeof(real8 *))) == NULL) + .objet)).tableau)[i] = malloc(((size_t) + (*((struct_matrice *) (*s_objet_resultat_2).objet)) + .nombre_colonnes) * sizeof(real8 *))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return;