Diff for /rpl/src/rpl.h between versions 1.128 and 1.169

version 1.128, 2011/09/20 08:56:24 version 1.169, 2012/06/21 16:07:25
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.3    RPL/2 (R) version 4.1.9
   Copyright (C) 1989-2011 Dr. BERTRAND Joël    Copyright (C) 1989-2012 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 43 Line 43
 #ifdef OS2  #ifdef OS2
 #   ifndef __RPLCAS  #   ifndef __RPLCAS
 #       define _BSD_SOURCE  #       define _BSD_SOURCE
 #       define _XOPEN_SOURCE    600  
 #   endif  #   endif
   
 #   include <types.h>  #   include <types.h>
Line 72 Line 71
 #include <syslog.h>  #include <syslog.h>
 #include <errno.h>  #include <errno.h>
 #include <stdarg.h>  #include <stdarg.h>
   #include <poll.h>
   
 #ifndef RPLARGS  #ifndef RPLARGS
 #   include <sys/mman.h>  #   include <sys/mman.h>
Line 92 Line 92
 #   include <dlfcn.h>  #   include <dlfcn.h>
 #   include <fcntl.h>  #   include <fcntl.h>
 #   include <pthread.h>  #   include <pthread.h>
   #   include <regex.h>
   
 #   ifdef OS2  #   ifdef OS2
 #       undef pthread_mutexattr_settype  #       undef pthread_mutexattr_settype
Line 99 Line 100
 #   endif  #   endif
   
 #   include <pwd.h>  #   include <pwd.h>
 #   include <sys/shm.h>  #   ifdef SHARED_MEMORY
   #       include <sys/shm.h>
   #   endif
   
 #   ifndef __RPLCAS  #   ifndef IPCS_SYSV
 #       ifndef IPCS_SYSV  #       include <semaphore.h>
 #           include <semaphore.h>  #   else
 #       else  #       include <sys/ipc.h>
 #           include <sys/ipc.h>  #       include <sys/sem.h>
 #           include <sys/sem.h>  
   #       ifdef OS2
   #           define INCL_DOSSEMAPHORES
   #           define INCL_DOSMEMMGR
   #           define INCL_DOSERRORS
   #           include <os2.h>
   
               typedef struct _OS2SEM
               {
                   HMTX    hmtx;
                   HEV     hev;
                   ULONG   shared;
                   ULONG   *cnt;
                   ULONG   *nopened;
                   ULONG   allocated;
               } sem_t;
   #       else // IPCS_SYSV
               typedef struct
               {
                   int             sem;
                   int             alloue;
                   unsigned char   *path;
                   pid_t           pid;
                   pthread_t       tid;
               } sem_t;
   #       endif
   
 #           ifdef OS2  #       ifndef SEM_FAILED
 #               define INCL_DOSSEMAPHORES  #           define SEM_FAILED   NULL
 #               define INCL_DOSMEMMGR  
 #               define INCL_DOSERRORS  
 #               include <os2.h>  
   
                 typedef struct _OS2SEM  
                 {  
                     HMTX    hmtx;  
                     HEV     hev;  
                     ULONG   shared;  
                     ULONG   *cnt;  
                     ULONG   *nopened;  
                     ULONG   allocated;  
                 } sem_t;  
 #           else // IPCS_SYSV  
                 typedef struct  
                 {  
                     int             sem;  
                     int             alloue;  
                     unsigned char   *path;  
                     pid_t           pid;  
                 } sem_t;  
 #           endif  
   
 #           ifndef SEM_FAILED  
 #               define SEM_FAILED   NULL  
 #           endif  
   
             sem_t *sem_open_SysV(const char *nom, int oflag, ...);  
             int sem_init_SysV(sem_t *sem, int shared, unsigned int value);  
             int sem_close_SysV(sem_t *sem);  
             int sem_wait_SysV(sem_t *sem);  
             int sem_trywait_SysV(sem_t *sem);  
             int sem_post_SysV(sem_t *sem);  
             int sem_getvalue_SysV(sem_t *sem, int *value);  
             int sem_unlink_SysV(const char *nom);  
             int sem_destroy_SysV(sem_t *sem);  
 #       endif  #       endif
   
           sem_t *sem_open_SysV(const char *nom, int oflag, ...);
           int sem_init_SysV(sem_t *sem, int shared, unsigned int value);
           int sem_close_SysV(sem_t *sem);
           int sem_wait_SysV(sem_t *sem);
           int sem_trywait_SysV(sem_t *sem);
           int sem_post_SysV(sem_t *sem);
           int sem_getvalue_SysV(sem_t *sem, int *value);
           int sem_unlink_SysV(const char *nom);
           int sem_destroy_SysV(sem_t *sem);
 #   endif  #   endif
   
 #   include <setjmp.h>  #   include <setjmp.h>
