--- rpl/src/rpl.h 2010/03/04 10:17:55 1.12 +++ rpl/src/rpl.h 2010/03/17 14:14:37 1.18 @@ -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. @@ -42,6 +42,7 @@ #include #include #include +#include #ifndef RPLARGS # include @@ -75,6 +76,9 @@ # include "termcap.h" # include "iconv.h" +# include "openssl/evp.h" +# include "sqlite3.h" + # define HAVE_INLINE # define GSL_RANGE_CHECK_OFF # include "gsl/gsl_cdf.h" @@ -484,6 +488,7 @@ void debug_memoire_retrait(void *ptr); # define d_es_nombre_max_descripteurs 2011 # define d_es_interruption_invalide 2012 # define d_es_contexte 2013 +# define d_es_somme_controle 2014 #endif /* @@ -616,19 +621,10 @@ void debug_memoire_retrait(void *ptr); # define d_ex_locales 76 # define d_ex_representation 77 # define d_ex_erreur_profilage 78 +# define d_ex_enregistrement_inexistant 79 +# define d_ex_clef_inexistante 80 #endif -/* --------------------------------------------------------------------------------- - Erreurs de la ligne de commande --------------------------------------------------------------------------------- -*/ - -#ifndef RPLARGS -# define d_os 4000 -# define d_os_ligne_de_commande 4001 -# define d_os_fichier_introuvable 4002 -#endif /* ================================================================================ @@ -844,12 +840,14 @@ typedef struct descripteur_fichier unsigned long identifiant; unsigned char effacement; + unsigned char type; // C (file *) ou S (sqlite *) unsigned char *nom; pid_t pid; pthread_t tid; - file *descripteur; + file *descripteur_c; + sqlite3 *descripteur_sqlite; } struct_descripteur_fichier; #endif @@ -1020,8 +1018,8 @@ typedef struct descripteur_thread struct_objet *argument; - pid_t pid; - volatile pthread_t tid; + pid_t pid; + volatile pthread_t tid; pthread_t thread_pere; @@ -1701,6 +1699,8 @@ typedef struct processus /* Autres */ + char *rpl_home; + gsl_rng *generateur_aleatoire; const gsl_rng_type *type_generateur_aleatoire; @@ -2523,7 +2523,7 @@ complex16 sommation_vecteur_complexe(com */ #ifndef RPLARGS -int rplinit(int argc, char *argv[], unsigned char ***resultats); +int rplinit(int argc, char *argv[], unsigned char ***resultats, char *rpl_home); #endif /* @@ -2626,6 +2626,8 @@ logical1 analyse_syntaxique(struct_proce logical1 caracteristiques_fichier(struct_processus *s_etat_processus, unsigned char *nom, logical1 *existence, logical1 *ouverture, unsigned long *unite); +logical1 controle(struct_processus *s_etat_processus, unsigned char *fichier, + unsigned char *type, unsigned char *somme_candidate); logical1 creation_variable(struct_processus *s_etat_processus, struct_variable *s_variable, unsigned char autorisation_creation_variable_statique, @@ -2645,6 +2647,10 @@ logical1 empilement_pile_last(struct_pro unsigned long nombre_arguments); logical1 evaluation(struct_processus *s_etat_processus, struct_objet *s_objet, unsigned char type_evaluation); +logical1 initialisation_fichier_acces_direct(struct_processus *s_etat_processus, + sqlite3 *sqlite, logical1 binaire); +logical1 initialisation_fichier_acces_indexe(struct_processus *s_etat_processus, + sqlite3 *sqlite, integer8 position_clef, logical1 binaire); logical1 recherche_instruction_suivante(struct_processus *s_etat_processus); logical1 retrait_variable(struct_processus *s_etat_processus, unsigned char *nom_variable, unsigned char type); @@ -2767,14 +2773,14 @@ struct_processus *copie_etat_processus(s /* -------------------------------------------------------------------------------- - Fonctions renvoyant un pointeur sur un fichier (file *) + Fonctions renvoyant un pointeur sur un fichier (file *) ou un descripteur -------------------------------------------------------------------------------- */ #ifndef RPLARGS file *creation_fichier_tex(struct_processus *s_etat_processus); -file *descripteur_fichier(struct_processus *s_etat_processus, - struct_fichier *s_fichier); +struct_descripteur_fichier *descripteur_fichier(struct_processus + *s_etat_processus, struct_fichier *s_fichier); #endif /*