--- rpl/src/rpl.c 2010/03/04 10:17:55 1.10 +++ rpl/src/rpl.c 2010/03/17 14:14:36 1.13 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.12 + RPL/2 (R) version 4.0.13 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -31,7 +31,7 @@ */ int -rplinit(int argc, char *argv[], unsigned char ***resultats) +rplinit(int argc, char *argv[], unsigned char ***resultats, char *rpl_home) { # include "copyright.conv.h" # include "licence.conv.h" @@ -126,6 +126,8 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex; + (*s_etat_processus).rpl_home = rpl_home; + insertion_thread(s_etat_processus, d_vrai); pthread_mutexattr_init(&attributs_mutex); @@ -483,7 +485,7 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).chemin_fichiers_temporaires = recherche_chemin_fichiers_temporaires(s_etat_processus); - erreur = d_os; + erreur = d_absence_erreur; core = d_faux; mode_interactif = d_faux; (*s_etat_processus).nom_fichier_source = NULL; @@ -504,7 +506,7 @@ rplinit(int argc, char *argv[], unsigned if (argc == 1) { - erreur = d_os_ligne_de_commande; + erreur = d_erreur; informations(s_etat_processus); } else @@ -556,31 +558,6 @@ rplinit(int argc, char *argv[], unsigned } option_a = d_vrai; - printf("\n"); - - if ((*s_etat_processus).langue == 'F') - { - printf(" Auteur: Joël BERTRAND,\n"); - printf(" Email : " - "joel.bertrand@systella.fr\n"); - printf(" Liste de diffusion : " - "rpl2@systella.fr\n"); - printf(" Page : " - "http://www.rpl2.fr"); - printf("\n"); - } - else - { - printf(" Author: Joël BERTRAND,\n"); - printf(" Email : " - "joel.bertrand@systella.fr\n"); - printf(" Mailing list : " - "rpl2@systella.fr\n"); - printf(" Web page : " - "http://www.rpl2/net"); - printf("\n"); - } - break; } @@ -1382,7 +1359,7 @@ rplinit(int argc, char *argv[], unsigned printf("+++Error : More than one definition\n"); } - erreur = d_os_ligne_de_commande; + erreur = d_erreur; } else { @@ -1584,7 +1561,7 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).nom_fichier_source); } - erreur = d_os_fichier_introuvable; + erreur = d_erreur; } else { @@ -1631,7 +1608,7 @@ rplinit(int argc, char *argv[], unsigned } } - if ((erreur == d_os) && (presence_definition == 'O')) + if ((erreur == d_absence_erreur) && (presence_definition == 'O')) { (*s_etat_processus).profilage = (option_P != 0) ? d_vrai : d_faux; (*s_etat_processus).niveau_profilage = option_P; @@ -2545,23 +2522,31 @@ rplinit(int argc, char *argv[], unsigned free(arguments); } - if (option_D == d_vrai) + if (option_a == d_vrai) { - lancement_daemon(s_etat_processus); + fprintf(stdout, "%s\n", (*s_etat_processus) + .definitions_chainees); } - - if (option_p == d_faux) + else { - if (setjmp(contexte_initial) == 0) + if (option_D == d_vrai) { - erreur = sequenceur(s_etat_processus); + lancement_daemon(s_etat_processus); } - } - else - { - if (setjmp(contexte_initial) == 0) + + if (option_p == d_faux) + { + if (setjmp(contexte_initial) == 0) + { + erreur = sequenceur(s_etat_processus); + } + } + else { - erreur = sequenceur_optimise(s_etat_processus); + if (setjmp(contexte_initial) == 0) + { + erreur = sequenceur_optimise(s_etat_processus); + } } } @@ -3188,7 +3173,17 @@ rplinit(int argc, char *argv[], unsigned fclose((*((struct_descripteur_fichier *) (*((struct_liste_chainee *) l_element_courant)).donnee)) - .descripteur); + .descripteur_c); + + if ((*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) + l_element_courant)).donnee)).type != 'C') + { + sqlite3_close((*((struct_descripteur_fichier *) + (*((struct_liste_chainee *) + l_element_courant)).donnee)) + .descripteur_sqlite); + } if ((*((struct_descripteur_fichier *) (*((struct_liste_chainee *) @@ -3350,7 +3345,7 @@ rplinit(int argc, char *argv[], unsigned debug_memoire_verification(s_etat_processus); # endif - return((erreur == d_os) ? EXIT_SUCCESS : EXIT_FAILURE); + return((erreur == d_absence_erreur) ? EXIT_SUCCESS : EXIT_FAILURE); } @@ -3362,7 +3357,7 @@ informations(struct_processus *s_etat_pr if ((*s_etat_processus).langue == 'F') { printf(" rpl [-options] [programme]\n"); - printf(" -a : informations sur l'auteur\n"); + printf(" -a : analyse du code\n"); printf(" -A : paramètres passés au programme principal\n"); printf(" -c : génération de fichier de débogage (rpl-core)\n"); printf(" -d : option de déverminage interne\n"); @@ -3381,7 +3376,7 @@ informations(struct_processus *s_etat_pr else { printf(" rpl [-options] [program]\n"); - printf(" -a : displays informations about the author\n"); + printf(" -a : analyzes program\n"); printf(" -A : sends parameters to main program\n"); printf(" -c : allows creation of a rpl-core file, providing a way" "\n"