Line 163 Line 165
   
 #   include "openssl/evp.h"  #   include "openssl/evp.h"
 #   include "sqlite3.h"  #   include "sqlite3.h"
   #   include "sigsegv.h"
   #   ifdef OS2
           // Bug de libsigsegv
   #       undef HAVE_STACK_OVERFLOW_RECOVERY
   #   endif
   
 #   define HAVE_INLINE  #   define HAVE_INLINE
 #   define GSL_RANGE_CHECK_OFF  #   define GSL_RANGE_CHECK_OFF
Line 208 Line 215
 #   endif  #   endif
 #endif  #endif
   
   #ifdef MAIN_RPL
   #   define __EXTERN__
   #   define __STATIC_MUTEX_INITIALIZATION__ = PTHREAD_MUTEX_INITIALIZER
   #else
   #   define __EXTERN__                       extern
   #   define __STATIC_MUTEX_INITIALIZATION__
   #endif
   
 /*  /*
 ================================================================================  ================================================================================
   Bugs spécifiques    Bugs spécifiques
 ================================================================================  ================================================================================
 */  */
   
   // Néant
   
   /*
   ================================================================================
     TYPES
   ================================================================================
   */
   
   typedef FILE                    file;
   typedef unsigned char           t_8_bits;
   
   #ifndef RPLARGS
   #   include "rpltypes-conv.h"
   #else
   #   include "rpltypes.h"
   #endif
   
 enum signaux_rpl  enum signaux_rpl
 {  {
     rpl_signull = 0,      rpl_signull = 0,
Line 242  enum signaux_rpl Line 274  enum signaux_rpl
 // Elle est projetée dans un segment de mémoire partagée pour qu'elle soit  // Elle est projetée dans un segment de mémoire partagée pour qu'elle soit
 // accessible à la fois du père et des fils.  // accessible à la fois du père et des fils.
   
   #ifndef RPLARGS
 typedef struct queue_signaux  typedef struct queue_signaux
 {  {
 #   ifndef IPCS_SYSV  #   ifndef IPCS_SYSV
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_t               semaphore;              sem_t               semaphore;
               sem_t               signalisation;
 #       endif  #       endif
 #   else  #   else
         sem_t                   semaphore;          sem_t                   semaphore;
           sem_t                   signalisation;
 #   endif  #   endif
   
     volatile int                pointeur_lecture;      volatile int                pointeur_lecture;
     volatile int                pointeur_ecriture;      volatile int                pointeur_ecriture;
       pthread_t                   thread_signaux;
       volatile logical1           requete_arret;
   
     volatile struct      volatile struct
     {      {
Line 262  typedef struct queue_signaux Line 299  typedef struct queue_signaux
     }                           queue[LONGUEUR_QUEUE_SIGNAUX];      }                           queue[LONGUEUR_QUEUE_SIGNAUX];
 } struct_queue_signaux;  } struct_queue_signaux;
   
 #ifndef RPLARGS  __EXTERN__ struct_queue_signaux     *s_queue_signaux;
 #   ifndef MAIN_RPL  __EXTERN__ int                      f_queue_signaux;
         extern struct_queue_signaux         *s_queue_signaux;  
         extern int                          f_queue_signaux;  
 #       ifdef SEMAPHORES_NOMMES  
             extern sem_t                    *semaphore_queue_signaux;  
 #       endif  
 #   else  
         struct_queue_signaux                *s_queue_signaux;  
         int                                 f_queue_signaux;  
 #       ifdef SEMAPHORES_NOMMES  
             sem_t                           *semaphore_queue_signaux;  
 #       endif  
 #   endif  
 #endif  
   
 #ifdef OpenBSD  #   ifdef SEMAPHORES_NOMMES
 #   ifdef PTHREAD_SCOPE_SYSTEM          __EXTERN__ sem_t            *semaphore_queue_signaux;
 #       undef PTHREAD_SCOPE_SYSTEM          __EXTERN__ sem_t            *semaphore_signalisation;
 #   endif  #   endif
 #   define PTHREAD_SCOPE_SYSTEM 0  
 #endif  #endif
   
 #ifdef OS2  #ifdef OS2
Line 300  union semun Line 323  union semun
 };  };
 #endif  #endif
   
   #ifndef RTLD_LOCAL
   #   define RTLD_LOCAL       0
   #endif
   
   #ifndef SIGSTKSZ
   #   define SIGSTKSZ         65536
   #endif
   
 /*  /*
 ================================================================================  ================================================================================
Line 332  union semun Line 362  union semun
 //  SIGINT  //  SIGINT
 //  SIGTSTP  //  SIGTSTP
 //  SIGCONT  //  SIGCONT
 //  SIGURG  
 //  SIGPIPE  //  SIGPIPE
   //  SIGUSR1 et SIGUSR2 sont utilisé par libsigsegv.
   //  SIGHUP
 //  SIGALRM  //  SIGALRM
   
 #   define SIGTEST                  SIGUSR1  #   define SIGTEST                  SIGUSR1
Line 379  union semun Line 410  union semun
   
 /*  /*
 ================================================================================  ================================================================================
   TYPES  
 ================================================================================  
 */  
   
 typedef FILE                    file;  
 typedef unsigned char           t_8_bits;  
   
 #ifndef RPLARGS  
 #   include "rpltypes-conv.h"  
 #else  
 #   include "rpltypes.h"  
 #endif  
   
 /*  
 ================================================================================  
   Variables globales    Variables globales
 ================================================================================  ================================================================================
 */  */
