version 1.1.1.1, 2010/01/26 15:22:44
|
version 1.28, 2010/04/29 07:30:58
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.0.9 |
RPL/2 (R) version 4.0.15 |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 22
|
Line 22
|
|
|
#ifndef INCLUSION_RPL |
#ifndef INCLUSION_RPL |
#define INCLUSION_RPL |
#define INCLUSION_RPL |
|
|
#define _GNU_SOURCE |
#define _GNU_SOURCE |
|
#define _REENTRANT |
|
|
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Line 37
|
Line 40
|
#include <strings.h> |
#include <strings.h> |
#include <syslog.h> |
#include <syslog.h> |
#include <errno.h> |
#include <errno.h> |
|
#include <stdarg.h> |
|
|
#ifndef RPLARGS |
#ifndef RPLARGS |
# include <sys/resource.h> |
# include <sys/resource.h> |
Line 70
|
Line 74
|
# include "termcap.h" |
# include "termcap.h" |
# include "iconv.h" |
# include "iconv.h" |
|
|
|
# include "openssl/evp.h" |
|
# include "sqlite3.h" |
|
|
# define HAVE_INLINE |
# define HAVE_INLINE |
# define GSL_RANGE_CHECK_OFF |
# define GSL_RANGE_CHECK_OFF |
# include "gsl/gsl_cdf.h" |
# include "gsl/gsl_cdf.h" |
Line 86
|
Line 93
|
# include <ieeefp.h> |
# include <ieeefp.h> |
#endif |
#endif |
|
|
|
// Définition spécifique à Hurd |
|
#ifndef PIPE_BUF |
|
# define fpathconf (".", _PC_PIPE_BUF) |
|
#endif |
|
|
#ifdef MYSQL_SUPPORT |
#ifdef MYSQL_SUPPORT |
# include <mysql.h> |
# include <mysql.h> |
# define mysqlclose(arg) mysql_close(arg.mysql) |
# define mysqlclose(arg) mysql_close(arg.mysql) |
Line 100
|
Line 112
|
# define postgresqlclose(arg) |
# define postgresqlclose(arg) |
#endif |
#endif |
|
|
#ifdef LIBRPL |
#include "librplprototypes.h" |
# include "librplprototypes.h" |
|
#endif |
|
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Line 111
|
Line 121
|
*/ |
*/ |
|
|
#ifndef RPLARGS |
#ifndef RPLARGS |
|
// Arrêt par STOP |
# define SIGFSTOP SIGUSR1 |
# define SIGFSTOP SIGUSR1 |
|
// Démarrage d'un processus fils |
# define SIGSTART SIGUSR2 |
# define SIGSTART SIGUSR2 |
|
// Injection de données |
# define SIGINJECT SIGQUIT |
# define SIGINJECT SIGQUIT |
|
// Arrêt général |
# define SIGABORT SIGPROF |
# define SIGABORT SIGPROF |
|
// Arrêt d'un processus fils depuis autre chose que STOP |
|
# define SIGFABORT SIGPOLL |
# define d_NOMBRE_INTERRUPTIONS 64 |
# define d_NOMBRE_INTERRUPTIONS 64 |
#endif |
#endif |
|
|
Line 175 typedef unsigned char t_8_bits;
|
Line 191 typedef unsigned char t_8_bits;
|
*/ |
*/ |
|
|
#ifndef RPLARGS |
#ifndef RPLARGS |
|
# ifdef SEMAPHORES_NOMMES |
|
# define LONGUEUR_NOM_SEMAPHORE 64 |
|
# endif |
# ifndef MAIN_RPL |
# ifndef MAIN_RPL |
extern jmp_buf contexte; |
extern jmp_buf contexte; |
extern jmp_buf contexte_initial; |
extern jmp_buf contexte_initial; |
|
|
|
# ifdef SEMAPHORES_NOMMES |
|
extern pthread_mutex_t mutex_sem; |
|
# endif |
|
|
|
extern pthread_key_t semaphore_fork_processus_courant; |
|
|
|
extern sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_liste_threads; |
|
|
extern pthread_key_t semaphore_fork_processus_courant; |
extern sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_gestionnaires_signaux; |
|
|
|
extern sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_gestionnaires_signaux_atomique; |
|
|
extern sem_t semaphore_liste_threads; |
# ifdef SEMAPHORES_NOMMES |
extern sem_t semaphore_gestionnaires_signaux; |
// 0 -> liste_threads |
extern sem_t semaphore_gestionnaires_signaux_atomique; |
// 1 -> gestionnaire_signaux |
|
// 2 -> gestionnaire_signaux_atomique |
|
// 3 -> &((*s_etat_processus).semaphore_fork) |
|
extern unsigned char noms_semaphores[4][LONGUEUR_NOM_SEMAPHORE]; |
|
extern sem_t *semaphores_nommes[4]; |
|
# endif |
# else |
# else |
jmp_buf contexte; |
jmp_buf contexte; |
jmp_buf contexte_initial; |
jmp_buf contexte_initial; |
|
|
pthread_key_t semaphore_fork_processus_courant; |
# ifdef SEMAPHORES_NOMMES |
|
pthread_mutex_t mutex_sem = PTHREAD_MUTEX_INITIALIZER; |
|
# endif |
|
|
|
pthread_key_t semaphore_fork_processus_courant; |
|
|
|
sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_liste_threads; |
|
|
|
sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_gestionnaires_signaux; |
|
|
|
sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_gestionnaires_signaux_atomique; |
|
|
sem_t semaphore_liste_threads; |
# ifdef SEMAPHORES_NOMMES |
sem_t semaphore_gestionnaires_signaux; |
unsigned char noms_semaphores[4][LONGUEUR_NOM_SEMAPHORE]; |
sem_t semaphore_gestionnaires_signaux_atomique; |
sem_t *semaphores_nommes[4]; |
|
# endif |
# endif |
# endif |
#endif |
#endif |
|
|
|
#ifdef SEMAPHORES_NOMMES |
|
enum t_semaphore { sem_liste_threads = 0, |
|
sem_gestionnaires_signaux = 1, |
|
sem_gestionnaires_signaux_atomique = 2, |
|
sem_fork = 3 }; |
|
|
|
sem_t *sem_init2(unsigned int valeur, enum t_semaphore semaphore); |
|
int sem_destroy2(sem_t *semaphore_p, enum t_semaphore semaphore); |
|
int sem_getvalue2(sem_t *semaphore, int *valeur); |
|
|
|
#define sem_getvalue(semaphore, value) sem_getvalue2(semaphore, value) |
|
#define sem_post(semaphore) \ |
|
({ int r; pthread_mutex_lock(&mutex_sem); \ |
|
r = sem_post(semaphore), pthread_mutex_unlock(&mutex_sem); r; }) |
|
#define sem_wait(semaphore) \ |
|
({ int r; pthread_mutex_lock(&mutex_sem); \ |
|
r = sem_wait(semaphore), pthread_mutex_unlock(&mutex_sem); r; }) |
|
#define sem_trywait(semaphore) \ |
|
({ int r; pthread_mutex_lock(&mutex_sem); \ |
|
r = sem_trywait(semaphore), pthread_mutex_unlock(&mutex_sem); r; }) |
|
#endif |
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Macros |
Macros |
Line 276 typedef unsigned char t_8_bits;
|
Line 367 typedef unsigned char t_8_bits;
|
__VA_ARGS__; fflush(stdout); \ |
__VA_ARGS__; fflush(stdout); \ |
pthread_kill(pthread_self(), SIGBUS); }} while(0) |
pthread_kill(pthread_self(), SIGBUS); }} while(0) |
|
|
|
#define NOTICE(m) \ |
|
do \ |
|
{ \ |
|
ufprintf(stderr, "[%d-%llu] %s() from %s at line %d: %s\n", \ |
|
getpid(), (unsigned long long) pthread_self(), \ |
|
__FUNCTION__, __FILE__, __LINE__, m); \ |
|
fflush(stderr); \ |
|
} while(0) |
|
|
|
#ifdef __GLIBC__ |
|
#include <execinfo.h> |
#define BACKTRACE(n) \ |
#define BACKTRACE(n) \ |
do \ |
do \ |
{ \ |
{ \ |
Line 291 typedef unsigned char t_8_bits;
|
Line 393 typedef unsigned char t_8_bits;
|
if (appels != NULL) \ |
if (appels != NULL) \ |
{ \ |
{ \ |
for(i = 0; i < nb; i++) \ |
for(i = 0; i < nb; i++) \ |
uprintf("%s\n", appels[i]); \ |
uprintf(" %s\n", appels[i]); \ |
free(appels); \ |
free(appels); \ |
} \ |
} \ |
else \ |
else \ |
Line 300 typedef unsigned char t_8_bits;
|
Line 402 typedef unsigned char t_8_bits;
|
fflush(stdout); \ |
fflush(stdout); \ |
pthread_mutex_unlock(&mutex); \ |
pthread_mutex_unlock(&mutex); \ |
} while(0) |
} while(0) |
|
#else |
#define NOTICE(m) \ |
#define BACKTRACE(n) NOTICE("BACKTRACE only defined in glibc") |
do \ |
#endif |
{ \ |
|
ufprintf(stderr, "[%d-%llu] %s() from %s at line %d: %s\n", \ |
|
getpid(), pthread_self(), __FUNCTION__, __FILE__, __LINE__, \ |
|
m); \ |
|
fflush(stderr); \ |
|
} while(0) |
|
|
|
|
|
/* |
/* |
Line 317 typedef unsigned char t_8_bits;
|
Line 413 typedef unsigned char t_8_bits;
|
================================================================================ |
================================================================================ |
*/ |
*/ |
|
|
|
#ifdef DEBUG_MEMOIRE |
|
void *debug_memoire_ajout(size_t taille, const unsigned char *fonction, |
|
unsigned long ligne, const unsigned char *argument); |
|
void *debug_memoire_modification(void *pointeur, size_t taille, |
|
const unsigned char *fonction, unsigned long ligne, |
|
const unsigned char *argument); |
|
void debug_memoire_retrait(void *ptr); |
|
|
|
#define malloc(s) debug_memoire_ajout(s, __FUNCTION__, __LINE__, #s) |
|
#define free(s) debug_memoire_retrait(s) |
|
#define realloc(s, t) debug_memoire_modification(s, t, \ |
|
__FUNCTION__, __LINE__, #t) |
|
#endif |
|
|
#ifdef DEBUG_RETURN |
#ifdef DEBUG_RETURN |
#define return uprintf("[%d] Return from <%s()> at line #%d " \ |
#define return uprintf("[%d] Return from <%s()> at line #%d " \ |
"(%s [%d])\n", (int) getpid(), __FUNCTION__, \ |
"(%s [%d])\n", (int) getpid(), __FUNCTION__, \ |
__LINE__, strerror(errno), errno); fflush(stdout); errno=0; return |
__LINE__, strerror(errno), errno); fflush(stdout); errno = 0; return |
#endif |
#endif |
|
|
#ifdef DEBUG_MUTEX |
#ifdef DEBUG_MUTEX |
Line 460 typedef unsigned char t_8_bits;
|
Line 570 typedef unsigned char t_8_bits;
|
# define d_es_nombre_max_descripteurs 2011 |
# define d_es_nombre_max_descripteurs 2011 |
# define d_es_interruption_invalide 2012 |
# define d_es_interruption_invalide 2012 |
# define d_es_contexte 2013 |
# define d_es_contexte 2013 |
|
# define d_es_somme_controle 2014 |
#endif |
#endif |
|
|
/* |
/* |
Line 592 typedef unsigned char t_8_bits;
|
Line 703 typedef unsigned char t_8_bits;
|
# define d_ex_locales 76 |
# define d_ex_locales 76 |
# define d_ex_representation 77 |
# define d_ex_representation 77 |
# define d_ex_erreur_profilage 78 |
# define d_ex_erreur_profilage 78 |
|
# define d_ex_enregistrement_inexistant 79 |
|
# define d_ex_clef_inexistante 80 |
|
# define d_ex_nom_implicite 81 |
#endif |
#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 |
|
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Line 820 typedef struct descripteur_fichier
|
Line 923 typedef struct descripteur_fichier
|
unsigned long identifiant; |
unsigned long identifiant; |
|
|
unsigned char effacement; |
unsigned char effacement; |
|
unsigned char type; // C (file *) ou S (sqlite *) |
unsigned char *nom; |
unsigned char *nom; |
|
|
pid_t pid; |
pid_t pid; |
pthread_t tid; |
pthread_t tid; |
|
|
file *descripteur; |
file *descripteur_c; |
|
sqlite3 *descripteur_sqlite; |
} struct_descripteur_fichier; |
} struct_descripteur_fichier; |
#endif |
#endif |
|
|
Line 996 typedef struct descripteur_thread
|
Line 1101 typedef struct descripteur_thread
|
|
|
struct_objet *argument; |
struct_objet *argument; |
|
|
pid_t pid; |
pid_t pid; |
volatile pthread_t tid; |
volatile pthread_t tid; |
|
|
pthread_t thread_pere; |
pthread_t thread_pere; |
|
|
Line 1331 typedef struct processus
|
Line 1436 typedef struct processus
|
unsigned char *nom_fichier_source; |
unsigned char *nom_fichier_source; |
unsigned char *nom_fichier_historique; |
unsigned char *nom_fichier_historique; |
|
|
|
unsigned char autorisation_conversion_chaine; /*Y/N*/ |
unsigned char autorisation_empilement_programme; /*Y/N*/ |
unsigned char autorisation_empilement_programme; /*Y/N*/ |
unsigned char autorisation_evaluation_nom; /*Y/N*/ |
unsigned char autorisation_evaluation_nom; /*Y/N*/ |
|
unsigned char autorisation_nom_implicite; /*Y/N*/ |
|
unsigned char evaluation_forcee; /*Y/N*/ |
unsigned char instruction_valide; /*Y/N*/ |
unsigned char instruction_valide; /*Y/N*/ |
unsigned char instruction_intrinseque; /*Y/I/N*/ |
unsigned char instruction_intrinseque; /*Y/I/N*/ |
unsigned char test_instruction; /*Y/N*/ |
unsigned char test_instruction; /*Y/N*/ |
Line 1343 typedef struct processus
|
Line 1451 typedef struct processus
|
unsigned char mode_interactif; /*Y/N*/ |
unsigned char mode_interactif; /*Y/N*/ |
unsigned char mode_evaluation_expression; /*Y/N*/ |
unsigned char mode_evaluation_expression; /*Y/N*/ |
unsigned char traitement_cycle_exit; /*N/E/C*/ |
unsigned char traitement_cycle_exit; /*N/E/C*/ |
unsigned char recherche_types_speciaux; /*Y/N*/ |
|
|
|
unsigned long position_courante; |
unsigned long position_courante; |
unsigned long longueur_definitions_chainees; |
unsigned long longueur_definitions_chainees; |
Line 1395 typedef struct processus
|
Line 1502 typedef struct processus
|
pthread_t thread_fusible; |
pthread_t thread_fusible; |
pthread_t thread_surveille_par_fusible; |
pthread_t thread_surveille_par_fusible; |
|
|
|
# ifndef Cygwin |
stack_t pile_signal; |
stack_t pile_signal; |
|
# else |
|
# define SA_ONSTACK 0 |
|
# define RTLD_LOCAL 0 |
|
# endif |
|
|
/* Contextes */ |
/* Contextes */ |
|
|
Line 1654 typedef struct processus
|
Line 1766 typedef struct processus
|
unsigned char traitement_interruption; /* Y/N */ |
unsigned char traitement_interruption; /* Y/N */ |
unsigned char traitement_interruptible; /* Y/N */ |
unsigned char traitement_interruptible; /* Y/N */ |
|
|
|
struct_objet *at_exit; |
|
|
/* Variables volatiles */ |
/* Variables volatiles */ |
|
|
volatile sig_atomic_t var_volatile_alarme; |
volatile sig_atomic_t var_volatile_alarme; |
Line 1667 typedef struct processus
|
Line 1781 typedef struct processus
|
volatile sig_atomic_t var_volatile_processus_pere; |
volatile sig_atomic_t var_volatile_processus_pere; |
volatile sig_atomic_t var_volatile_recursivite; |
volatile sig_atomic_t var_volatile_recursivite; |
|
|
|
volatile sig_atomic_t arret_depuis_abort; |
|
|
volatile int var_volatile_exception_gsl; |
volatile int var_volatile_exception_gsl; |
|
|
/* Autres */ |
/* Autres */ |
|
|
|
char *rpl_home; |
|
|
gsl_rng *generateur_aleatoire; |
gsl_rng *generateur_aleatoire; |
const gsl_rng_type *type_generateur_aleatoire; |
const gsl_rng_type *type_generateur_aleatoire; |
|
|
Line 1711 typedef struct processus
|
Line 1829 typedef struct processus
|
pthread_mutex_t mutex; |
pthread_mutex_t mutex; |
|
|
// Sémaphore autorisant les fork() |
// Sémaphore autorisant les fork() |
sem_t semaphore_fork; |
sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_fork; |
|
|
/* Mutexes */ |
/* Mutexes */ |
|
|
Line 1835 void instruction_asl(struct_processus *s
|
Line 1957 void instruction_asl(struct_processus *s
|
void instruction_asr(struct_processus *s_etat_processus); |
void instruction_asr(struct_processus *s_etat_processus); |
void instruction_atan(struct_processus *s_etat_processus); |
void instruction_atan(struct_processus *s_etat_processus); |
void instruction_atanh(struct_processus *s_etat_processus); |
void instruction_atanh(struct_processus *s_etat_processus); |
|
void instruction_atexit(struct_processus *s_etat_processus); |
void instruction_autoscale(struct_processus *s_etat_processus); |
void instruction_autoscale(struct_processus *s_etat_processus); |
void instruction_axes(struct_processus *s_etat_processus); |
void instruction_axes(struct_processus *s_etat_processus); |
|
|
Line 1854 void instruction_clear(struct_processus
|
Line 1977 void instruction_clear(struct_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); |
void instruction_close(struct_processus *s_etat_processus); |
void instruction_close(struct_processus *s_etat_processus); |
|
void instruction_clratexit(struct_processus *s_etat_processus); |
void instruction_clrcntxt(struct_processus *s_etat_processus); |
void instruction_clrcntxt(struct_processus *s_etat_processus); |
void instruction_clrerr(struct_processus *s_etat_processus); |
void instruction_clrerr(struct_processus *s_etat_processus); |
void instruction_clrfuse(struct_processus *s_etat_processus); |
void instruction_clrfuse(struct_processus *s_etat_processus); |
Line 2004 void instruction_ifft(struct_processus *
|
Line 2128 void instruction_ifft(struct_processus *
|
void instruction_ift(struct_processus *s_etat_processus); |
void instruction_ift(struct_processus *s_etat_processus); |
void instruction_ifte(struct_processus *s_etat_processus); |
void instruction_ifte(struct_processus *s_etat_processus); |
void instruction_im(struct_processus *s_etat_processus); |
void instruction_im(struct_processus *s_etat_processus); |
|
void instruction_implicit(struct_processus *s_etat_processus); |
void instruction_in(struct_processus *s_etat_processus); |
void instruction_in(struct_processus *s_etat_processus); |
void instruction_incr(struct_processus *s_etat_processus); |
void instruction_incr(struct_processus *s_etat_processus); |
void instruction_indep(struct_processus *s_etat_processus); |
void instruction_indep(struct_processus *s_etat_processus); |
Line 2355 void conversion_hms_vers_decimal(real8 *
|
Line 2480 void conversion_hms_vers_decimal(real8 *
|
void conversion_radians_vers_degres(real8 *angle); |
void conversion_radians_vers_degres(real8 *angle); |
void correction_formateur_tex(struct_processus *s_etat_processus, |
void correction_formateur_tex(struct_processus *s_etat_processus, |
unsigned char **ligne); |
unsigned char **ligne); |
|
void debug_memoire_verification(struct_processus *s_etat_processus); |
void depilement_pile_systeme(struct_processus *s_etat_processus); |
void depilement_pile_systeme(struct_processus *s_etat_processus); |
void derivation(struct_processus *s_etat_processus, |
void derivation(struct_processus *s_etat_processus, |
struct_objet **s_expression); |
struct_objet **s_expression); |
Line 2364 void deverrouillage_threads_concurrents(
|
Line 2490 void deverrouillage_threads_concurrents(
|
void ecriture_pile(struct_processus *s_etat_processus, file *flux, |
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, unsigned long niveau_courant); |
void ecriture_profil(struct_processus *s_etat_processus); |
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 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, unsigned long duree); |
void evaluation_romberg(struct_processus *s_etat_processus, |
void evaluation_romberg(struct_processus *s_etat_processus, |
Line 2492 complex16 sommation_vecteur_complexe(com
|
Line 2619 complex16 sommation_vecteur_complexe(com
|
*/ |
*/ |
|
|
#ifndef RPLARGS |
#ifndef RPLARGS |
int rplinit(int argc, char *argv[], unsigned char ***resultats); |
int rplinit(int argc, char *argv[], unsigned char ***resultats, char *rpl_home); |
#endif |
#endif |
|
|
/* |
/* |
Line 2595 logical1 analyse_syntaxique(struct_proce
|
Line 2722 logical1 analyse_syntaxique(struct_proce
|
logical1 caracteristiques_fichier(struct_processus *s_etat_processus, |
logical1 caracteristiques_fichier(struct_processus *s_etat_processus, |
unsigned char *nom, logical1 *existence, logical1 *ouverture, |
unsigned char *nom, logical1 *existence, logical1 *ouverture, |
unsigned long *unite); |
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, |
logical1 creation_variable(struct_processus *s_etat_processus, |
struct_variable *s_variable, |
struct_variable *s_variable, |
unsigned char autorisation_creation_variable_statique, |
unsigned char autorisation_creation_variable_statique, |
Line 2614 logical1 empilement_pile_last(struct_pro
|
Line 2743 logical1 empilement_pile_last(struct_pro
|
unsigned long nombre_arguments); |
unsigned long nombre_arguments); |
logical1 evaluation(struct_processus *s_etat_processus, struct_objet *s_objet, |
logical1 evaluation(struct_processus *s_etat_processus, struct_objet *s_objet, |
unsigned char type_evaluation); |
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 recherche_instruction_suivante(struct_processus *s_etat_processus); |
logical1 retrait_variable(struct_processus *s_etat_processus, |
logical1 retrait_variable(struct_processus *s_etat_processus, |
unsigned char *nom_variable, unsigned char type); |
unsigned char *nom_variable, unsigned char type); |
Line 2673 inline ssize_t write_atomic(struct_proce
|
Line 2806 inline ssize_t write_atomic(struct_proce
|
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
*/ |
*/ |
|
|
int wrapper_instruction_intrinseque(void (*fonction)(), |
int alsprintf(unsigned char **strp, const char *fmt, ...); |
struct_rpl_arguments *rpl_arguments); |
int tex_fprintf(struct_processus *s_etat_processus, |
|
file *flux, const char *format, ...); |
int transliterated_fprintf(struct_processus *s_etat_processus, file *flux, |
int transliterated_fprintf(struct_processus *s_etat_processus, file *flux, |
const char *format, ...); |
const char *format, ...); |
|
int valsprintf(unsigned char **strp, const char *fmt, va_list ap); |
|
int wrapper_instruction_intrinseque(void (*fonction)(), |
|
struct_rpl_arguments *rpl_arguments); |
|
|
/* |
/* |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
Line 2732 struct_processus *copie_etat_processus(s
|
Line 2869 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 |
#ifndef RPLARGS |
file *creation_fichier_tex(struct_processus *s_etat_processus); |
file *creation_fichier_tex(struct_processus *s_etat_processus); |
file *descripteur_fichier(struct_processus *s_etat_processus, |
struct_descripteur_fichier *descripteur_fichier(struct_processus |
struct_fichier *s_fichier); |
*s_etat_processus, struct_fichier *s_fichier); |
#endif |
#endif |
|
|
/* |
/* |