--- rpl/src/rpl.h 2013/03/01 09:29:30 1.201 +++ rpl/src/rpl.h 2014/01/26 18:21:34 1.238 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 - Copyright (C) 1989-2013 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.17 + Copyright (C) 1989-2014 Dr. BERTRAND Joël This file is part of RPL/2. @@ -56,6 +56,10 @@ # define sched_yield(arg) #endif +#ifdef CYGWIN +# define SA_ONSTACK 0 +#endif + /* ================================================================================ @@ -65,6 +69,7 @@ #include #include +#include #include #include #include @@ -72,6 +77,7 @@ #include #include #include +#include #ifndef RPLARGS # include @@ -153,7 +159,6 @@ # endif # include -# include # include # include # include @@ -163,6 +168,7 @@ # include "readline.h" # include "termcap.h" # include "iconv.h" +# include "zlib.h" # include "openssl/evp.h" # ifndef OPENSSL_NO_MD2 @@ -316,10 +322,12 @@ typedef struct queue_signaux # ifndef SEMAPHORES_NOMMES sem_t semaphore; sem_t signalisation; + sem_t arret_signalisation; # endif # else sem_t semaphore; sem_t signalisation; + sem_t arret_signalisation; # endif volatile int pointeur_lecture; @@ -340,6 +348,7 @@ __EXTERN__ int f_queue_signaux; # ifdef SEMAPHORES_NOMMES __EXTERN__ sem_t *semaphore_queue_signaux; __EXTERN__ sem_t *semaphore_signalisation; + __EXTERN__ sem_t *semaphore_arret_signalisation; # endif #endif @@ -477,8 +486,6 @@ union semun __EXTERN__ pthread_mutex_t mutex_liste_threads __STATIC_MUTEX_INITIALIZATION__; - __EXTERN__ pthread_mutex_t mutex_gestionnaires_signaux_atomique - __STATIC_MUTEX_INITIALIZATION__; __EXTERN__ pthread_mutex_t mutex_creation_variable_partagee __STATIC_MUTEX_INITIALIZATION__; __EXTERN__ pthread_mutex_t mutex_sections_critiques; @@ -490,10 +497,11 @@ union semun #endif #ifdef SEMAPHORES_NOMMES -#define SEM_FORK 0 -#define SEM_QUEUE 1 -#define SEM_SIGNAUX 2 -#define SEM_SIGNALISATION 3 +#define SEM_FORK 0 +#define SEM_QUEUE 1 +#define SEM_SIGNAUX 2 +#define SEM_SIGNALISATION 3 +#define SEM_ARRET_SIGNALISATION 4 sem_t *sem_init2(unsigned int valeur, pid_t pid, int ordre); sem_t *sem_init3(unsigned int valeur, pid_t pid, pthread_t tid, int ordre); int sem_destroy2(sem_t *semaphore_p, pid_t pid, int ordre); @@ -1024,7 +1032,7 @@ enum t_type { ADR = 0, ALG, BIN, CHN, C SLB, SPH, SQL, TBL, VCX, VIN, VRL }; /* - ADR : adresse sur 32 bits (au moins) non signés (unsigned long) + ADR : adresse sur 64 bits signés. Adresse d'une définition à interpréter. ALG : expression algébrique (struct_liste_chainee *) @@ -1126,7 +1134,7 @@ typedef struct objet #ifndef RPLARGS typedef struct fichier { - unsigned long descripteur; + int descripteur; unsigned char acces; /* S/D/I */ unsigned char binaire; /* Y/N/F */ @@ -1219,7 +1227,7 @@ typedef struct bibliotheque #ifndef RPLARGS typedef struct descripteur_fichier { - unsigned long identifiant; + int identifiant; unsigned char effacement; unsigned char type; // C (file *) ou S (sqlite *) @@ -1458,8 +1466,10 @@ typedef struct descripteur_thread int pipe_injections[2]; int pipe_nombre_injections[2]; int pipe_interruptions[2]; - int pipe_nombre_objets_attente[2]; - int pipe_nombre_interruptions_attente[2]; + // pipe_nombre_elements_attente == 0 => initialisation ou terminaison + // pipe_nombre_elements_attente == 1 => objet en attente + // pipe_nombre_elements_attente == 2 => interruption en attente + int pipe_nombre_elements_attente[2]; int pipe_acquittement[2]; volatile integer8 nombre_objets_dans_pipe; @@ -1489,8 +1499,6 @@ typedef struct liste_pile_systeme { struct liste_pile_systeme *suivant; - struct_liste_chainee *pointeur_objet_retour; - struct_objet *indice_boucle; struct_objet *limite_indice_boucle; struct_objet *objet_de_test; @@ -1544,9 +1552,9 @@ typedef struct liste_pile_systeme A FORALL : NEXT termine une boucle sur un objet. */ - unsigned long adresse_retour; - unsigned long niveau_courant; - struct_objet *pointeur_adresse_retour; + integer8 adresse_retour; + integer8 niveau_courant; + struct_liste_chainee *pointeur_objet_retour; } struct_liste_pile_systeme; #endif @@ -1560,7 +1568,7 @@ typedef struct liste_pile_systeme #ifndef RPLARGS typedef union position_variable { - unsigned long adresse; + integer8 adresse; struct_objet *pointeur; } union_position_variable; @@ -1569,7 +1577,7 @@ typedef struct variable unsigned char *nom; unsigned char origine; // P(rogramme) ou E(valuation) - unsigned long niveau; + integer8 niveau; union_position_variable variable_statique; union_position_variable variable_partagee; @@ -1594,7 +1602,7 @@ typedef struct variable_partage unsigned char *nom; unsigned char origine; - unsigned long niveau; + integer8 niveau; union_position_variable variable_partagee; @@ -1621,7 +1629,7 @@ typedef struct variable_statique // Position de création de la variable statique dans le programme ou dans // l'expression. 'origine' vaut 'P' pour programme ou 'E' pour expression. - unsigned long niveau; + integer8 niveau; union_position_variable variable_statique; @@ -1638,7 +1646,7 @@ typedef struct variable_statique typedef struct vecteur { - unsigned long taille; + integer8 taille; unsigned char type; /* C (complex*16), R (real*8), I (integer*8) */ @@ -1654,8 +1662,8 @@ typedef struct vecteur typedef struct matrice { - unsigned long nombre_lignes; - unsigned long nombre_colonnes; + integer8 nombre_lignes; + integer8 nombre_colonnes; unsigned char type; /* C (complex*16), R (real*8), I (integer*8) */ @@ -1671,7 +1679,7 @@ typedef struct matrice typedef struct tableau { - unsigned long nombre_elements; + integer8 nombre_elements; struct_objet **elements; } struct_tableau; @@ -1807,7 +1815,7 @@ typedef struct arbre_variables_partagees do { \ pthread_mutexattr_t attributs_mutex; \ pthread_mutexattr_init(&attributs_mutex); \ - pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); \ + pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_RECURSIVE); \ pthread_mutex_init(&(mutex), &attributs_mutex); \ pthread_mutexattr_destroy(&attributs_mutex); \ } while(0) @@ -1817,13 +1825,14 @@ typedef struct tableau_variables unsigned char origine; unsigned char *nom; // pointeur sur la struct_variable // réelle et non copie de la chaîne - unsigned long niveau; + integer8 niveau; struct_objet *objet; // pointeur sur l'objet et non copie // de l'objet. logical1 variable_verrouillee; logical1 variable_masquee; + pthread_mutex_t *mutex; union_position_variable variable_statique; union_position_variable variable_partagee; } struct_tableau_variables; @@ -1906,8 +1915,8 @@ typedef struct processus unsigned char traitement_cycle_exit; /*N/E/C*/ unsigned char recherche_type; /*Y/N*/ - unsigned long position_courante; - unsigned long longueur_definitions_chainees; + integer8 position_courante; + integer8 longueur_definitions_chainees; /* Pointeurs sur les instructions */ @@ -1924,13 +1933,13 @@ typedef struct processus struct_liste_chainee *l_base_pile; struct_liste_chainee *l_base_pile_last; - unsigned long hauteur_pile_operationnelle; + integer8 hauteur_pile_operationnelle; /* Piles systemes */ struct_liste_pile_systeme *l_base_pile_systeme; - unsigned long hauteur_pile_systeme; + integer8 hauteur_pile_systeme; /* Gestion des processus */ @@ -1944,8 +1953,7 @@ typedef struct processus int pipe_injections; int pipe_nombre_injections; int pipe_interruptions; - int pipe_nombre_objets_attente; - int pipe_nombre_interruptions_attente; + int pipe_nombre_elements_attente; int nombre_objets_envoyes_non_lus; int nombre_objets_injectes; @@ -2001,8 +2009,8 @@ typedef struct processus int *pointeurs_caracteres_variables; int nombre_caracteres_variables; - unsigned long niveau_courant; - unsigned long niveau_initial; + integer8 niveau_courant; + integer8 niveau_initial; logical1 creation_variables_statiques; logical1 creation_variables_partagees; @@ -2024,7 +2032,7 @@ typedef struct processus struct_liste_chainee *s_bibliotheques; struct_instruction_externe *s_instructions_externes; - unsigned long nombre_instructions_externes; + integer8 nombre_instructions_externes; /* Fichier d'impression */ @@ -2174,23 +2182,23 @@ typedef struct processus /* Traitement des exceptions */ logical1 arret_si_exception; - unsigned int exception; - unsigned int derniere_exception; - unsigned int exception_processus_fils; + int exception; + int derniere_exception; + int exception_processus_fils; /* Traitement des erreurs */ - unsigned int erreur_compilation; - unsigned int erreur_execution; - unsigned int erreur_systeme; + int erreur_compilation; + volatile int erreur_execution; + volatile int erreur_systeme; struct_objet *s_objet_errone; struct_objet *s_objet_erreur; logical1 erreur_scrutation; - volatile unsigned int erreur_systeme_processus_fils; - unsigned int erreur_execution_processus_fils; + volatile int erreur_systeme_processus_fils; + int erreur_execution_processus_fils; pid_t pid_erreur_processus_fils; @@ -2198,13 +2206,13 @@ typedef struct processus integer8 derniere_erreur_fonction_externe; - unsigned int derniere_erreur_systeme; - unsigned int derniere_erreur_execution; - unsigned int derniere_erreur_evaluation; + int derniere_erreur_systeme; + int derniere_erreur_execution; + int derniere_erreur_evaluation; unsigned char *instruction_derniere_erreur; - unsigned long niveau_derniere_erreur; + integer8 niveau_derniere_erreur; logical1 core; logical1 invalidation_message_erreur; @@ -2212,7 +2220,7 @@ typedef struct processus /* Debug */ logical1 debug; - integer8 type_debug; + logical8 type_debug; logical1 debug_programme; logical1 execution_pas_suivant; logical1 traitement_instruction_halt; @@ -2287,7 +2295,7 @@ typedef struct processus unsigned char retour_routine_evaluation; unsigned char *localisation; - unsigned long niveau_recursivite; + integer8 niveau_recursivite; pid_t pid_processus_pere; pthread_t tid_processus_pere; @@ -2303,9 +2311,10 @@ typedef struct processus struct_liste_profilage2 *pile_profilage_fonctions; struct timeval horodatage_profilage; - // Mutex spécifique au processus et donnant accès à la pile des processus - pthread_mutex_t mutex; pthread_mutex_t mutex_allocation; + pthread_mutex_t mutex_interruptions; + pthread_mutex_t mutex_pile_processus; + pthread_mutex_t mutex_signaux; // Mutex autorisant les fork() sem_t __PTR__ semaphore_fork; @@ -2316,26 +2325,30 @@ typedef struct processus pthread_mutex_t protection_liste_mutexes; unsigned int sections_critiques; -/* Drapeau nécessaire à RESTART */ +/* Variable d'initialisation pour SCHED */ + + logical1 initialisation_scheduler; + +/* Drapeau nécessaire à RESTART */ volatile logical1 requete_redemarrage; /* Gestion optimisée de la mémoire */ double estimation_taille_pile_tampon; - unsigned long taille_pile_tampon; + integer8 taille_pile_tampon; struct_liste_chainee *pile_tampon; double estimation_taille_pile_systeme_tampon; - unsigned long taille_pile_systeme_tampon; + integer8 taille_pile_systeme_tampon; struct_liste_pile_systeme *pile_systeme_tampon; - unsigned long taille_pile_objets; + integer8 taille_pile_objets; struct_objet *pile_objets; -# define TAILLE_CACHE 16384 +# define TAILLE_CACHE 1024 - unsigned long *objets_adr[TAILLE_CACHE]; + integer8 *objets_adr[TAILLE_CACHE]; int pointeur_adr; logical8 *objets_bin[TAILLE_CACHE]; @@ -2401,7 +2414,7 @@ typedef struct processus typedef struct fonction { unsigned char *nom_fonction; - unsigned long nombre_arguments; + integer8 nombre_arguments; void (*fonction)(struct_processus *); @@ -2483,6 +2496,7 @@ void instruction_col_fleche(struct_proce void instruction_col_moins(struct_processus *s_etat_processus); void instruction_col_plus(struct_processus *s_etat_processus); void instruction_comb(struct_processus *s_etat_processus); +void instruction_compress(struct_processus *s_etat_processus); void instruction_con(struct_processus *s_etat_processus); void instruction_cond(struct_processus *s_etat_processus); void instruction_cont(struct_processus *s_etat_processus); @@ -2790,6 +2804,8 @@ void instruction_return(struct_processus void instruction_revlist(struct_processus *s_etat_processus); void instruction_rewind(struct_processus *s_etat_processus); void instruction_rfuse(struct_processus *s_etat_processus); +void instruction_rgdl(struct_processus *s_etat_processus); +void instruction_rgdr(struct_processus *s_etat_processus); void instruction_rl(struct_processus *s_etat_processus); void instruction_rlb(struct_processus *s_etat_processus); void instruction_rnd(struct_processus *s_etat_processus); @@ -2909,6 +2925,7 @@ void instruction_t_vers_l(struct_process void instruction_ucase(struct_processus *s_etat_processus); void instruction_uchol(struct_processus *s_etat_processus); +void instruction_uncompress(struct_processus *s_etat_processus); void instruction_unlock(struct_processus *s_etat_processus); void instruction_unprotect(struct_processus *s_etat_processus); void instruction_until(struct_processus *s_etat_processus); @@ -2959,8 +2976,7 @@ void instruction_yield(struct_processus #ifndef RPLARGS void affectation_interruptions_logicielles(struct_processus *s_etat_processus); void affichage_pile(struct_processus *s_etat_processus, - struct_liste_chainee *l_element_courant, unsigned long - niveau_courant); + struct_liste_chainee *l_element_courant, integer8 niveau_courant); #endif void *allocation_maillon(struct_processus *s_etat_processus); @@ -2983,7 +2999,7 @@ void conversion_format(struct_processus unsigned char *chaine); void conversion_hms_vers_decimal(real8 *angle); void conversion_majuscule_limitee(unsigned char *chaine_entree, - unsigned char *chaine_sortie, unsigned long longueur); + unsigned char *chaine_sortie, integer8 longueur); void conversion_radians_vers_degres(real8 *angle); void copie_arbre_variables(struct_processus *s_etat_processus, struct_processus *s_nouvel_etat_processus); @@ -2996,11 +3012,11 @@ void determinant(struct_processus *s_eta void *valeur); void deverrouillage_threads_concurrents(struct_processus *s_etat_processus); void ecriture_pile(struct_processus *s_etat_processus, file *flux, - struct_liste_chainee *l_element_courant, unsigned long niveau_courant); + struct_liste_chainee *l_element_courant, integer8 niveau_courant); void ecriture_profil(struct_processus *s_etat_processus); void effacement_pile_systeme(struct_processus *s_etat_processus); void empilement_pile_systeme(struct_processus *s_etat_processus); -void encart(struct_processus *s_etat_processus, unsigned long duree); +void encart(struct_processus *s_etat_processus, integer8 duree); void evaluation_romberg(struct_processus *s_etat_processus, struct_objet *s_expression, unsigned char *variable, real8 *point, real8 *valeur, logical1 *validite); @@ -3021,7 +3037,7 @@ void formateur_elementaire_tex(struct_pr file *fichier, struct_objet *s_objet, unsigned char environnement); void impression_pile(struct_processus *s_etat_processus, struct_liste_chainee *l_element_courant, - unsigned char methode, unsigned long niveau_courant); + unsigned char methode, integer8 niveau_courant); void impression_tex(struct_processus *s_etat_processus); void informations(struct_processus *s_etat_processus); void initialisation_allocateur(struct_processus *s_etat_processus); @@ -3029,7 +3045,7 @@ void initialisation_completion(void); void initialisation_contexte_cas(struct_processus *s_etat_processus); void initialisation_drapeaux(struct_processus *s_etat_processus); void initialisation_generateur_aleatoire(struct_processus *s_etat_processus, - logical1 initialisation_automatique, unsigned long int racine); + logical1 initialisation_automatique, integer8 racine); void initialisation_instructions(struct_processus *s_etat_processus); void initialisation_variables(struct_processus *s_etat_processus); #endif @@ -3098,7 +3114,7 @@ void scrutation_injection(struct_process void scrutation_interruptions(struct_processus *s_etat_processus); void sf(struct_processus *s_etat_processus, unsigned char indice_drapeau); void *surveillance_processus(void *argument); -void swap(void *variable_1, void *variable_2, unsigned long taille_octets); +void swap(void *variable_1, void *variable_2, integer8 taille_octets); void *thread_signaux(void *argument); void trace(struct_processus *s_etat_processus, FILE *flux); void traitement_asynchrone_exceptions_gsl(struct_processus *s_etat_processus); @@ -3106,7 +3122,7 @@ void traitement_exceptions_gsl(const cha int line, int gsl_errno); void traitement_interruptions_logicielles(struct_processus *s_etat_processus); void tri_base_symboles_externes(struct_processus *s_etat_processus); -void tri_vecteur(real8 *vecteur, unsigned long taille); +void tri_vecteur(real8 *vecteur, integer8 taille); void valeurs_propres(struct_processus *s_etat_processus, struct_matrice *s_matrice, struct_vecteur *s_valeurs_propres, @@ -3146,9 +3162,9 @@ int envoi_signal_thread(pthread_t tid, e -------------------------------------------------------------------------------- */ -real8 sommation_vecteur_reel(real8 *vecteur, unsigned long *taille, +real8 sommation_vecteur_reel(real8 *vecteur, integer8 *taille, logical1 *erreur_memoire); -complex16 sommation_vecteur_complexe(complex16 *vecteur, unsigned long *taille, +complex16 sommation_vecteur_complexe(complex16 *vecteur, integer8 *taille, logical1 *erreur_memoire); /* @@ -3170,17 +3186,17 @@ int rplinit(int argc, char *argv[], char #ifndef RPLARGS real8 correlation_statistique(struct_matrice *s_matrice, - unsigned long colonne_1, unsigned long colonne_2, logical1 *erreur); + integer8 colonne_1, integer8 colonne_2, logical1 *erreur); real8 covariance_statistique(struct_matrice *s_matrice, - unsigned long colonne_1, unsigned long colonne_2, + integer8 colonne_1, integer8 colonne_2, unsigned char type, logical1 *erreur); struct_vecteur *ecart_type_statistique(struct_matrice *s_matrice, unsigned char type); struct_vecteur *moyenne_statistique(struct_matrice *s_matrice); struct_vecteur *sommation_colonne_statistique(struct_matrice *s_matrice, - unsigned long colonne); + integer8 colonne); struct_vecteur *sommation_produits_colonnes_statistiques(struct_matrice - *s_matrice, unsigned long colonne_1, unsigned long colonne_2); + *s_matrice, integer8 colonne_1, integer8 colonne_2); struct_vecteur *sommation_statistique(struct_matrice *s_matrice); struct_vecteur *variance_statistique(struct_matrice *s_matrice, unsigned char type); @@ -3206,7 +3222,7 @@ struct_liste_chainee *depilement_pile_op struct_liste_chainee *empilement_pile_operationnelle(struct_rpl_arguments *s_rpl_arguments, struct_objet *s_objet); struct_liste_chainee *sauvegarde_arguments(struct_rpl_arguments - *s_rpl_arguments, unsigned long nombre_arguments); + *s_rpl_arguments, integer8 nombre_arguments); /* -------------------------------------------------------------------------------- @@ -3218,36 +3234,36 @@ struct_liste_chainee *sauvegarde_argumen unsigned char *analyse_algebrique(struct_processus *s_etat_processus, unsigned char *chaine_algebrique, struct_liste_chainee **l_base_liste); unsigned char *analyse_flux(struct_processus *s_etat_processus, - unsigned char *flux, long longueur); + unsigned char *flux, integer8 longueur); unsigned char *chiffrement(const EVP_CIPHER *type_chiffrement, - logical1 encodage, unsigned char *message, unsigned int - longueur_message, unsigned char *clef, unsigned int longueur_clef, + logical1 encodage, unsigned char *message, integer8 longueur_message, + unsigned char *clef, integer8 longueur_clef, unsigned char *vecteur_initialisation, - unsigned int *longueur_message_chiffre); + integer8 *longueur_message_chiffre); unsigned char *compactage(unsigned char *chaine); unsigned char *conversion_majuscule(unsigned char *chaine); unsigned char *creation_nom_fichier(struct_processus *s_etat_processus, unsigned char *chemin); unsigned char *date_compilation(); -unsigned char *extraction_chaine(unsigned char *chaine, unsigned long i, - unsigned long j); +unsigned char *extraction_chaine(unsigned char *chaine, integer8 i, integer8 j); unsigned char *formateur(struct_processus *s_etat_processus, long offset, struct_objet *s_objet); unsigned char *formateur_fichier(struct_processus *s_etat_processus, struct_objet *s_objet, struct_objet *s_format, - long longueur, long longueur_champ, unsigned char format, - unsigned char type, long *longueur_effective, long *recursivite); + integer8 longueur, integer8 longueur_champ, unsigned char format, + unsigned char type, integer8 *longueur_effective, integer8 *recursivite, + logical1 export_fichier); unsigned char *formateur_flux(struct_processus *s_etat_processus, - unsigned char *donnees, long *longueur); + unsigned char *donnees, integer8 *longueur); unsigned char *formateur_fichier_nombre(struct_processus *s_etat_processus, void *valeur_numerique, unsigned char type, - long longueur, long longueur_champ, unsigned char format); + integer8 longueur, integer8 longueur_champ, unsigned char format); unsigned char *formateur_fichier_binaire_nombre(struct_processus - *s_etat_processus, void *valeur_numerique, unsigned char type, - long longueur, long *longueur_conversion); + *s_etat_processus, void *valeur_numerique, unsigned char type_entree, + unsigned char type, integer8 longueur, integer8 *longueur_conversion); unsigned char *formateur_fichier_reel(struct_processus *s_etat_processus, void *valeur_numerique, unsigned char type, - long longueur, long longueur_champ, unsigned char format); + integer8 longueur, integer8 longueur_champ, unsigned char format); unsigned char *formateur_nombre(struct_processus *s_etat_processus, void *valeur_numerique, unsigned char type); unsigned char *formateur_reel(struct_processus *s_etat_processus, @@ -3298,7 +3314,7 @@ logical1 destruction_fichier(unsigned ch logical1 empilement(struct_processus *s_etat_processus, struct_liste_chainee **l_base_liste, struct_objet *s_objet); logical1 empilement_pile_last(struct_processus *s_etat_processus, - unsigned long nombre_arguments); + integer8 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, @@ -3331,6 +3347,7 @@ logical1 sequenceur_optimise(struct_proc logical1 depassement_addition(integer8 *a, integer8 *b, integer8 *resultat); logical1 depassement_multiplication(integer8 *a, integer8 *b, integer8 *resultat); +logical1 depassement_soustraction(integer8 *a, integer8 *b, integer8 *resultat); logical1 depassement_puissance(integer8 *a, integer8 *b, integer8 *resultat); #ifndef RPLARGS @@ -3369,9 +3386,9 @@ ssize_t write_atomic(struct_processus *s int alsprintf(unsigned char **strp, const char *fmt, ...); int interruption_violation_access(void *adresse_fautive, int gravite); #ifndef RPLARGS -int liste_variables(struct_processus *s_etat_processus, +integer8 liste_variables(struct_processus *s_etat_processus, struct_tableau_variables *tableau); -int nombre_variables(struct_processus *s_etat_processus); +integer8 nombre_variables(struct_processus *s_etat_processus); int readline_analyse_syntaxique(int count, int key); int readline_effacement(int count, int key); #endif @@ -3463,6 +3480,8 @@ struct_objet *allocation(struct_processu #ifndef RPLARGS struct_objet *formateur_date(struct_processus *s_etat_processus, struct timeval *temps); +struct_objet *lecture_fichier_non_formate(struct_processus *s_etat_processus, + void *argument, integer8 longueur_buffer, logical1 recursivite); struct_objet *lecture_pipe(struct_processus *s_etat_processus, int pipe); struct_objet *parametres_sql(struct_processus *s_etat_processus, struct_objet *s_parametres); @@ -3496,8 +3515,7 @@ struct_liste_variables_partagees *recher #ifndef RPLARGS struct_arbre *creation_arbre(struct_processus *s_etat_processus, - struct_objet **t_objets, unsigned long indice, - unsigned long indice_maximal); + struct_objet **t_objets, integer8 indice, integer8 indice_maximal); void liberation_arbre(struct_processus *s_etat_processus, struct_arbre *s_noeud); void parcours_arbre(struct_processus *s_etat_processus, struct_arbre *s_noeud);