Line 403  typedef unsigned char   t_8_bits; Line 419  typedef unsigned char   t_8_bits;
 #       define LONGUEUR_NOM_SEMAPHORE   64  #       define LONGUEUR_NOM_SEMAPHORE   64
 #   endif  #   endif
   
 #   ifndef MAIN_RPL  #   ifdef SEMAPHORES_NOMMES
         extern jmp_buf              contexte;  #       define __PTR__      *
         extern jmp_buf              contexte_initial;  #   else
         extern jmp_buf              contexte_processus;  #       define __PTR__
         extern jmp_buf              contexte_thread;  #   endif
   
         extern int                  signal_test;  
   
         extern pid_t                pid_processus_pere;  
   
 #       ifdef SEMAPHORES_NOMMES      __EXTERN__ jmp_buf              contexte_ecriture;
         extern pthread_mutex_t      mutex_sem;      __EXTERN__ jmp_buf              contexte_impression;
 #       endif      __EXTERN__ jmp_buf              contexte_initial;
       __EXTERN__ jmp_buf              contexte_processus;
       __EXTERN__ jmp_buf              contexte_thread;
   
         extern pthread_mutex_t      mutex_liste_threads;      __EXTERN__ int                  signal_test;
         extern pthread_mutex_t      mutex_gestionnaires_signaux_atomique;  
   
         extern sem_t      __EXTERN__ pid_t                pid_processus_pere;
 #       ifdef SEMAPHORES_NOMMES  
             *  
 #       endif  
                                     semaphore_gestionnaires_signaux;  
 #   else  
         jmp_buf                     contexte;  
         jmp_buf                     contexte_initial;  
         jmp_buf                     contexte_processus;  
         jmp_buf                     contexte_thread;  
   
         int                         signal_test;  #   ifdef SEMAPHORES_NOMMES
       __EXTERN__ pthread_mutex_t      mutex_sem __STATIC_MUTEX_INITIALIZATION__;
   #   endif
   
         pid_t                       pid_processus_pere;      __EXTERN__ pthread_mutex_t      mutex_liste_threads
                                               __STATIC_MUTEX_INITIALIZATION__;
       __EXTERN__ pthread_mutex_t      mutex_gestionnaires_signaux_atomique
                                               __STATIC_MUTEX_INITIALIZATION__;
   
 #       ifdef SEMAPHORES_NOMMES      __EXTERN__ sem_t __PTR__        semaphore_gestionnaires_signaux;
         pthread_mutex_t             mutex_sem = PTHREAD_MUTEX_INITIALIZER;  
 #       endif  
   
         pthread_mutex_t             mutex_liste_threads =      __EXTERN__ volatile int         routine_recursive;
                                             PTHREAD_MUTEX_INITIALIZER;  
         pthread_mutex_t             mutex_gestionnaires_signaux =  
                                             PTHREAD_MUTEX_INITIALIZER;  
         pthread_mutex_t             mutex_gestionnaires_signaux_atomique =  
                                             PTHREAD_MUTEX_INITIALIZER;  
         sem_t  
 #       ifdef SEMAPHORES_NOMMES  
             *  
 #       endif  
                                     semaphore_gestionnaires_signaux;  
 #   endif  
 #endif  #endif
   
 #ifdef SEMAPHORES_NOMMES  #ifdef SEMAPHORES_NOMMES
 sem_t *sem_init2(unsigned int valeur, pid_t pid);  #define SEM_FORK            0
 int sem_destroy2(sem_t *semaphore_p, pid_t pid);  #define SEM_QUEUE           1
   #define SEM_SIGNAUX         2
   #define SEM_SIGNALISATION   3
   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);
   int sem_destroy3(sem_t *semaphore_p, pid_t pid, pthread_t tid, int ordre);
 int sem_getvalue2(sem_t *semaphore, int *valeur);  int sem_getvalue2(sem_t *semaphore, int *valeur);
 sem_t *sem_open2(pid_t pid);  sem_t *sem_open2(pid_t pid, int ordre);
   
 // Le mutex est là uniquement pour pouvoir émuler le comportement  // Le mutex est là uniquement pour pouvoir émuler le comportement
 // de sem_getvalue() sur un système comme MacOS X qui ne possède pas  // de sem_getvalue() sur un système comme MacOS X qui ne possède pas
