version 1.185, 2012/12/13 16:59:43
|
version 1.208, 2013/03/16 20:11:29
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.11 |
RPL/2 (R) version 4.1.13 |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
Copyright (C) 1989-2013 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 65
|
Line 65
|
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
|
#include <stdint.h> |
#include <math.h> |
#include <math.h> |
#include <string.h> |
#include <string.h> |
#include <strings.h> |
#include <strings.h> |
Line 165
|
Line 166
|
# include "iconv.h" |
# include "iconv.h" |
|
|
# include "openssl/evp.h" |
# include "openssl/evp.h" |
|
# ifndef OPENSSL_NO_MD2 |
|
# include "openssl/md2.h" |
|
# endif |
|
# ifndef OPENSSL_NO_MD4 |
|
# include "openssl/md4.h" |
|
# endif |
|
# ifndef OPENSSL_NO_MD5 |
|
# include "openssl/md5.h" |
|
# endif |
|
# ifndef OPENSSL_NO_MDC2 |
|
# include "openssl/mdc2.h" |
|
# endif |
|
# ifndef OPENSSL_NO_RIPEMD |
|
# include "openssl/ripemd.h" |
|
# endif |
|
# ifndef OPENSSL_NO_SHA |
|
# include "openssl/sha.h" |
|
# endif |
|
# ifndef OPENSSL_NO_WHIRLPOOL |
|
# include "openssl/whrlpool.h" |
|
# endif |
|
# ifndef OPENSSL_NO_AES |
|
# include "openssl/aes.h" |
|
# endif |
|
# ifndef OPENSSL_NO_CAMELLIA |
|
# include "openssl/camellia.h" |
|
# endif |
|
# ifndef OPENSSL_NO_RC2 |
|
# include "openssl/rc2.h" |
|
# endif |
|
# ifndef OPENSSL_NO_IDEA |
|
# include "openssl/idea.h" |
|
# endif |
|
|
# include "sqlite3.h" |
# include "sqlite3.h" |
# include "sigsegv.h" |
# include "sigsegv.h" |
# ifdef OS2 |
# ifdef OS2 |
Line 445 union semun
|
Line 480 union semun
|
__STATIC_MUTEX_INITIALIZATION__; |
__STATIC_MUTEX_INITIALIZATION__; |
__EXTERN__ pthread_mutex_t mutex_gestionnaires_signaux_atomique |
__EXTERN__ pthread_mutex_t mutex_gestionnaires_signaux_atomique |
__STATIC_MUTEX_INITIALIZATION__; |
__STATIC_MUTEX_INITIALIZATION__; |
|
__EXTERN__ pthread_mutex_t mutex_creation_variable_partagee |
|
__STATIC_MUTEX_INITIALIZATION__; |
__EXTERN__ pthread_mutex_t mutex_sections_critiques; |
__EXTERN__ pthread_mutex_t mutex_sections_critiques; |
|
__EXTERN__ pthread_mutex_t mutex_liste_variables_partagees; |
|
|
__EXTERN__ sem_t __PTR__ semaphore_gestionnaires_signaux; |
__EXTERN__ sem_t __PTR__ semaphore_gestionnaires_signaux; |
|
|
Line 926 pid_t debug_fork();
|
Line 964 pid_t debug_fork();
|
# define d_ex_mutex_acquis_autre_thread __erreur(86) |
# define d_ex_mutex_acquis_autre_thread __erreur(86) |
# define d_ex_expression_reguliere __erreur(87) |
# define d_ex_expression_reguliere __erreur(87) |
# define d_ex_instruction_indisponible __erreur(88) |
# define d_ex_instruction_indisponible __erreur(88) |
|
# define d_ex_chiffrement __erreur(89) |
|
# define d_ex_chiffrement_indisponible __erreur(90) |
|
# define d_ex_longueur_clef_chiffrement __erreur(91) |
|
# define d_ex_taille_message __erreur(92) |
#endif |
#endif |
|
|
|
|
Line 1224 typedef struct connecteur_sql
|
Line 1266 typedef struct connecteur_sql
|
# ifdef POSTGRESQL_SUPPORT |
# ifdef POSTGRESQL_SUPPORT |
PGconn *postgresql; |
PGconn *postgresql; |
# endif |
# endif |
|
sqlite3 *sqlite; |
} descripteur; |
} descripteur; |
} struct_connecteur_sql; |
} struct_connecteur_sql; |
#endif |
#endif |
Line 1237 typedef struct connecteur_sql
|
Line 1280 typedef struct connecteur_sql
|
"POSTGRESQL") == 0) \ |
"POSTGRESQL") == 0) \ |
postgresqlclose((*((struct_connecteur_sql *) (*s_objet).objet)) \ |
postgresqlclose((*((struct_connecteur_sql *) (*s_objet).objet)) \ |
.descripteur); \ |
.descripteur); \ |
|
else if (strcmp((*((struct_connecteur_sql *) (*s_objet).objet)).type, \ |
|
"SQLITE") == 0) \ |
|
sqlite3_close((*((struct_connecteur_sql *) (*s_objet).objet)) \ |
|
.descripteur.sqlite); \ |
else \ |
else \ |
BUG(1, uprintf("SQL type '%s' not allowed!", \ |
BUG(1, uprintf("SQL type '%s' not allowed!", \ |
(*((struct_connecteur_sql *) (*s_objet).objet)).type)); |
(*((struct_connecteur_sql *) (*s_objet).objet)).type)); |
Line 1443 typedef struct liste_pile_systeme
|
Line 1490 typedef struct liste_pile_systeme
|
{ |
{ |
struct liste_pile_systeme *suivant; |
struct liste_pile_systeme *suivant; |
|
|
struct_liste_chainee *pointeur_objet_retour; |
|
|
|
struct_objet *indice_boucle; |
struct_objet *indice_boucle; |
struct_objet *limite_indice_boucle; |
struct_objet *limite_indice_boucle; |
struct_objet *objet_de_test; |
struct_objet *objet_de_test; |
Line 1500 typedef struct liste_pile_systeme
|
Line 1545 typedef struct liste_pile_systeme
|
|
|
unsigned long adresse_retour; |
unsigned long adresse_retour; |
unsigned long niveau_courant; |
unsigned long niveau_courant; |
struct_objet *pointeur_adresse_retour; |
struct_liste_chainee *pointeur_objet_retour; |
} struct_liste_pile_systeme; |
} struct_liste_pile_systeme; |
#endif |
#endif |
|
|
Line 1738 typedef struct arbre_variables
|
Line 1783 typedef struct arbre_variables
|
|
|
struct liste_variables *feuille; |
struct liste_variables *feuille; |
struct liste_variables_statiques *feuille_statique; |
struct liste_variables_statiques *feuille_statique; |
struct liste_variables_partagees **feuille_partagee; |
|
|
|
pthread_mutex_t mutex_feuille_partagee; |
|
} struct_arbre_variables; |
} struct_arbre_variables; |
|
|
|
typedef struct arbre_variables_partagees |
|
{ |
|
unsigned int noeuds_utilises; |
|
// Nombre de noeuds utilisés dans le |
|
// tableau **noeuds |
|
signed int indice_tableau_pere; |
|
// Position de la structure dans le |
|
// tableau **noeuds du père |
|
|
|
struct arbre_variables_partagees *noeud_pere; |
|
struct arbre_variables_partagees **noeuds; |
|
|
|
struct liste_variables_partagees *feuille; |
|
|
|
pthread_mutex_t mutex_feuille; |
|
} struct_arbre_variables_partagees; |
|
|
#define INITIALISATION_MUTEX(mutex) \ |
#define INITIALISATION_MUTEX(mutex) \ |
do { \ |
do { \ |
pthread_mutexattr_t attributs_mutex; \ |
pthread_mutexattr_t attributs_mutex; \ |
Line 1801 typedef struct liste_variables_partagees
|
Line 1860 typedef struct liste_variables_partagees
|
struct liste_variables_partagees *suivant; |
struct liste_variables_partagees *suivant; |
struct liste_variables_partagees *precedent; |
struct liste_variables_partagees *precedent; |
struct liste_variables_partagees *reference; |
struct liste_variables_partagees *reference; |
struct_arbre_variables *feuille; |
struct_arbre_variables_partagees *feuille; |
struct_variable_partagee *variable; |
struct_variable_partagee *variable; |
|
pthread_t tid; |
|
pid_t pid; |
} struct_liste_variables_partagees; |
} struct_liste_variables_partagees; |
#endif |
#endif |
|
|
Line 1923 typedef struct processus
|
Line 1984 typedef struct processus
|
struct_liste_variables *l_liste_variables_par_niveau; |
struct_liste_variables *l_liste_variables_par_niveau; |
struct_liste_variables_statiques |
struct_liste_variables_statiques |
*l_liste_variables_statiques; |
*l_liste_variables_statiques; |
|
|
|
struct_arbre_variables_partagees |
|
**s_arbre_variables_partagees; |
struct_liste_variables_partagees |
struct_liste_variables_partagees |
*l_liste_variables_partagees; |
**l_liste_variables_partagees; |
|
|
logical1 niveau_supprime; |
logical1 niveau_supprime; |
|
|
Line 2306 typedef struct processus
|
Line 2370 typedef struct processus
|
struct_arbre_variables *variables_noeud[TAILLE_CACHE]; |
struct_arbre_variables *variables_noeud[TAILLE_CACHE]; |
int pointeur_variables_noeud; |
int pointeur_variables_noeud; |
|
|
|
struct_arbre_variables_partagees |
|
*variables_partagees_noeud[TAILLE_CACHE]; |
|
int pointeur_variables_partagees_noeud; |
|
|
struct_liste_variables *variables_feuille[TAILLE_CACHE]; |
struct_liste_variables *variables_feuille[TAILLE_CACHE]; |
int pointeur_variables_feuille; |
int pointeur_variables_feuille; |
|
|
Line 2314 typedef struct processus
|
Line 2382 typedef struct processus
|
|
|
struct_arbre_variables **variables_tableau_noeuds[TAILLE_CACHE]; |
struct_arbre_variables **variables_tableau_noeuds[TAILLE_CACHE]; |
int pointeur_variables_tableau_noeuds; |
int pointeur_variables_tableau_noeuds; |
|
|
|
struct_arbre_variables_partagees |
|
**variables_tableau_noeuds_partages |
|
[TAILLE_CACHE]; |
|
int pointeur_variables_tableau_noeuds_partages; |
} struct_processus; |
} struct_processus; |
#endif |
#endif |
|
|
Line 2388 void instruction_ceil(struct_processus *
|
Line 2461 void instruction_ceil(struct_processus *
|
void instruction_centr(struct_processus *s_etat_processus); |
void instruction_centr(struct_processus *s_etat_processus); |
void instruction_cf(struct_processus *s_etat_processus); |
void instruction_cf(struct_processus *s_etat_processus); |
void instruction_chr(struct_processus *s_etat_processus); |
void instruction_chr(struct_processus *s_etat_processus); |
|
void instruction_cipher(struct_processus *s_etat_processus); |
void instruction_clear(struct_processus *s_etat_processus); |
void instruction_clear(struct_processus *s_etat_processus); |
void instruction_cllcd(struct_processus *s_etat_processus); |
void instruction_cllcd(struct_processus *s_etat_processus); |
void instruction_clmf(struct_processus *s_etat_processus); |
void instruction_clmf(struct_processus *s_etat_processus); |
Line 2448 void instruction_detach(struct_processus
|
Line 2522 void instruction_detach(struct_processus
|
void instruction_dft(struct_processus *s_etat_processus); |
void instruction_dft(struct_processus *s_etat_processus); |
void instruction_dgtiz(struct_processus *s_etat_processus); |
void instruction_dgtiz(struct_processus *s_etat_processus); |
void instruction_diag_fleche(struct_processus *s_etat_processus); |
void instruction_diag_fleche(struct_processus *s_etat_processus); |
|
void instruction_digest(struct_processus *s_etat_processus); |
void instruction_disp(struct_processus *s_etat_processus); |
void instruction_disp(struct_processus *s_etat_processus); |
void instruction_division(struct_processus *s_etat_processus); |
void instruction_division(struct_processus *s_etat_processus); |
void instruction_do(struct_processus *s_etat_processus); |
void instruction_do(struct_processus *s_etat_processus); |
Line 2993 void liberation_arbre_instructions(struc
|
Line 3068 void liberation_arbre_instructions(struc
|
struct_instruction *arbre); |
struct_instruction *arbre); |
void liberation_arbre_variables(struct_processus *s_etat_processus, |
void liberation_arbre_variables(struct_processus *s_etat_processus, |
struct_arbre_variables *arbre, logical1 definitions); |
struct_arbre_variables *arbre, logical1 definitions); |
|
void liberation_arbre_variables_partagees(struct_processus *s_etat_processus, |
|
struct_arbre_variables_partagees *arbre); |
void liberation_contexte_cas(struct_processus *s_etat_processus); |
void liberation_contexte_cas(struct_processus *s_etat_processus); |
void liberation_generateur_aleatoire(struct_processus *s_etat_processus); |
void liberation_generateur_aleatoire(struct_processus *s_etat_processus); |
|
void liberation_mutexes_arbre_variables_partagees(struct_processus |
|
*s_etat_processus, struct_arbre_variables_partagees *l_element_courant); |
void liberation_threads(struct_processus *s_etat_processus); |
void liberation_threads(struct_processus *s_etat_processus); |
void liberation_profil(struct_processus *s_etat_processus); |
void liberation_profil(struct_processus *s_etat_processus); |
void localisation_courante(struct_processus *s_etat_processus); |
void localisation_courante(struct_processus *s_etat_processus); |
Line 3139 unsigned char *analyse_algebrique(struct
|
Line 3218 unsigned char *analyse_algebrique(struct
|
unsigned char *chaine_algebrique, struct_liste_chainee **l_base_liste); |
unsigned char *chaine_algebrique, struct_liste_chainee **l_base_liste); |
unsigned char *analyse_flux(struct_processus *s_etat_processus, |
unsigned char *analyse_flux(struct_processus *s_etat_processus, |
unsigned char *flux, long longueur); |
unsigned char *flux, long longueur); |
unsigned char *recherche_chemin_fichiers_temporaires(struct_processus |
unsigned char *chiffrement(const EVP_CIPHER *type_chiffrement, |
*s_etat_processus); |
logical1 encodage, unsigned char *message, unsigned int |
|
longueur_message, unsigned char *clef, unsigned int longueur_clef, |
|
unsigned char *vecteur_initialisation, |
|
unsigned int *longueur_message_chiffre); |
unsigned char *compactage(unsigned char *chaine); |
unsigned char *compactage(unsigned char *chaine); |
unsigned char *conversion_majuscule(unsigned char *chaine); |
unsigned char *conversion_majuscule(unsigned char *chaine); |
unsigned char *creation_nom_fichier(struct_processus *s_etat_processus, |
unsigned char *creation_nom_fichier(struct_processus *s_etat_processus, |
Line 3153 unsigned char *formateur(struct_processu
|
Line 3235 unsigned char *formateur(struct_processu
|
unsigned char *formateur_fichier(struct_processus *s_etat_processus, |
unsigned char *formateur_fichier(struct_processus *s_etat_processus, |
struct_objet *s_objet, struct_objet *s_format, |
struct_objet *s_objet, struct_objet *s_format, |
long longueur, long longueur_champ, unsigned char format, |
long longueur, long longueur_champ, unsigned char format, |
unsigned char type, long *longueur_effective, long *recursivite); |
unsigned char type, long *longueur_effective, long *recursivite, |
|
logical1 export_fichier); |
unsigned char *formateur_flux(struct_processus *s_etat_processus, |
unsigned char *formateur_flux(struct_processus *s_etat_processus, |
unsigned char *donnees, long *longueur); |
unsigned char *donnees, long *longueur); |
unsigned char *formateur_fichier_nombre(struct_processus *s_etat_processus, |
unsigned char *formateur_fichier_nombre(struct_processus *s_etat_processus, |
void *valeur_numerique, unsigned char type, |
void *valeur_numerique, unsigned char type, |
long longueur, long longueur_champ, unsigned char format); |
long longueur, long longueur_champ, unsigned char format); |
unsigned char *formateur_fichier_binaire_nombre(struct_processus |
unsigned char *formateur_fichier_binaire_nombre(struct_processus |
*s_etat_processus, void *valeur_numerique, unsigned char type, |
*s_etat_processus, void *valeur_numerique, unsigned char type_entree, |
long longueur, long *longueur_conversion); |
unsigned char type, long longueur, long *longueur_conversion); |
unsigned char *formateur_fichier_reel(struct_processus *s_etat_processus, |
unsigned char *formateur_fichier_reel(struct_processus *s_etat_processus, |
void *valeur_numerique, unsigned char type, |
void *valeur_numerique, unsigned char type, |
long longueur, long longueur_champ, unsigned char format); |
long longueur, long longueur_champ, unsigned char format); |
Line 3173 unsigned char *messages(struct_processus
|
Line 3256 unsigned char *messages(struct_processus
|
unsigned char *pointeur_ieme_caractere(struct_processus *s_etat_processus, |
unsigned char *pointeur_ieme_caractere(struct_processus *s_etat_processus, |
unsigned char *chaine, integer8 position); |
unsigned char *chaine, integer8 position); |
unsigned char *purification_chaine(unsigned char *chaine); |
unsigned char *purification_chaine(unsigned char *chaine); |
|
unsigned char *recherche_chemin_fichiers_temporaires(struct_processus |
|
*s_etat_processus); |
unsigned char *reencodage(struct_processus *s_etat_processus, |
unsigned char *reencodage(struct_processus *s_etat_processus, |
unsigned char *chaine_entree, unsigned char *codage_entree, |
unsigned char *chaine_entree, unsigned char *codage_entree, |
unsigned char *codage_sortie); |
unsigned char *codage_sortie); |
Line 3227 logical1 retrait_variable(struct_process
|
Line 3312 logical1 retrait_variable(struct_process
|
logical1 retrait_variables_par_niveau(struct_processus *s_etat_processus); |
logical1 retrait_variables_par_niveau(struct_processus *s_etat_processus); |
logical1 retrait_variable_partagee(struct_processus *s_etat_processus, |
logical1 retrait_variable_partagee(struct_processus *s_etat_processus, |
unsigned char *nom_variable, union_position_variable position); |
unsigned char *nom_variable, union_position_variable position); |
logical1 retrait_variables_statiques_locales( |
logical1 retrait_variables_partagees_locales( |
struct_processus *s_etat_processus); |
struct_processus *s_etat_processus); |
logical1 retrait_variable_statique(struct_processus *s_etat_processus, |
logical1 retrait_variable_statique(struct_processus *s_etat_processus, |
unsigned char *nom_variable, union_position_variable position); |
unsigned char *nom_variable, union_position_variable position); |
|
logical1 retrait_variables_statiques_locales( |
|
struct_processus *s_etat_processus); |
logical1 sequenceur(struct_processus *s_etat_processus); |
logical1 sequenceur(struct_processus *s_etat_processus); |
logical1 sequenceur_optimise(struct_processus *s_etat_processus); |
logical1 sequenceur_optimise(struct_processus *s_etat_processus); |
#endif |
#endif |
Line 3244 logical1 sequenceur_optimise(struct_proc
|
Line 3331 logical1 sequenceur_optimise(struct_proc
|
logical1 depassement_addition(integer8 *a, integer8 *b, integer8 *resultat); |
logical1 depassement_addition(integer8 *a, integer8 *b, integer8 *resultat); |
logical1 depassement_multiplication(integer8 *a, integer8 *b, |
logical1 depassement_multiplication(integer8 *a, integer8 *b, |
integer8 *resultat); |
integer8 *resultat); |
|
logical1 depassement_soustraction(integer8 *a, integer8 *b, integer8 *resultat); |
logical1 depassement_puissance(integer8 *a, integer8 *b, integer8 *resultat); |
logical1 depassement_puissance(integer8 *a, integer8 *b, integer8 *resultat); |
|
|
#ifndef RPLARGS |
#ifndef RPLARGS |
Line 3253 logical1 recherche_variable(struct_proce
|
Line 3341 logical1 recherche_variable(struct_proce
|
unsigned char *nom_variable); |
unsigned char *nom_variable); |
logical1 recherche_variable_globale(struct_processus *s_etat_processus, |
logical1 recherche_variable_globale(struct_processus *s_etat_processus, |
unsigned char *nom_variable); |
unsigned char *nom_variable); |
logical1 recherche_variable_partagee(struct_processus *s_etat_processus, |
|
unsigned char *nom_variable, union_position_variable position, |
|
unsigned char origine); |
|
logical1 test_cfsf(struct_processus *s_etat_processus, |
logical1 test_cfsf(struct_processus *s_etat_processus, |
unsigned char indice_drapeau); |
unsigned char indice_drapeau); |
logical1 test_expression_rpn(unsigned char *chaine); |
logical1 test_expression_rpn(unsigned char *chaine); |
Line 3286 int alsprintf(unsigned char **strp, cons
|
Line 3371 int alsprintf(unsigned char **strp, cons
|
int interruption_violation_access(void *adresse_fautive, int gravite); |
int interruption_violation_access(void *adresse_fautive, int gravite); |
#ifndef RPLARGS |
#ifndef RPLARGS |
int liste_variables(struct_processus *s_etat_processus, |
int liste_variables(struct_processus *s_etat_processus, |
struct_tableau_variables *tableau, int position, |
struct_tableau_variables *tableau); |
struct_arbre_variables *l_element_courant); |
int nombre_variables(struct_processus *s_etat_processus); |
int nombre_variables(struct_processus *s_etat_processus, |
|
struct_arbre_variables *l_element_courant); |
|
int readline_analyse_syntaxique(int count, int key); |
int readline_analyse_syntaxique(int count, int key); |
int readline_effacement(int count, int key); |
int readline_effacement(int count, int key); |
#endif |
#endif |
Line 3381 struct_objet *allocation(struct_processu
|
Line 3464 struct_objet *allocation(struct_processu
|
#ifndef RPLARGS |
#ifndef RPLARGS |
struct_objet *formateur_date(struct_processus *s_etat_processus, |
struct_objet *formateur_date(struct_processus *s_etat_processus, |
struct timeval *temps); |
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 *lecture_pipe(struct_processus *s_etat_processus, int pipe); |
struct_objet *parametres_sql(struct_processus *s_etat_processus, |
struct_objet *parametres_sql(struct_processus *s_etat_processus, |
struct_objet *s_parametres); |
struct_objet *s_parametres); |
Line 3394 struct_arbre_variables **allocation_tabl
|
Line 3479 struct_arbre_variables **allocation_tabl
|
/* |
/* |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
Fonctions renvoyant un pointeur sur une *struct_liste_variables_statiques |
Fonctions renvoyant un pointeur sur une *struct_liste_variables_statiques |
|
ou *struct_liste_variables_partagees |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
*/ |
*/ |
|
|
struct_liste_variables_statiques *recherche_variable_statique(struct_processus |
struct_liste_variables_statiques *recherche_variable_statique(struct_processus |
*s_etat_processus, unsigned char *nom_variable, |
*s_etat_processus, unsigned char *nom_variable, |
union_position_variable position, |
union_position_variable position, unsigned char origine); |
unsigned char origine); |
struct_liste_variables_partagees *recherche_variable_partagee(struct_processus |
|
*s_etat_processus, unsigned char *nom_variable, |
|
union_position_variable position, unsigned char origine); |
#endif |
#endif |
|
|
/* |
/* |