Line 503  sem_t *sem_open2(pid_t pid); Line 505  sem_t *sem_open2(pid_t pid);
 #   define fclose(...) ({ int ios; \  #   define fclose(...) ({ int ios; \
             while((ios = fclose(__VA_ARGS__)) != 0) \              while((ios = fclose(__VA_ARGS__)) != 0) \
             { if ((errno != EINTR) && (errno != 0)) break; } ios; })              { if ((errno != EINTR) && (errno != 0)) break; } ios; })
 #   define fread(...) ({ int ios; \  
             while((ios = fread(__VA_ARGS__)) < 0) \  
             { if ((errno != EINTR) && (errno != 0)) break; } ios; })  
 #   define fflush(flux) ({ int ios; \  #   define fflush(flux) ({ int ios; \
             while((ios = fflush((flux == stdout) ? stderr : flux)) != 0) \              while((ios = fflush((flux == stdout) ? stderr : flux)) != 0) \
             { if ((errno != EINTR) && (errno != 0)) break; } ios; })              { if ((errno != EINTR) && (errno != 0)) break; } ios; })
Line 740  pid_t debug_fork(); Line 739  pid_t debug_fork();
   Erreurs système    Erreurs système
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
 #define DEBUG_ERREURS  
 #ifdef DEBUG_ERREURS  #ifdef DEBUG_ERREURS
 #   ifdef MESSAGES  #   ifdef MESSAGES
 #       define __erreur(i)  i  #       define __erreur(i)  i
Line 781  pid_t debug_fork(); Line 780  pid_t debug_fork();
 #   define d_es_contexte                        __erreur(2013)  #   define d_es_contexte                        __erreur(2013)
 #   define d_es_somme_controle                  __erreur(2014)  #   define d_es_somme_controle                  __erreur(2014)
 #   define d_es_semaphore                       __erreur(2015)  #   define d_es_semaphore                       __erreur(2015)
   #   define d_es_mutex_acquis_autre_thread       __erreur(2016)
 #endif  #endif
   
 /*  /*
Line 919  pid_t debug_fork(); Line 919  pid_t debug_fork();
 #   define d_ex_version_bibliotheque            __erreur(82)  #   define d_ex_version_bibliotheque            __erreur(82)
 #   define d_ex_creation_variable_globale       __erreur(83)  #   define d_ex_creation_variable_globale       __erreur(83)
 #   define d_ex_erreur_interne_rplcas           __erreur(84)  #   define d_ex_erreur_interne_rplcas           __erreur(84)
   #   define d_ex_fichier_corrompu                __erreur(85)
   #   define d_ex_mutex_acquis_autre_thread       __erreur(86)
   #   define d_ex_expression_reguliere            __erreur(87)
   #   define d_ex_instruction_indisponible        __erreur(88)
 #endif  #endif
   
   
Line 1106  typedef struct fichier Line 1110  typedef struct fichier
 typedef struct rpl_mutex  typedef struct rpl_mutex
 {  {
     pthread_mutex_t     mutex;      pthread_mutex_t     mutex;
       pthread_t           tid;
 } struct_mutex;  } struct_mutex;
 #endif  #endif
   
Line 1179  typedef struct descripteur_fichier Line 1184  typedef struct descripteur_fichier
     pid_t                       pid;      pid_t                       pid;
     pthread_t                   tid;      pthread_t                   tid;
   
     file                        *descripteur_c;      union
     sqlite3                     *descripteur_sqlite;      {
           file                    *descripteur_c;
           sqlite3                 *descripteur_sqlite;
       };
 } struct_descripteur_fichier;  } struct_descripteur_fichier;
 #endif  #endif
   
Line 1275  typedef struct liste_chainee Line 1283  typedef struct liste_chainee
   
 /*  /*
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
     Structure de gestion des signaux en provenance de rplsignal
   --------------------------------------------------------------------------------
   */
   
   #define d_NOMBRE_SIGNAUX                64
   
   typedef struct gestion_signaux
   {
       unsigned char               masque_signaux[d_NOMBRE_SIGNAUX];
   
       /*
        * 'I' : signal ignoré
        * 'Q' : signal mis en queue pour un traitement ultérieur
        * 'N' : traitement normal du signal
        */
   
       integer8                    queue_signaux[d_NOMBRE_SIGNAUX];
       integer8                    nombre_signaux_en_queue;
       struct_objet                *corps_signaux[d_NOMBRE_SIGNAUX];
   
       pthread_mutex_t             mutex;
   } struct_gestion_signaux;
   
   #ifndef MAIN_RPL
   #   define __STATIC_GESTION_SIGNAUX__
   #else
   #   define __STATIC_GESTION_SIGNAUX__ = { .mutex = PTHREAD_MUTEX_INITIALIZER }
   #endif
   
   __EXTERN__ volatile struct_gestion_signaux signaux_externes
           __STATIC_GESTION_SIGNAUX__;
   
   
   /*
   --------------------------------------------------------------------------------
   Structure liste profilage    Structure liste profilage
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
Line 1816  typedef struct processus Line 1859  typedef struct processus
     pthread_t                   thread_fusible;      pthread_t                   thread_fusible;
     pthread_t                   thread_surveille_par_fusible;      pthread_t                   thread_surveille_par_fusible;
   
 #   if !defined(Cygwin)  
 #       if !(OpenBSD)  
             stack_t             pile_signal;  
 #       else  
 #           ifdef SA_ONSTACK  
 #               undef SA_ONSTACK  
 #           endif  
 #           define SA_ONSTACK   0  
 #       endif  
 #   else  
 #       define SA_ONSTACK       0  
 #       define RTLD_LOCAL       0  
 #   endif  
   
     volatile int                pointeur_signal_ecriture;      volatile int                pointeur_signal_ecriture;
     volatile int                pointeur_signal_lecture;      volatile int                pointeur_signal_lecture;
     volatile enum signaux_rpl   signaux_en_queue[LONGUEUR_QUEUE_SIGNAUX];      volatile enum signaux_rpl   signaux_en_queue[LONGUEUR_QUEUE_SIGNAUX];
Line 2050  typedef struct processus Line 2079  typedef struct processus
   
 /* Traitement des erreurs                               */  /* Traitement des erreurs                               */
   
     unsigned int                compteur_violation_d_acces;  
     unsigned int                erreur_compilation;      unsigned int                erreur_compilation;
     unsigned int                erreur_execution;      unsigned int                erreur_execution;
     unsigned int                erreur_systeme;      unsigned int                erreur_systeme;
Line 2162  typedef struct processus Line 2190  typedef struct processus
   
     pid_t                       pid_processus_pere;      pid_t                       pid_processus_pere;
     pthread_t                   tid_processus_pere;      pthread_t                   tid_processus_pere;
       pthread_t                   tid;
   
     logical1                    processus_detache;      logical1                    processus_detache;
   
Line 2178  typedef struct processus Line 2207  typedef struct processus
     pthread_mutex_t             mutex_allocation;      pthread_mutex_t             mutex_allocation;
   
     // Mutex autorisant les fork()      // Mutex autorisant les fork()
     sem_t                       semaphore_fork;      sem_t __PTR__               semaphore_fork;
   
 /* Mutexes                                          */  /* Mutexes                                          */
   
     struct_liste_chainee        *liste_mutexes;      struct_liste_chainee        *liste_mutexes;
     pthread_mutex_t             protection_liste_mutexes;      pthread_mutex_t             protection_liste_mutexes;
   
   /* Drapeau nécessaire à RESTART                 */
   
       volatile logical1           requete_redemarrage;
   
 /* Gestion optimisée de la mémoire                  */  /* Gestion optimisée de la mémoire                  */
   
     double                      estimation_taille_pile_tampon;      double                      estimation_taille_pile_tampon;
Line 2572  void instruction_pmax(struct_processus * Line 2605  void instruction_pmax(struct_processus *
 void instruction_pmin(struct_processus *s_etat_processus);  void instruction_pmin(struct_processus *s_etat_processus);
 void instruction_poke(struct_processus *s_etat_processus);  void instruction_poke(struct_processus *s_etat_processus);
 void instruction_polar(struct_processus *s_etat_processus);  void instruction_polar(struct_processus *s_etat_processus);
   void instruction_poll(struct_processus *s_etat_processus);
 void instruction_pos(struct_processus *s_etat_processus);  void instruction_pos(struct_processus *s_etat_processus);
 void instruction_pourcent(struct_processus *s_etat_processus);  void instruction_pourcent(struct_processus *s_etat_processus);
 void instruction_pourcent_ch(struct_processus *s_etat_processus);  void instruction_pourcent_ch(struct_processus *s_etat_processus);
Line 2628  void instruction_read(struct_processus * Line 2662  void instruction_read(struct_processus *
 void instruction_recode(struct_processus *s_etat_processus);  void instruction_recode(struct_processus *s_etat_processus);
 void instruction_recv(struct_processus *s_etat_processus);  void instruction_recv(struct_processus *s_etat_processus);
 void instruction_redraw(struct_processus *s_etat_processus);  void instruction_redraw(struct_processus *s_etat_processus);
   void instruction_regex(struct_processus *s_etat_processus);
 void instruction_relax(struct_processus *s_etat_processus);  void instruction_relax(struct_processus *s_etat_processus);
 void instruction_remove(struct_processus *s_etat_processus);  void instruction_remove(struct_processus *s_etat_processus);
 void instruction_res(struct_processus *s_etat_processus);  void instruction_res(struct_processus *s_etat_processus);
   void instruction_restart(struct_processus *s_etat_processus);
 void instruction_recall(struct_processus *s_etat_processus);  void instruction_recall(struct_processus *s_etat_processus);
 void instruction_regv(struct_processus *s_etat_processus);  void instruction_regv(struct_processus *s_etat_processus);
 void instruction_repeat(struct_processus *s_etat_processus);  void instruction_repeat(struct_processus *s_etat_processus);
Line 2823  void appel_gnuplot(struct_processus *s_e Line 2859  void appel_gnuplot(struct_processus *s_e
 void cf(struct_processus *s_etat_processus, unsigned char indice_drapeau);  void cf(struct_processus *s_etat_processus, unsigned char indice_drapeau);
 void cond(struct_processus *s_etat_processus,  void cond(struct_processus *s_etat_processus,
         struct_matrice *s_matrice, real8 *condition);          struct_matrice *s_matrice, real8 *condition);
   void conversion_chaine(struct_processus *s_etat_processus,
           unsigned char *chaine, unsigned char type);
 void conversion_decimal_vers_hms(real8 *angle);  void conversion_decimal_vers_hms(real8 *angle);
 void conversion_degres_vers_radians(real8 *angle);  void conversion_degres_vers_radians(real8 *angle);
 void conversion_element_tex(unsigned char **element, unsigned char *fonction);  void conversion_element_tex(unsigned char **element, unsigned char *fonction);
Line 2898  void interruption2(int signal); Line 2936  void interruption2(int signal);
 void interruption3(int signal);  void interruption3(int signal);
 void interruption4(int signal);  void interruption4(int signal);
 void interruption5(int signal);  void interruption5(int signal);
   void interruption6(int signal);
   void interruption_depassement_pile(int urgence, stackoverflow_context_t scp);
 void inversion_matrice(struct_processus *s_etat_processus,  void inversion_matrice(struct_processus *s_etat_processus,
         struct_matrice *s_matrice);          struct_matrice *s_matrice);
 void lancement_daemon(struct_processus *s_etat_processus);  void lancement_daemon(struct_processus *s_etat_processus);
Line 2931  void retrait_thread(struct_processus *s_ Line 2971  void retrait_thread(struct_processus *s_
 void retrait_thread_surveillance(struct_processus *s_etat_processus,  void retrait_thread_surveillance(struct_processus *s_etat_processus,
         struct_descripteur_thread *s_argument_thread);          struct_descripteur_thread *s_argument_thread);
 void rplcore(struct_processus *s_etat_processus);  void rplcore(struct_processus *s_etat_processus);
   #endif
   
 void scrutation_injection(struct_processus *s_etat_processus);  void scrutation_injection(struct_processus *s_etat_processus);
   
   #ifndef RPLARGS
 void scrutation_interruptions(struct_processus *s_etat_processus);  void scrutation_interruptions(struct_processus *s_etat_processus);
 void sf(struct_processus *s_etat_processus, unsigned char indice_drapeau);  void sf(struct_processus *s_etat_processus, unsigned char indice_drapeau);
 void *surveillance_processus(void *argument);  void *surveillance_processus(void *argument);
Line 2994  complex16 sommation_vecteur_complexe(com Line 3038  complex16 sommation_vecteur_complexe(com
 */  */
   
 #ifndef RPLARGS  #ifndef RPLARGS
 int rplinit(int argc, char *argv[], unsigned char ***resultats, char *rpl_home);  int rplinit(int argc, char *argv[], char *envp[],
           unsigned char ***resultats, char *rpl_home);
 #endif  #endif
   
 /*  /*
Line 3052  struct_liste_chainee *sauvegarde_argumen Line 3097  struct_liste_chainee *sauvegarde_argumen
 #ifndef RPLARGS  #ifndef RPLARGS
 unsigned char *analyse_algebrique(struct_processus *s_etat_processus,  unsigned char *analyse_algebrique(struct_processus *s_etat_processus,
         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 *flux, long longueur);
 unsigned char *recherche_chemin_fichiers_temporaires(struct_processus  unsigned char *recherche_chemin_fichiers_temporaires(struct_processus
         *s_etat_processus);          *s_etat_processus);
 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,
         unsigned char *chemin);          unsigned char *chemin);
   unsigned char *date_compilation();
 unsigned char *extraction_chaine(unsigned char *chaine, unsigned long i,  unsigned char *extraction_chaine(unsigned char *chaine, unsigned long i,
         unsigned long j);          unsigned long j);
 unsigned char *formateur(struct_processus *s_etat_processus, long offset,  unsigned char *formateur(struct_processus *s_etat_processus, long offset,
Line 3071  unsigned char *formateur_flux(struct_pro Line 3119  unsigned char *formateur_flux(struct_pro
 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
           *s_etat_processus, void *valeur_numerique, 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 3079  unsigned char *formateur_nombre(struct_p Line 3130  unsigned char *formateur_nombre(struct_p
 unsigned char *formateur_reel(struct_processus *s_etat_processus,  unsigned char *formateur_reel(struct_processus *s_etat_processus,
         void *valeur_numerique, unsigned char type);          void *valeur_numerique, unsigned char type);
 unsigned char *messages(struct_processus *s_etat_processus);  unsigned char *messages(struct_processus *s_etat_processus);
   unsigned char *pointeur_ieme_caractere(struct_processus *s_etat_processus,
           unsigned char *chaine, integer8 position);
 unsigned char *purification_chaine(unsigned char *chaine);  unsigned char *purification_chaine(unsigned char *chaine);
 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,
Line 3101  logical1 caracteristiques_fichier(struct Line 3154  logical1 caracteristiques_fichier(struct
         unsigned long *unite);          unsigned long *unite);
 logical1 controle(struct_processus *s_etat_processus, unsigned char *fichier,  logical1 controle(struct_processus *s_etat_processus, unsigned char *fichier,
         unsigned char *type, unsigned char *somme_candidate);          unsigned char *type, unsigned char *somme_candidate);
   logical1 controle_integrite(struct_processus *s_etat_processus,
           unsigned char *executable_candidat, unsigned char *executable);
 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 3164  logical1 test_cfsf(struct_processus *s_e Line 3219  logical1 test_cfsf(struct_processus *s_e
         unsigned char indice_drapeau);          unsigned char indice_drapeau);
 logical1 test_expression_rpn(unsigned char *chaine);  logical1 test_expression_rpn(unsigned char *chaine);
 logical1 test_fonction(unsigned char *chaine);  logical1 test_fonction(unsigned char *chaine);
   logical1 validation_chaine(unsigned char *chaine);
 #endif  #endif
   
 /*  /*
Line 3186  ssize_t write_atomic(struct_processus *s Line 3242  ssize_t write_atomic(struct_processus *s
 */  */
   
 int alsprintf(unsigned char **strp, const char *fmt, ...);  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,  int liste_variables(struct_processus *s_etat_processus,
         struct_tableau_variables *tableau, int position,          struct_tableau_variables *tableau, int position,
         struct_arbre_variables *l_element_courant);          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);          struct_arbre_variables *l_element_courant);
   int readline_analyse_syntaxique(int count, int key);
   int readline_effacement(int count, int key);
   #endif
 int tex_fprintf(struct_processus *s_etat_processus,  int tex_fprintf(struct_processus *s_etat_processus,
         file *flux, const char *format, ...);          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,
Line 3207  int wrapper_instruction_intrinseque(void Line 3268  int wrapper_instruction_intrinseque(void
   
 #ifndef RPLARGS  #ifndef RPLARGS
 unsigned char longueur_entiers_binaires(struct_processus *s_etat_processus);  unsigned char longueur_entiers_binaires(struct_processus *s_etat_processus);
 unsigned char recherche_longueur_optimale(integer8 parametre);  
 #endif  #endif
   
 /*  /*
Line 3228  logical8 masque_entiers_binaires(struct_ Line 3288  logical8 masque_entiers_binaires(struct_
   
 #ifndef RPLARGS  #ifndef RPLARGS
 integer8 occupation_memoire(struct_objet *s_objet);  integer8 occupation_memoire(struct_objet *s_objet);
   integer8 longueur_chaine(struct_processus *s_etat_processus,
           unsigned char *chaine);
   integer8 position_caractere_de_chaine(struct_processus *s_etat_processus,
           unsigned char *chaine, unsigned char *position);
 #endif  #endif
   
 /*  /*
Line 3272  struct_descripteur_fichier *descripteur_ Line 3336  struct_descripteur_fichier *descripteur_
 struct_objet *copie_objet(struct_processus *s_etat_processus,  struct_objet *copie_objet(struct_processus *s_etat_processus,
         struct_objet *s_objet, unsigned char type);          struct_objet *s_objet, unsigned char type);
   
 #ifndef RPLARGS  
 struct_objet *allocation(struct_processus *s_etat_processus, enum t_type type);  struct_objet *allocation(struct_processus *s_etat_processus, enum t_type type);
   #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_pipe(struct_processus *s_etat_processus, int pipe);  struct_objet *lecture_pipe(struct_processus *s_etat_processus, int pipe);

Removed from v.1.128  
changed lines
  Added in v.1.169


CVSweb interface <joel.bertrand@systella.fr>