Diff for /rpl/src/rpl.c between versions 1.124 and 1.166

version 1.124, 2012/10/19 19:05:52 version 1.166, 2015/01/30 07:53:15
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.11    RPL/2 (R) version 4.1.20
   Copyright (C) 1989-2012 Dr. BERTRAND Joël    Copyright (C) 1989-2015 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 23 Line 23
 #define  MAIN_RPL  #define  MAIN_RPL
 #include "rpl-conv.h"  #include "rpl-conv.h"
   
   // Bug de gcc à partir de gcc 4.6 (bug 48544)
   #pragma GCC diagnostic push
   #pragma GCC diagnostic ignored "-Wclobbered"
   
   
 /*  /*
 ================================================================================  ================================================================================
Line 51  rplinit(int argc, char *argv[], char *en Line 55  rplinit(int argc, char *argv[], char *en
     int                                 erreur_historique;      int                                 erreur_historique;
     int                                 option_P;      int                                 option_P;
   
       integer8                            i;
   
     logical1                            core;      logical1                            core;
     logical1                            debug;      logical1                            debug;
     logical1                            erreur_fichier;      logical1                            erreur_fichier;
Line 80  rplinit(int argc, char *argv[], char *en Line 86  rplinit(int argc, char *argv[], char *en
   
     struct_processus                    *s_etat_processus;      struct_processus                    *s_etat_processus;
   
       struct_liste_variables_partagees    *l_element_partage_courant;
       struct_liste_variables_partagees    *l_element_partage_suivant;
   
     struct_liste_variables_statiques    *l_element_statique_courant;      struct_liste_variables_statiques    *l_element_statique_courant;
     struct_liste_variables_statiques    *l_element_statique_suivant;      struct_liste_variables_statiques    *l_element_statique_suivant;
   
     struct_table_variables_partagees    s_variables_partagees;      struct_arbre_variables_partagees    *s_arbre_variables_partagees;
       struct_liste_variables_partagees    *l_liste_variables_partagees;
   
     struct sigaction                    action;      struct sigaction                    action;
     struct sigaction                    registre;      struct sigaction                    registre;
Line 102  rplinit(int argc, char *argv[], char *en Line 112  rplinit(int argc, char *argv[], char *en
     unsigned char                       *ptr;      unsigned char                       *ptr;
     unsigned char                       *tampon;      unsigned char                       *tampon;
   
     unsigned long                       i;  
     unsigned long                       unite_fichier;      unsigned long                       unite_fichier;
   
     void                                *l_element_courant;      void                                *l_element_courant;
Line 123  rplinit(int argc, char *argv[], char *en Line 132  rplinit(int argc, char *argv[], char *en
     setvbuf(stdout, NULL, _IOLBF, 0);      setvbuf(stdout, NULL, _IOLBF, 0);
     setvbuf(stderr, NULL, _IOLBF, 0);      setvbuf(stderr, NULL, _IOLBF, 0);
   
 #   ifndef SEMAPHORES_NOMMES      if ((s_etat_processus = sys_malloc(sizeof(struct_processus))) == NULL)
     sem_init(&semaphore_gestionnaires_signaux, 0, 0);  
 #   else  
     semaphore_gestionnaires_signaux = sem_init2(0, getpid(), SEM_SIGNAUX);  
       
     if (semaphore_gestionnaires_signaux == SEM_FAILED)  
     {      {
         erreur = d_es_allocation_memoire;          erreur = d_es_allocation_memoire;
   
Line 150  rplinit(int argc, char *argv[], char *en Line 154  rplinit(int argc, char *argv[], char *en
   
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
 #   endif  
   
     if ((s_etat_processus = malloc(sizeof(struct_processus))) == NULL)      (*s_etat_processus).erreur_systeme = d_es;
   
       initialisation_allocateur_buffer(s_etat_processus);
   
       if ((*s_etat_processus).erreur_systeme != d_es)
     {      {
 #       ifndef SEMAPHORES_NOMMES          erreur = d_es_allocation_memoire;
         sem_post(&semaphore_gestionnaires_signaux);  
         sem_destroy(&semaphore_gestionnaires_signaux);          if ((langue = getenv("LANG")) != NULL)
 #       else          {
         sem_post(semaphore_gestionnaires_signaux);              if (strncmp(langue, "fr", 2) == 0)
         sem_destroy2(semaphore_gestionnaires_signaux, getpid(), SEM_SIGNAUX);              {
 #       endif                  uprintf("+++Système : Mémoire insuffisante\n");
               }
               else
               {
                   uprintf("+++System : Not enough memory\n");
               }
           }
           else
           {
               uprintf("+++System : Not enough memory\n");
           }
   
           return(EXIT_FAILURE);
       }
   
       if (initialisation_etat_processus_readline() != 0)
       {
         erreur = d_es_allocation_memoire;          erreur = d_es_allocation_memoire;
   
         if ((langue = getenv("LANG")) != NULL)          if ((langue = getenv("LANG")) != NULL)
Line 195  rplinit(int argc, char *argv[], char *en Line 217  rplinit(int argc, char *argv[], char *en
   
     if (getcwd(repertoire_initial, RPL_PATH_MAX) == NULL)      if (getcwd(repertoire_initial, RPL_PATH_MAX) == NULL)
     {      {
 #       ifndef SEMAPHORES_NOMMES  
         sem_post(&semaphore_gestionnaires_signaux);  
         sem_destroy(&semaphore_gestionnaires_signaux);  
 #       else  
         sem_post(semaphore_gestionnaires_signaux);  
         sem_destroy2(semaphore_gestionnaires_signaux, getpid(), SEM_SIGNAUX);  
 #       endif  
   
         if ((*s_etat_processus).langue == 'F')          if ((*s_etat_processus).langue == 'F')
         {          {
             uprintf("+++Système : Mémoire insuffisante\n");              uprintf("+++Système : Mémoire insuffisante\n");
Line 215  rplinit(int argc, char *argv[], char *en Line 229  rplinit(int argc, char *argv[], char *en
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
     if ((arg_exec = malloc((argc + 1) * sizeof(char *))) == NULL)      if ((arg_exec = malloc((((size_t) argc) + 1) * sizeof(char *))) == NULL)
     {      {
 #       ifndef SEMAPHORES_NOMMES  
         sem_post(&semaphore_gestionnaires_signaux);  
         sem_destroy(&semaphore_gestionnaires_signaux);  
 #       else  
         sem_post(semaphore_gestionnaires_signaux);  
         sem_destroy2(semaphore_gestionnaires_signaux, getpid(), SEM_SIGNAUX);  
 #       endif  
   
         if ((*s_etat_processus).langue == 'F')          if ((*s_etat_processus).langue == 'F')
         {          {
             uprintf("+++Système : Mémoire insuffisante\n");              uprintf("+++Système : Mémoire insuffisante\n");
Line 237  rplinit(int argc, char *argv[], char *en Line 243  rplinit(int argc, char *argv[], char *en
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
     for(i = 0; i < (unsigned long) argc; i++)      for(i = 0; i < argc; i++)
     {      {
         arg_exec[i] = argv[i];          arg_exec[i] = argv[i];
     }      }
Line 255  rplinit(int argc, char *argv[], char *en Line 261  rplinit(int argc, char *argv[], char *en
   
     pthread_mutexattr_init(&attributs_mutex);      pthread_mutexattr_init(&attributs_mutex);
     pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL);      pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL);
     pthread_mutex_init(&((*s_etat_processus).mutex), &attributs_mutex);      pthread_mutex_init(&((*s_etat_processus).mutex_pile_processus),
               &attributs_mutex);
       pthread_mutexattr_destroy(&attributs_mutex);
   
       pthread_mutexattr_init(&attributs_mutex);
       pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL);
       pthread_mutex_init(&((*s_etat_processus).mutex_interruptions),
               &attributs_mutex);
       pthread_mutexattr_destroy(&attributs_mutex);
   
       pthread_mutexattr_init(&attributs_mutex);
       pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL);
       pthread_mutex_init(&((*s_etat_processus).mutex_signaux),
               &attributs_mutex);
     pthread_mutexattr_destroy(&attributs_mutex);      pthread_mutexattr_destroy(&attributs_mutex);
   
     pthread_mutexattr_init(&attributs_mutex);      pthread_mutexattr_init(&attributs_mutex);
Line 265  rplinit(int argc, char *argv[], char *en Line 284  rplinit(int argc, char *argv[], char *en
     pthread_mutexattr_destroy(&attributs_mutex);      pthread_mutexattr_destroy(&attributs_mutex);
   
     pthread_mutexattr_init(&attributs_mutex);      pthread_mutexattr_init(&attributs_mutex);
       pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL);
       pthread_mutex_init(&((*s_etat_processus).mutex_allocation_buffer),
               &attributs_mutex);
       pthread_mutexattr_destroy(&attributs_mutex);
   
       pthread_mutexattr_init(&attributs_mutex);
     pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_RECURSIVE);      pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_RECURSIVE);
     pthread_mutex_init(&mutex_sections_critiques, &attributs_mutex);      pthread_mutex_init(&mutex_sections_critiques, &attributs_mutex);
     pthread_mutexattr_destroy(&attributs_mutex);      pthread_mutexattr_destroy(&attributs_mutex);
   
       pthread_mutexattr_init(&attributs_mutex);
       pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_RECURSIVE);
       pthread_mutex_init(&mutex_liste_variables_partagees, &attributs_mutex);
       pthread_mutexattr_destroy(&attributs_mutex);
   
 #   ifndef SEMAPHORES_NOMMES  #   ifndef SEMAPHORES_NOMMES
         sem_init(&((*s_etat_processus).semaphore_fork), 0, 0);          sem_init(&((*s_etat_processus).semaphore_fork), 0, 0);
 #   else  #   else
         if (((*s_etat_processus).semaphore_fork = sem_init3(0, getpid(),          if (((*s_etat_processus).semaphore_fork = sem_init3(0, getpid(),
                 pthread_self(), SEM_FORK)) == SEM_FAILED)                  pthread_self(), SEM_FORK)) == SEM_FAILED)
         {          {
 #           ifndef SEMAPHORES_NOMMES              liberation_contexte_cas(s_etat_processus);
                 sem_post(&semaphore_gestionnaires_signaux);  
                 sem_destroy(&semaphore_gestionnaires_signaux);  
 #           else  
                 sem_post(semaphore_gestionnaires_signaux);  
                 sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                         SEM_SIGNAUX);  
 #           endif  
   
             liberation(contexte_cas(s_etat_processus);  
   
             if ((*s_etat_processus).langue == 'F')              if ((*s_etat_processus).langue == 'F')
             {              {
Line 305  rplinit(int argc, char *argv[], char *en Line 326  rplinit(int argc, char *argv[], char *en
             &attributs_mutex);              &attributs_mutex);
     pthread_mutexattr_destroy(&attributs_mutex);      pthread_mutexattr_destroy(&attributs_mutex);
   
     (*s_etat_processus).s_liste_variables_partagees = &s_variables_partagees;  
   
     s_variables_partagees.nombre_variables = 0;  
     s_variables_partagees.nombre_variables_allouees = 0;  
     s_variables_partagees.table = NULL;  
   
     pthread_mutexattr_init(&attributs_mutex);  
     pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL);  
     pthread_mutex_init(&((*((*s_etat_processus).s_liste_variables_partagees))  
             .mutex), &attributs_mutex);  
     pthread_mutexattr_destroy(&attributs_mutex);  
   
     (*s_etat_processus).chemin_fichiers_temporaires =      (*s_etat_processus).chemin_fichiers_temporaires =
             recherche_chemin_fichiers_temporaires(s_etat_processus);              recherche_chemin_fichiers_temporaires(s_etat_processus);
   
Line 327  rplinit(int argc, char *argv[], char *en Line 336  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
Line 359  rplinit(int argc, char *argv[], char *en Line 363  rplinit(int argc, char *argv[], char *en
     }      }
     else      else
     {      {
 #       ifndef SEMAPHORES_NOMMES  
             sem_post(&((*s_etat_processus).semaphore_fork));  
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));  
 #       else  
             sem_post((*s_etat_processus).semaphore_fork);  
             sem_post(semaphore_gestionnaires_signaux);  
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);  
 #       endif  
   
         liberation_contexte_cas(s_etat_processus);  
         liberation_queue_signaux(s_etat_processus);  
   
         if (((*s_etat_processus).localisation = malloc((strlen(d_locale)          if (((*s_etat_processus).localisation = malloc((strlen(d_locale)
                 + 1) * sizeof(unsigned char))) == NULL)                  + 1) * sizeof(unsigned char))) == NULL)
         {          {
   #           ifndef SEMAPHORES_NOMMES
                   sem_post(&((*s_etat_processus).semaphore_fork));
                   sem_destroy(&((*s_etat_processus).semaphore_fork));
   #           else
                   sem_post((*s_etat_processus).semaphore_fork);
                   sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
                           pthread_self(), SEM_FORK);
   #           endif
   
               liberation_contexte_cas(s_etat_processus);
               destruction_queue_signaux(s_etat_processus);
   
             if ((*s_etat_processus).langue == 'F')              if ((*s_etat_processus).langue == 'F')
             {              {
                 uprintf("+++Système : Mémoire insuffisante\n");                  uprintf("+++Système : Mémoire insuffisante\n");
Line 403  rplinit(int argc, char *argv[], char *en Line 402  rplinit(int argc, char *argv[], char *en
         {          {
 #           ifndef SEMAPHORES_NOMMES  #           ifndef SEMAPHORES_NOMMES
                 sem_post(&((*s_etat_processus).semaphore_fork));                  sem_post(&((*s_etat_processus).semaphore_fork));
                 sem_post(&semaphore_gestionnaires_signaux);  
                 sem_destroy(&semaphore_gestionnaires_signaux);  
                 sem_destroy(&((*s_etat_processus).semaphore_fork));                  sem_destroy(&((*s_etat_processus).semaphore_fork));
 #           else  #           else
                 sem_post((*s_etat_processus).semaphore_fork);                  sem_post((*s_etat_processus).semaphore_fork);
                 sem_post(semaphore_gestionnaires_signaux);                  sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
                 sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                         SEM_SIGNAUX);  
                 sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                         pthread_self(), SEM_FORK);                          pthread_self(), SEM_FORK);
 #           endif  #           endif
   
             liberation_contexte_cas(s_etat_processus);              liberation_contexte_cas(s_etat_processus);
             liberation_queue_signaux(s_etat_processus);              destruction_queue_signaux(s_etat_processus);
   
             if ((*s_etat_processus).langue == 'F')              if ((*s_etat_processus).langue == 'F')
             {              {
Line 433  rplinit(int argc, char *argv[], char *en Line 427  rplinit(int argc, char *argv[], char *en
         strcpy((*s_etat_processus).localisation, d_locale);          strcpy((*s_etat_processus).localisation, d_locale);
     }      }
   
     printf("+++RPL/2 (R) version %s (%s)\n", d_version_rpl,      if (resultats == NULL) // Appel direct
             ((*s_etat_processus).langue == 'F') ? d_date_rpl : d_date_en_rpl);  
   
     if ((*s_etat_processus).langue == 'F')  
     {  
         printf("+++Copyright (C) 1989 à 2011, 2012 BERTRAND Joël\n");  
     }  
     else  
     {      {
         printf("+++Copyright (C) 1989 to 2011, 2012 BERTRAND Joel\n");          printf("+++RPL/2 (R) version %s (%s)\n", d_version_rpl,
                   ((*s_etat_processus).langue == 'F')
                   ? d_date_rpl : d_date_en_rpl);
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Copyright (C) 1989 à 2014, 2015 BERTRAND Joël\n");
           }
           else
           {
               printf("+++Copyright (C) 1989 to 2014, 2015 BERTRAND Joel\n");
           }
     }      }
   
     if (getenv("HOME") != NULL)      if (getenv("HOME") != NULL)
Line 473  rplinit(int argc, char *argv[], char *en Line 471  rplinit(int argc, char *argv[], char *en
         {          {
 #           ifndef SEMAPHORES_NOMMES  #           ifndef SEMAPHORES_NOMMES
                 sem_post(&((*s_etat_processus).semaphore_fork));                  sem_post(&((*s_etat_processus).semaphore_fork));
                 sem_post(&semaphore_gestionnaires_signaux);  
                 sem_destroy(&semaphore_gestionnaires_signaux);  
                 sem_destroy(&((*s_etat_processus).semaphore_fork));                  sem_destroy(&((*s_etat_processus).semaphore_fork));
 #           else  #           else
                 sem_post((*s_etat_processus).semaphore_fork);                  sem_post((*s_etat_processus).semaphore_fork);
                 sem_post(semaphore_gestionnaires_signaux);                  sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
                 sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                         SEM_SIGNAUX);  
                 sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                         pthread_self(), SEM_FORK);                          pthread_self(), SEM_FORK);
 #           endif  #           endif
   
             liberation_contexte_cas(s_etat_processus);              liberation_contexte_cas(s_etat_processus);
             liberation_queue_signaux(s_etat_processus);              destruction_queue_signaux(s_etat_processus);
   
             erreur = d_es_signal;              erreur = d_es_signal;
   
Line 520  rplinit(int argc, char *argv[], char *en Line 513  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 561  rplinit(int argc, char *argv[], char *en Line 549  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 596  rplinit(int argc, char *argv[], char *en Line 579  rplinit(int argc, char *argv[], char *en
     }      }
   
     signal_test = SIGTEST;      signal_test = SIGTEST;
     kill(getpid(), SIGINT);      raise(SIGINT);
   
     attente.tv_sec = 0;      attente.tv_sec = 0;
     attente.tv_nsec = 1000000;      attente.tv_nsec = 1000000;
Line 610  rplinit(int argc, char *argv[], char *en Line 593  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 648  rplinit(int argc, char *argv[], char *en Line 626  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 683  rplinit(int argc, char *argv[], char *en Line 656  rplinit(int argc, char *argv[], char *en
     }      }
   
     signal_test = SIGTEST;      signal_test = SIGTEST;
     kill(getpid(), SIGTERM);      raise(SIGTERM);
   
     attente.tv_sec = 0;      attente.tv_sec = 0;
     attente.tv_nsec = 1000000;      attente.tv_nsec = 1000000;
Line 697  rplinit(int argc, char *argv[], char *en Line 670  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 735  rplinit(int argc, char *argv[], char *en Line 703  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 770  rplinit(int argc, char *argv[], char *en Line 733  rplinit(int argc, char *argv[], char *en
     }      }
   
     signal_test = SIGTEST;      signal_test = SIGTEST;
     kill(getpid(), SIGALRM);      raise(SIGALRM);
   
     attente.tv_sec = 0;      attente.tv_sec = 0;
     attente.tv_nsec = 1000000;      attente.tv_nsec = 1000000;
Line 784  rplinit(int argc, char *argv[], char *en Line 747  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 825  rplinit(int argc, char *argv[], char *en Line 783  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 858  rplinit(int argc, char *argv[], char *en Line 811  rplinit(int argc, char *argv[], char *en
     }      }
   
     signal_test = SIGTEST;      signal_test = SIGTEST;
     kill(getpid(), SIGTSTP);      raise(SIGTSTP);
   
     attente.tv_sec = 0;      attente.tv_sec = 0;
     attente.tv_nsec = 1000000;      attente.tv_nsec = 1000000;
Line 872  rplinit(int argc, char *argv[], char *en Line 825  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 913  rplinit(int argc, char *argv[], char *en Line 861  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 948  rplinit(int argc, char *argv[], char *en Line 891  rplinit(int argc, char *argv[], char *en
     }      }
   
     signal_test = SIGTEST;      signal_test = SIGTEST;
     kill(getpid(), SIGPIPE);      raise(SIGPIPE);
   
     attente.tv_sec = 0;      attente.tv_sec = 0;
     attente.tv_nsec = 1000000;      attente.tv_nsec = 1000000;
Line 962  rplinit(int argc, char *argv[], char *en Line 905  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 1003  rplinit(int argc, char *argv[], char *en Line 941  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 1038  rplinit(int argc, char *argv[], char *en Line 971  rplinit(int argc, char *argv[], char *en
     }      }
   
     signal_test = SIGTEST;      signal_test = SIGTEST;
     kill(getpid(), SIGUSR1);      raise(SIGUSR1);
   
     attente.tv_sec = 0;      attente.tv_sec = 0;
     attente.tv_nsec = 1000000;      attente.tv_nsec = 1000000;
Line 1052  rplinit(int argc, char *argv[], char *en Line 985  rplinit(int argc, char *argv[], char *en
     {      {
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_post(&((*s_etat_processus).semaphore_fork));              sem_post(&((*s_etat_processus).semaphore_fork));
             sem_post(&semaphore_gestionnaires_signaux);  
             sem_destroy(&semaphore_gestionnaires_signaux);  
             sem_destroy(&((*s_etat_processus).semaphore_fork));              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #       else  #       else
             sem_post((*s_etat_processus).semaphore_fork);              sem_post((*s_etat_processus).semaphore_fork);
             sem_post(semaphore_gestionnaires_signaux);              sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
             sem_destroy2(semaphore_gestionnaires_signaux, getpid(),  
                     SEM_SIGNAUX);  
             sem_destroy3((*s_etat_processus).semphore_fork, getpid(),  
                     pthread_self(), SEM_FORK);                      pthread_self(), SEM_FORK);
 #       endif  #       endif
   
         liberation_contexte_cas(s_etat_processus);          liberation_contexte_cas(s_etat_processus);
         liberation_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
   
 #       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #       ifdef HAVE_STACK_OVERFLOW_RECOVERY
             stackoverflow_deinstall_handler();              stackoverflow_deinstall_handler();
Line 1157  rplinit(int argc, char *argv[], char *en Line 1085  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1201  rplinit(int argc, char *argv[], char *en Line 1124  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1248  rplinit(int argc, char *argv[], char *en Line 1166  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                                   else  #                                   else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork, getpid(),                                              .semaphore_fork, getpid(),
                                             pthread_self(), SEM_FORK);                                              pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 1311  rplinit(int argc, char *argv[], char *en Line 1222  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                                   else  #                                   else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork, getpid(),                                              .semaphore_fork, getpid(),
                                             pthread_self(), SEM_FORK);                                              pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 1368  rplinit(int argc, char *argv[], char *en Line 1272  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1411  rplinit(int argc, char *argv[], char *en Line 1310  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1456  rplinit(int argc, char *argv[], char *en Line 1350  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1501  rplinit(int argc, char *argv[], char *en Line 1390  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1545  rplinit(int argc, char *argv[], char *en Line 1429  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1590  rplinit(int argc, char *argv[], char *en Line 1469  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1627  rplinit(int argc, char *argv[], char *en Line 1501  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1664  rplinit(int argc, char *argv[], char *en Line 1533  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1710  rplinit(int argc, char *argv[], char *en Line 1574  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1764  rplinit(int argc, char *argv[], char *en Line 1623  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1809  rplinit(int argc, char *argv[], char *en Line 1663  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1846  rplinit(int argc, char *argv[], char *en Line 1695  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1891  rplinit(int argc, char *argv[], char *en Line 1735  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1936  rplinit(int argc, char *argv[], char *en Line 1775  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 1981  rplinit(int argc, char *argv[], char *en Line 1815  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 2018  rplinit(int argc, char *argv[], char *en Line 1847  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 2066  rplinit(int argc, char *argv[], char *en Line 1890  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                                   else  #                                   else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork, getpid(),                                              .semaphore_fork, getpid(),
                                             pthread_self(), SEM_FORK);                                              pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 2127  rplinit(int argc, char *argv[], char *en Line 1944  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                                   else  #                                   else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork, getpid(),                                              .semaphore_fork, getpid(),
                                             pthread_self(), SEM_FORK);                                              pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 2181  rplinit(int argc, char *argv[], char *en Line 1991  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 2216  rplinit(int argc, char *argv[], char *en Line 2021  rplinit(int argc, char *argv[], char *en
                             }                              }
   
                             if (((*s_etat_processus).definitions_chainees =                              if (((*s_etat_processus).definitions_chainees =
                                     compactage((*s_etat_processus)                                      compactage(s_etat_processus,
                                     .definitions_chainees)) == NULL)                                      (*s_etat_processus).definitions_chainees))
                                       == NULL)
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 2256  rplinit(int argc, char *argv[], char *en Line 2057  rplinit(int argc, char *argv[], char *en
                             }                              }
   
                             (*s_etat_processus).longueur_definitions_chainees =                              (*s_etat_processus).longueur_definitions_chainees =
                                     strlen((*s_etat_processus)                                      (integer8) strlen((*s_etat_processus)
                                     .definitions_chainees);                                      .definitions_chainees);
   
                             break;                              break;
Line 2268  rplinit(int argc, char *argv[], char *en Line 2069  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 2316  rplinit(int argc, char *argv[], char *en Line 2112  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                                   else  #                                   else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork, getpid(),                                              .semaphore_fork, getpid(),
                                             pthread_self(), SEM_FORK);                                              pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 2377  rplinit(int argc, char *argv[], char *en Line 2166  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                                   else  #                                   else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork, getpid(),                                              .semaphore_fork, getpid(),
                                             pthread_self(), SEM_FORK);                                              pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 2430  rplinit(int argc, char *argv[], char *en Line 2212  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 2496  rplinit(int argc, char *argv[], char *en Line 2273  rplinit(int argc, char *argv[], char *en
 #                                       ifndef SEMAPHORES_NOMMES  #                                       ifndef SEMAPHORES_NOMMES
                                         sem_post(&((*s_etat_processus)                                          sem_post(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
                                         sem_post(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(&((*s_etat_processus)                                          sem_destroy(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
 #                                       else  #                                       else
                                         sem_post((*s_etat_processus)                                          sem_post((*s_etat_processus)
                                                 .semaphore_fork);                                                  .semaphore_fork);
                                         sem_post(  
                                                 semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy2(  
                                                 semaphore_gestionnaires_signaux,  
                                                 getpid(), SEM_SIGNAUX);  
                                         sem_destroy3((*s_etat_processus)                                          sem_destroy3((*s_etat_processus)
                                                 .semphore_fork, getpid(),                                                  .semaphore_fork, getpid(),
                                                 pthread_self(), SEM_FORK);                                                  pthread_self(), SEM_FORK);
 #                                       endif  #                                       endif
   
                                         liberation_contexte_cas(                                          liberation_contexte_cas(
                                                 s_etat_processus);                                                  s_etat_processus);
                                         liberation_queue_signaux(                                          destruction_queue_signaux(
                                                 s_etat_processus);                                                  s_etat_processus);
   
 #                                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
Line 2552  rplinit(int argc, char *argv[], char *en Line 2317  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 2596  rplinit(int argc, char *argv[], char *en Line 2356  rplinit(int argc, char *argv[], char *en
                             {                              {
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                               else  #                               else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 2725  rplinit(int argc, char *argv[], char *en Line 2480  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 2768  rplinit(int argc, char *argv[], char *en Line 2518  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 2803  rplinit(int argc, char *argv[], char *en Line 2548  rplinit(int argc, char *argv[], char *en
             }              }
   
             signal_test = SIGTEST;              signal_test = SIGTEST;
             kill(getpid(), SIGSEGV);              raise(SIGSEGV);
   
             attente.tv_sec = 0;              attente.tv_sec = 0;
             attente.tv_nsec = 1000000;              attente.tv_nsec = 1000000;
Line 2817  rplinit(int argc, char *argv[], char *en Line 2562  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 2861  rplinit(int argc, char *argv[], char *en Line 2601  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 2903  rplinit(int argc, char *argv[], char *en Line 2638  rplinit(int argc, char *argv[], char *en
             }              }
   
             signal_test = SIGTEST;              signal_test = SIGTEST;
             kill(getpid(), SIGBUS);              raise(SIGBUS);
   
             attente.tv_sec = 0;              attente.tv_sec = 0;
             attente.tv_nsec = 1000000;              attente.tv_nsec = 1000000;
Line 2917  rplinit(int argc, char *argv[], char *en Line 2652  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 2971  rplinit(int argc, char *argv[], char *en Line 2701  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 3042  rplinit(int argc, char *argv[], char *en Line 2767  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 3086  rplinit(int argc, char *argv[], char *en Line 2806  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 3129  rplinit(int argc, char *argv[], char *en Line 2844  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 3173  rplinit(int argc, char *argv[], char *en Line 2883  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 3216  rplinit(int argc, char *argv[], char *en Line 2921  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus)                      sem_destroy(&((*s_etat_processus)
                             .semaphore_fork));                              .semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 3282  rplinit(int argc, char *argv[], char *en Line 2982  rplinit(int argc, char *argv[], char *en
         {          {
 #           ifndef SEMAPHORES_NOMMES  #           ifndef SEMAPHORES_NOMMES
                 sem_post(&((*s_etat_processus).semaphore_fork));                  sem_post(&((*s_etat_processus).semaphore_fork));
                 sem_post(&semaphore_gestionnaires_signaux);  
                 sem_destroy(&semaphore_gestionnaires_signaux);  
                 sem_destroy(&((*s_etat_processus).semaphore_fork));                  sem_destroy(&((*s_etat_processus).semaphore_fork));
 #           else  #           else
                 sem_post((*s_etat_processus).semaphore_fork);                  sem_post((*s_etat_processus).semaphore_fork);
                 sem_post(semaphore_gestionnaires_signaux);                  sem_destroy3((*s_etat_processus).semaphore_fork,
                 sem_destroy2(semaphore_gestionnaires_signaux,  
                         getpid(), SEM_SIGNAUX);  
                 sem_destroy3((*s_etat_processus).semphore_fork,  
                         getpid(), pthread_self(), SEM_FORK);                          getpid(), pthread_self(), SEM_FORK);
 #           endif  #           endif
   
             liberation_contexte_cas(s_etat_processus);              liberation_contexte_cas(s_etat_processus);
             liberation_queue_signaux(s_etat_processus);              destruction_queue_signaux(s_etat_processus);
   
 #           ifdef HAVE_STACK_OVERFLOW_RECOVERY  #           ifdef HAVE_STACK_OVERFLOW_RECOVERY
                 stackoverflow_deinstall_handler();                  stackoverflow_deinstall_handler();
Line 3342  rplinit(int argc, char *argv[], char *en Line 3037  rplinit(int argc, char *argv[], char *en
         {          {
 #           ifndef SEMAPHORES_NOMMES  #           ifndef SEMAPHORES_NOMMES
                 sem_post(&((*s_etat_processus).semaphore_fork));                  sem_post(&((*s_etat_processus).semaphore_fork));
                 sem_post(&semaphore_gestionnaires_signaux);  
                 sem_destroy(&semaphore_gestionnaires_signaux);  
                 sem_destroy(&((*s_etat_processus).semaphore_fork));                  sem_destroy(&((*s_etat_processus).semaphore_fork));
 #           else  #           else
                 sem_post((*s_etat_processus).semaphore_fork);                  sem_post((*s_etat_processus).semaphore_fork);
                 sem_post(semaphore_gestionnaires_signaux);                  sem_destroy3((*s_etat_processus).semaphore_fork,
                 sem_destroy2(semaphore_gestionnaires_signaux,  
                         getpid(), SEM_SIGNAUX);  
                 sem_destroy3((*s_etat_processus).semphore_fork,  
                         getpid(), pthread_self(), SEM_FORK);                          getpid(), pthread_self(), SEM_FORK);
 #           endif  #           endif
   
             liberation_contexte_cas(s_etat_processus);              liberation_contexte_cas(s_etat_processus);
             liberation_queue_signaux(s_etat_processus);              destruction_queue_signaux(s_etat_processus);
   
 #           ifdef HAVE_STACK_OVERFLOW_RECOVERY  #           ifdef HAVE_STACK_OVERFLOW_RECOVERY
                 stackoverflow_deinstall_handler();                  stackoverflow_deinstall_handler();
Line 3406  rplinit(int argc, char *argv[], char *en Line 3096  rplinit(int argc, char *argv[], char *en
   
             (*s_etat_processus).liste_mutexes = NULL;              (*s_etat_processus).liste_mutexes = NULL;
             (*s_etat_processus).sections_critiques = 0;              (*s_etat_processus).sections_critiques = 0;
               (*s_etat_processus).initialisation_scheduler = d_faux;
   
             (*s_etat_processus).test_instruction = 'N';              (*s_etat_processus).test_instruction = 'N';
             (*s_etat_processus).nombre_arguments = 0;              (*s_etat_processus).nombre_arguments = 0;
Line 3439  rplinit(int argc, char *argv[], char *en Line 3130  rplinit(int argc, char *argv[], char *en
   
             (*s_etat_processus).s_arbre_variables = NULL;              (*s_etat_processus).s_arbre_variables = NULL;
             (*s_etat_processus).l_liste_variables_par_niveau = NULL;              (*s_etat_processus).l_liste_variables_par_niveau = NULL;
               (*s_etat_processus).l_liste_variables_statiques = NULL;
             (*s_etat_processus).gel_liste_variables = d_faux;              (*s_etat_processus).gel_liste_variables = d_faux;
               s_arbre_variables_partagees = NULL;
               l_liste_variables_partagees = NULL;
               (*s_etat_processus).s_arbre_variables_partagees =
                       &s_arbre_variables_partagees;
               (*s_etat_processus).l_liste_variables_partagees =
                       &l_liste_variables_partagees;
             (*s_etat_processus).pointeur_variable_courante = NULL;              (*s_etat_processus).pointeur_variable_courante = NULL;
             (*s_etat_processus).pointeur_variable_statique_courante = NULL;              (*s_etat_processus).pointeur_variable_statique_courante = NULL;
             (*s_etat_processus).l_liste_variables_statiques = NULL;              (*s_etat_processus).pointeur_variable_partagee_courante = NULL;
             (*s_etat_processus).niveau_courant = 0;              (*s_etat_processus).niveau_courant = 0;
             (*s_etat_processus).niveau_initial = 0;              (*s_etat_processus).niveau_initial = 0;
             (*s_etat_processus).creation_variables_statiques = d_faux;              (*s_etat_processus).creation_variables_statiques = d_faux;
Line 3601  rplinit(int argc, char *argv[], char *en Line 3299  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus).semaphore_fork));                      sem_destroy(&((*s_etat_processus).semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 3644  rplinit(int argc, char *argv[], char *en Line 3337  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus).semaphore_fork));                      sem_destroy(&((*s_etat_processus).semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 3701  rplinit(int argc, char *argv[], char *en Line 3389  rplinit(int argc, char *argv[], char *en
             {              {
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     sem_post(&((*s_etat_processus).semaphore_fork));                      sem_post(&((*s_etat_processus).semaphore_fork));
                     sem_post(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&semaphore_gestionnaires_signaux);  
                     sem_destroy(&((*s_etat_processus).semaphore_fork));                      sem_destroy(&((*s_etat_processus).semaphore_fork));
 #               else  #               else
                     sem_post((*s_etat_processus).semaphore_fork);                      sem_post((*s_etat_processus).semaphore_fork);
                     sem_post(semaphore_gestionnaires_signaux);                      sem_destroy3((*s_etat_processus).semaphore_fork,
                     sem_destroy2(semaphore_gestionnaires_signaux,  
                             getpid(), SEM_SIGNAUX);  
                     sem_destroy3((*s_etat_processus).semphore_fork,  
                             getpid(), pthread_self(), SEM_FORK);                              getpid(), pthread_self(), SEM_FORK);
 #               endif  #               endif
   
                 liberation_contexte_cas(s_etat_processus);                  liberation_contexte_cas(s_etat_processus);
                 liberation_queue_signaux(s_etat_processus);                  destruction_queue_signaux(s_etat_processus);
   
 #               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                     stackoverflow_deinstall_handler();                      stackoverflow_deinstall_handler();
Line 3791  rplinit(int argc, char *argv[], char *en Line 3474  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 3843  rplinit(int argc, char *argv[], char *en Line 3521  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 3923  rplinit(int argc, char *argv[], char *en Line 3596  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 3979  rplinit(int argc, char *argv[], char *en Line 3647  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 4075  rplinit(int argc, char *argv[], char *en Line 3738  rplinit(int argc, char *argv[], char *en
                         {                          {
 #                           ifndef SEMAPHORES_NOMMES  #                           ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                           else  #                           else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                           endif  #                           endif
   
                             liberation_contexte_cas(s_etat_processus);                              liberation_contexte_cas(s_etat_processus);
                             liberation_queue_signaux(s_etat_processus);                              destruction_queue_signaux(s_etat_processus);
   
 #                           ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                           ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 4135  rplinit(int argc, char *argv[], char *en Line 3793  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 4222  rplinit(int argc, char *argv[], char *en Line 3875  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 4270  rplinit(int argc, char *argv[], char *en Line 3918  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 4319  rplinit(int argc, char *argv[], char *en Line 3962  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 4367  rplinit(int argc, char *argv[], char *en Line 4005  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 4420  rplinit(int argc, char *argv[], char *en Line 4053  rplinit(int argc, char *argv[], char *en
                     {                      {
 #                       ifndef SEMAPHORES_NOMMES  #                       ifndef SEMAPHORES_NOMMES
                             sem_post(&((*s_etat_processus).semaphore_fork));                              sem_post(&((*s_etat_processus).semaphore_fork));
                             sem_post(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&semaphore_gestionnaires_signaux);  
                             sem_destroy(&((*s_etat_processus).semaphore_fork));                              sem_destroy(&((*s_etat_processus).semaphore_fork));
 #                       else  #                       else
                             sem_post((*s_etat_processus).semaphore_fork);                              sem_post((*s_etat_processus).semaphore_fork);
                             sem_post(semaphore_gestionnaires_signaux);                              sem_destroy3((*s_etat_processus).semaphore_fork,
                             sem_destroy2(semaphore_gestionnaires_signaux,  
                                     getpid(), SEM_SIGNAUX);  
                             sem_destroy3((*s_etat_processus).semphore_fork,  
                                     getpid(), pthread_self(), SEM_FORK);                                      getpid(), pthread_self(), SEM_FORK);
 #                       endif  #                       endif
   
                         liberation_contexte_cas(s_etat_processus);                          liberation_contexte_cas(s_etat_processus);
                         liberation_queue_signaux(s_etat_processus);                          destruction_queue_signaux(s_etat_processus);
   
 #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                       ifdef HAVE_STACK_OVERFLOW_RECOVERY
                             stackoverflow_deinstall_handler();                              stackoverflow_deinstall_handler();
Line 4478  rplinit(int argc, char *argv[], char *en Line 4106  rplinit(int argc, char *argv[], char *en
                     {                      {
                         (*s_etat_processus).erreur_systeme = d_es;                          (*s_etat_processus).erreur_systeme = d_es;
                         encart(s_etat_processus,                          encart(s_etat_processus,
                                 (unsigned long) (5 * 1000000));                                  (integer8) (5 * 1000000));
   
                         if ((*s_etat_processus).erreur_systeme != d_es)                          if ((*s_etat_processus).erreur_systeme != d_es)
                         {                          {
Line 4488  rplinit(int argc, char *argv[], char *en Line 4116  rplinit(int argc, char *argv[], char *en
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                               else  #                               else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork,                                              .semaphore_fork,
                                             getpid(), pthread_self(), SEM_FORK);                                              getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 4558  rplinit(int argc, char *argv[], char *en Line 4179  rplinit(int argc, char *argv[], char *en
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                               else  #                               else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork,                                              .semaphore_fork,
                                             getpid(), pthread_self(), SEM_FORK);                                              getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 4609  rplinit(int argc, char *argv[], char *en Line 4223  rplinit(int argc, char *argv[], char *en
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                               else  #                               else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork,                                              .semaphore_fork,
                                             getpid(), pthread_self(), SEM_FORK);                                              getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 4659  rplinit(int argc, char *argv[], char *en Line 4266  rplinit(int argc, char *argv[], char *en
                         (*s_etat_processus).definitions_chainees = tampon;                          (*s_etat_processus).definitions_chainees = tampon;
                         (*s_etat_processus).position_courante = 0;                          (*s_etat_processus).position_courante = 0;
   
                           (*s_etat_processus).type_en_cours = NON;
                         recherche_type(s_etat_processus);                          recherche_type(s_etat_processus);
   
                         if ((*s_etat_processus).erreur_systeme != d_es)                          if ((*s_etat_processus).erreur_systeme != d_es)
                         {                          {
 #                           ifndef SEMAPHORES_NOMMES  #                           ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                           else  #                           else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                           endif  #                           endif
   
                             liberation_contexte_cas(s_etat_processus);                              liberation_contexte_cas(s_etat_processus);
                             liberation_queue_signaux(s_etat_processus);                              destruction_queue_signaux(s_etat_processus);
   
 #                           ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                           ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 4725  rplinit(int argc, char *argv[], char *en Line 4328  rplinit(int argc, char *argv[], char *en
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                               else  #                               else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork,                                              .semaphore_fork,
                                             getpid(), pthread_self(), SEM_FORK);                                              getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 4777  rplinit(int argc, char *argv[], char *en Line 4373  rplinit(int argc, char *argv[], char *en
   
 #                           ifndef SEMAPHORES_NOMMES  #                           ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                           else  #                           else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                           endif  #                           endif
   
                             liberation_contexte_cas(s_etat_processus);                              liberation_contexte_cas(s_etat_processus);
                             liberation_queue_signaux(s_etat_processus);                              destruction_queue_signaux(s_etat_processus);
   
 #                           ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                           ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 4817  rplinit(int argc, char *argv[], char *en Line 4408  rplinit(int argc, char *argv[], char *en
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                               else  #                               else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork,                                              .semaphore_fork,
                                             getpid(), pthread_self(), SEM_FORK);                                              getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 4870  rplinit(int argc, char *argv[], char *en Line 4454  rplinit(int argc, char *argv[], char *en
   
 #                           ifndef SEMAPHORES_NOMMES  #                           ifndef SEMAPHORES_NOMMES
                                 sem_post(&((*s_etat_processus).semaphore_fork));                                  sem_post(&((*s_etat_processus).semaphore_fork));
                                 sem_post(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&semaphore_gestionnaires_signaux);  
                                 sem_destroy(&((*s_etat_processus)                                  sem_destroy(&((*s_etat_processus)
                                         .semaphore_fork));                                          .semaphore_fork));
 #                           else  #                           else
                                 sem_post((*s_etat_processus).semaphore_fork);                                  sem_post((*s_etat_processus).semaphore_fork);
                                 sem_post(semaphore_gestionnaires_signaux);                                  sem_destroy3((*s_etat_processus).semaphore_fork,
                                 sem_destroy2(semaphore_gestionnaires_signaux,  
                                         getpid(), SEM_SIGNAUX);  
                                 sem_destroy3((*s_etat_processus).semphore_fork,  
                                         getpid(), pthread_self(), SEM_FORK);                                          getpid(), pthread_self(), SEM_FORK);
 #                           endif  #                           endif
   
                             liberation_contexte_cas(s_etat_processus);                              liberation_contexte_cas(s_etat_processus);
                             liberation_queue_signaux(s_etat_processus);                              destruction_queue_signaux(s_etat_processus);
   
 #                           ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                           ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                 stackoverflow_deinstall_handler();                                  stackoverflow_deinstall_handler();
Line 4900  rplinit(int argc, char *argv[], char *en Line 4479  rplinit(int argc, char *argv[], char *en
                             return(EXIT_FAILURE);                              return(EXIT_FAILURE);
                         }                          }
   
                           empilement_pile_systeme(s_etat_processus);
   
                         if (evaluation(s_etat_processus, s_objet, 'E')                          if (evaluation(s_etat_processus, s_objet, 'E')
                                 == d_erreur)                                  == d_erreur)
                         {                          {
Line 4911  rplinit(int argc, char *argv[], char *en Line 4492  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                         sem_post(&((*s_etat_processus)                                          sem_post(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
                                         sem_post(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(&((*s_etat_processus)                                          sem_destroy(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
 #                                   else  #                                   else
                                         sem_post((*s_etat_processus)                                          sem_post((*s_etat_processus)
                                                 .semaphore_fork);                                                  .semaphore_fork);
                                         sem_post(  
                                                 semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy2(  
                                                 semaphore_gestionnaires_signaux,  
                                                 getpid(), SEM_SIGNAUX);  
                                         sem_destroy3((*s_etat_processus)                                          sem_destroy3((*s_etat_processus)
                                                 .semphore_fork, getpid(),                                                  .semaphore_fork, getpid(),
                                                 pthread_self(), SEM_FORK);                                                  pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                         stackoverflow_deinstall_handler();                                          stackoverflow_deinstall_handler();
Line 4970  rplinit(int argc, char *argv[], char *en Line 4539  rplinit(int argc, char *argv[], char *en
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                               else  #                               else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork,                                              .semaphore_fork,
                                             getpid(), pthread_self(), SEM_FORK);                                              getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 5014  rplinit(int argc, char *argv[], char *en Line 4576  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                         sem_post(&((*s_etat_processus)                                          sem_post(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
                                         sem_post(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(&((*s_etat_processus)                                          sem_destroy(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
 #                                   else  #                                   else
                                         sem_post((*s_etat_processus)                                          sem_post((*s_etat_processus)
                                                 .semaphore_fork);                                                  .semaphore_fork);
                                         sem_post(  
                                                 semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy2(  
                                                 semaphore_gestionnaires_signaux,  
                                                 getpid(), SEM_SIGNAUX);  
                                         sem_destroy3((*s_etat_processus)                                          sem_destroy3((*s_etat_processus)
                                                 .semphore_fork, getpid(),                                                  .semaphore_fork, getpid(),
                                                 pthread_self(), SEM_FORK);                                                  pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                         stackoverflow_deinstall_handler();                                          stackoverflow_deinstall_handler();
Line 5073  rplinit(int argc, char *argv[], char *en Line 4623  rplinit(int argc, char *argv[], char *en
 #                               ifndef SEMAPHORES_NOMMES  #                               ifndef SEMAPHORES_NOMMES
                                     sem_post(&((*s_etat_processus)                                      sem_post(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
                                     sem_post(&semaphore_gestionnaires_signaux);  
                                     sem_destroy(  
                                             &semaphore_gestionnaires_signaux);  
                                     sem_destroy(&((*s_etat_processus)                                      sem_destroy(&((*s_etat_processus)
                                             .semaphore_fork));                                              .semaphore_fork));
 #                               else  #                               else
                                     sem_post((*s_etat_processus)                                      sem_post((*s_etat_processus)
                                             .semaphore_fork);                                              .semaphore_fork);
                                     sem_post(semaphore_gestionnaires_signaux);  
                                     sem_destroy2(  
                                             semaphore_gestionnaires_signaux,  
                                             getpid(), SEM_SIGNAUX);  
                                     sem_destroy3((*s_etat_processus)                                      sem_destroy3((*s_etat_processus)
                                             .semphore_fork,                                              .semaphore_fork,
                                             getpid(), pthread_self(), SEM_FORK);                                              getpid(), pthread_self(), SEM_FORK);
 #                               endif  #                               endif
   
                                 liberation_contexte_cas(s_etat_processus);                                  liberation_contexte_cas(s_etat_processus);
                                 liberation_queue_signaux(s_etat_processus);                                  destruction_queue_signaux(s_etat_processus);
   
 #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                               ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                     stackoverflow_deinstall_handler();                                      stackoverflow_deinstall_handler();
Line 5134  rplinit(int argc, char *argv[], char *en Line 4677  rplinit(int argc, char *argv[], char *en
   
                                 if (erreur == d_absence_erreur)                                  if (erreur == d_absence_erreur)
                                 {                                  {
                                     if (((*s_etat_processus).var_volatile_alarme                                      if (((*s_etat_processus)
                                             == 0) && ((*s_etat_processus)  
                                             .arret_depuis_abort == 0) &&                                              .arret_depuis_abort == 0) &&
                                             ((*s_etat_processus).at_exit                                              ((*s_etat_processus).at_exit
                                             != NULL))                                              != NULL))
                                     {                                      {
                                           // Permet de traiter ATEXIT
                                           // même après réception d'un SIGINT.
                                           (*s_etat_processus)
                                                   .var_volatile_alarme = 0;
                                           (*s_etat_processus)
                                                   .var_volatile_requete_arret = 0;
   
                                           if ((*s_etat_processus).profilage ==
                                                   d_vrai)
                                           {
                                               profilage(s_etat_processus,
                                                       "ATEXIT");
                                           }
   
                                         erreur = evaluation(s_etat_processus,                                          erreur = evaluation(s_etat_processus,
                                                 (*s_etat_processus).at_exit,                                                  (*s_etat_processus).at_exit,
                                                 'E');                                                  'E');
   
                                           if ((*s_etat_processus).profilage ==
                                                   d_vrai)
                                           {
                                               profilage(s_etat_processus, NULL);
                                           }
   
                                           if (((*s_etat_processus)
                                                   .erreur_execution != d_ex) ||
                                                   ((*s_etat_processus).exception
                                                   != d_ep) || ((*s_etat_processus)
                                                   .erreur_systeme != d_es))
                                           {
                                               printf("%s [%d]\n", message =
                                                       messages(s_etat_processus),
                                                       (int) getpid());
                                               free(message);
   
                                               if (test_cfsf(s_etat_processus, 51)
                                                       == d_faux)
                                               {
                                                   printf("%s", ds_beep);
                                               }
   
                                               if ((*s_etat_processus).core ==
                                                       d_vrai)
                                               {
                                                   printf("\n");
   
                                                   if ((*s_etat_processus).langue
                                                           == 'F')
                                                   {
                                                       printf("+++Information : Gé"
                                                               "nération du fichie"
                                                               "r rpl-core "
                                                               "[%d]\n", (int)
                                                               getpid());
                                                   }
                                                   else
                                                   {
                                                       printf("+++Information : Wr"
                                                               "iting rpl-core fil"
                                                               "e [%d]\n",
                                                               (int) getpid());
                                                   }
   
                                                   rplcore(s_etat_processus);
   
                                                   if ((*s_etat_processus).langue
                                                           == 'F')
                                                   {
                                                       printf("+++Information : Pr"
                                                               "ocessus tracé [%d]"
                                                               "\n",
                                                               (int) getpid());
                                                   }
                                                   else
                                                   {
                                                       printf("+++Information : Do"
                                                               "ne [%d]\n", (int)
                                                               getpid());
                                                   }
   
                                                   printf("\n");
                                                   fflush(stdout);
                                               }
                                           }
                                     }                                      }
                                 }                                  }
                             }                              }
Line 5155  rplinit(int argc, char *argv[], char *en Line 4778  rplinit(int argc, char *argv[], char *en
   
                                 if (erreur == d_absence_erreur)                                  if (erreur == d_absence_erreur)
                                 {                                  {
                                     if (((*s_etat_processus).var_volatile_alarme                                      if (((*s_etat_processus)
                                             == 0) && ((*s_etat_processus)  
                                             .arret_depuis_abort == 0) &&                                              .arret_depuis_abort == 0) &&
                                             ((*s_etat_processus).at_exit                                              ((*s_etat_processus).at_exit
                                             != NULL))                                              != NULL))
                                     {                                      {
                                           // Permet de traiter ATEXIT
                                           // même après réception d'un SIGINT.
                                           (*s_etat_processus)
                                                   .var_volatile_alarme = 0;
                                           (*s_etat_processus)
                                                   .var_volatile_requete_arret = 0;
   
                                           if ((*s_etat_processus).profilage ==
                                                   d_vrai)
                                           {
                                               profilage(s_etat_processus,
                                                       "ATEXIT");
                                           }
   
                                         erreur = evaluation(s_etat_processus,                                          erreur = evaluation(s_etat_processus,
                                                 (*s_etat_processus).at_exit,                                                  (*s_etat_processus).at_exit,
                                                 'E');                                                  'E');
   
                                           if ((*s_etat_processus).profilage ==
                                                   d_vrai)
                                           {
                                               profilage(s_etat_processus, NULL);
                                           }
   
                                           if (((*s_etat_processus)
                                                   .erreur_execution != d_ex) ||
                                                   ((*s_etat_processus).exception
                                                   != d_ep) || ((*s_etat_processus)
                                                   .erreur_systeme != d_es))
                                           {
                                               printf("%s [%d]\n", message =
                                                       messages(s_etat_processus),
                                                       (int) getpid());
                                               free(message);
   
                                               if (test_cfsf(s_etat_processus, 51)
                                                       == d_faux)
                                               {
                                                   printf("%s", ds_beep);
                                               }
   
                                               if ((*s_etat_processus).core ==
                                                       d_vrai)
                                               {
                                                   printf("\n");
   
                                                   if ((*s_etat_processus).langue
                                                           == 'F')
                                                   {
                                                       printf("+++Information : Gé"
                                                               "nération du fichie"
                                                               "r rpl-core "
                                                               "[%d]\n", (int)
                                                               getpid());
                                                   }
                                                   else
                                                   {
                                                       printf("+++Information : Wr"
                                                               "iting rpl-core fil"
                                                               "e [%d]\n",
                                                               (int) getpid());
                                                   }
   
                                                   rplcore(s_etat_processus);
   
                                                   if ((*s_etat_processus).langue
                                                           == 'F')
                                                   {
                                                       printf("+++Information : Pr"
                                                               "ocessus tracé [%d]"
                                                               "\n",
                                                               (int) getpid());
                                                   }
                                                   else
                                                   {
                                                       printf("+++Information : Do"
                                                               "ne [%d]\n", (int)
                                                               getpid());
                                                   }
   
                                                   printf("\n");
                                                   fflush(stdout);
                                               }
                                           }
                                     }                                      }
                                 }                                  }
                             }                              }
Line 5204  rplinit(int argc, char *argv[], char *en Line 4907  rplinit(int argc, char *argv[], char *en
                         pthread_cancel((*s_etat_processus).thread_fusible);                          pthread_cancel((*s_etat_processus).thread_fusible);
                     }                      }
   
                     pthread_mutex_lock(&((*s_etat_processus).mutex));                      pthread_mutex_lock(&((*s_etat_processus)
                               .mutex_pile_processus));
   
                     l_element_courant = (void *) (*s_etat_processus)                      l_element_courant = (void *) (*s_etat_processus)
                             .l_base_pile_processus;                              .l_base_pile_processus;
Line 5376  rplinit(int argc, char *argv[], char *en Line 5080  rplinit(int argc, char *argv[], char *en
                         l_element_courant = (void *)                          l_element_courant = (void *)
                                 (*s_etat_processus).l_base_pile_processus;                                  (*s_etat_processus).l_base_pile_processus;
   
                         for(i = 0; i < (unsigned long)                          for(i = 0; i < (*(*((struct_processus_fils *)
                                 (*(*((struct_processus_fils *)  
                                 (*(*((struct_liste_chainee *)                                  (*(*((struct_liste_chainee *)
                                 l_element_courant)).donnee).objet)).thread)                                  l_element_courant)).donnee).objet)).thread)
                                 .nombre_objets_dans_pipe; i++)                                  .nombre_objets_dans_pipe; i++)
Line 5405  rplinit(int argc, char *argv[], char *en Line 5108  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                         sem_post(&((*s_etat_processus)                                          sem_post(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
                                         sem_post(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(&((*s_etat_processus)                                          sem_destroy(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
 #                                   else  #                                   else
                                         sem_post((*s_etat_processus)                                          sem_post((*s_etat_processus)
                                                 .semaphore_fork);                                                  .semaphore_fork);
                                         sem_post(  
                                                 semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy2(  
                                                 semaphore_gestionnaires_signaux,  
                                                 getpid(), SEM_SIGNAUX);  
                                         sem_destroy3((*s_etat_processus)                                          sem_destroy3((*s_etat_processus)
                                                 .semphore_fork, getpid(),                                                  .semaphore_fork, getpid(),
                                                 pthread_self(), SEM_FORK);                                                  pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                         stackoverflow_deinstall_handler();                                          stackoverflow_deinstall_handler();
Line 5441  rplinit(int argc, char *argv[], char *en Line 5132  rplinit(int argc, char *argv[], char *en
                                         }                                          }
 #                                   endif  #                                   endif
   
                                     pthread_mutex_unlock(                                      pthread_mutex_unlock(&((*s_etat_processus)
                                             &((*s_etat_processus).mutex));                                              .mutex_pile_processus));
                                     return(EXIT_FAILURE);                                      return(EXIT_FAILURE);
                                 }                                  }
   
Line 5468  rplinit(int argc, char *argv[], char *en Line 5159  rplinit(int argc, char *argv[], char *en
 #                                   ifndef SEMAPHORES_NOMMES  #                                   ifndef SEMAPHORES_NOMMES
                                         sem_post(&((*s_etat_processus)                                          sem_post(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
                                         sem_post(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(  
                                                 &semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy(&((*s_etat_processus)                                          sem_destroy(&((*s_etat_processus)
                                                 .semaphore_fork));                                                  .semaphore_fork));
 #                                   else  #                                   else
                                         sem_post((*s_etat_processus)                                          sem_post((*s_etat_processus)
                                                 .semaphore_fork);                                                  .semaphore_fork);
                                         sem_post(  
                                                 semaphore_gestionnaires_signaux  
                                                 );  
                                         sem_destroy2(  
                                                 semaphore_gestionnaires_signaux,  
                                                 getpid(), SEM_SIGNAUX);  
                                         sem_destroy3((*s_etat_processus)                                          sem_destroy3((*s_etat_processus)
                                                 .semphore_fork, getpid(),                                                  .semaphore_fork, getpid(),
                                                 pthread_self(), SEM_FORK);                                                  pthread_self(), SEM_FORK);
 #                                   endif  #                                   endif
   
                                     liberation_contexte_cas(s_etat_processus);                                      liberation_contexte_cas(s_etat_processus);
                                     liberation_queue_signaux(s_etat_processus);                                      destruction_queue_signaux(s_etat_processus);
   
 #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #                                   ifdef HAVE_STACK_OVERFLOW_RECOVERY
                                         stackoverflow_deinstall_handler();                                          stackoverflow_deinstall_handler();
Line 5504  rplinit(int argc, char *argv[], char *en Line 5183  rplinit(int argc, char *argv[], char *en
                                         }                                          }
 #                                   endif  #                                   endif
   
                                     pthread_mutex_unlock(                                      pthread_mutex_unlock(&((*s_etat_processus)
                                             &((*s_etat_processus).mutex));                                              .mutex_pile_processus));
                                     return(EXIT_FAILURE);                                      return(EXIT_FAILURE);
                                 }                                  }
                             }                              }
                         }                          }
   
                         pthread_mutex_unlock(&((*s_etat_processus).mutex));                          pthread_mutex_lock(&((*s_etat_processus)
                                   .mutex_interruptions));
   
                         if ((*s_etat_processus)                          if ((*s_etat_processus)
                                 .nombre_interruptions_non_affectees != 0)                                  .nombre_interruptions_non_affectees != 0)
Line 5520  rplinit(int argc, char *argv[], char *en Line 5200  rplinit(int argc, char *argv[], char *en
                                     s_etat_processus);                                      s_etat_processus);
                         }                          }
   
                           pthread_mutex_unlock(&((*s_etat_processus)
                                   .mutex_interruptions));
                           pthread_mutex_unlock(&((*s_etat_processus)
                                   .mutex_pile_processus));
                         nanosleep(&attente, NULL);                          nanosleep(&attente, NULL);
                         scrutation_interruptions(s_etat_processus);                          scrutation_interruptions(s_etat_processus);
                         pthread_mutex_lock(&((*s_etat_processus).mutex));                          pthread_mutex_lock(&((*s_etat_processus)
                                   .mutex_pile_processus));
                     }                      }
   
                     pthread_mutex_unlock(&((*s_etat_processus).mutex));                      pthread_mutex_unlock(&((*s_etat_processus)
                               .mutex_pile_processus));
   
                     erreur_historique = write_history(                      erreur_historique = write_history(
                             (*s_etat_processus).nom_fichier_historique);                              (*s_etat_processus).nom_fichier_historique);
Line 5675  rplinit(int argc, char *argv[], char *en Line 5361  rplinit(int argc, char *argv[], char *en
                      * le libérer...                       * le libérer...
                      */                       */
   
                       liberation_arbre_variables_partagees(s_etat_processus,
                               (*(*s_etat_processus).s_arbre_variables_partagees));
                     liberation_arbre_variables(s_etat_processus,                      liberation_arbre_variables(s_etat_processus,
                             (*s_etat_processus).s_arbre_variables, d_vrai);                              (*s_etat_processus).s_arbre_variables, d_vrai);
                     free((*s_etat_processus).pointeurs_caracteres_variables);                      free((*s_etat_processus).pointeurs_caracteres_variables);
Line 5690  rplinit(int argc, char *argv[], char *en Line 5378  rplinit(int argc, char *argv[], char *en
                         l_element_statique_courant = l_element_statique_suivant;                          l_element_statique_courant = l_element_statique_suivant;
                     }                      }
   
                     for(i = 0; i < (*((*s_etat_processus)                      l_element_partage_courant = (*(*s_etat_processus)
                             .s_liste_variables_partagees)).nombre_variables;                              .l_liste_variables_partagees);
                             i++)  
                     {  
                         liberation(s_etat_processus, (*((*s_etat_processus)  
                                 .s_liste_variables_partagees)).table[i].objet);  
                         free((*((*s_etat_processus)  
                                 .s_liste_variables_partagees)).table[i].nom);  
                     }  
   
                     free((struct_variable_partagee *)                      while(l_element_partage_courant != NULL)
                             (*((*s_etat_processus).s_liste_variables_partagees))                      {
                             .table);                          l_element_partage_suivant =
                                   (*l_element_partage_courant).suivant;
                           free(l_element_partage_courant);
                           l_element_partage_courant = l_element_partage_suivant;
                       }
   
                     /*                      /*
                      * Si resultats est non nul, rplinit a été appelé                       * Si resultats est non nul, rplinit a été appelé
Line 5718  rplinit(int argc, char *argv[], char *en Line 5403  rplinit(int argc, char *argv[], char *en
                         {                          {
                             free((*resultats));                              free((*resultats));
   
                             if (((*resultats) = malloc(((*s_etat_processus)                              if (((*resultats) = malloc(((size_t)
                                     .hauteur_pile_operationnelle + 1)                                      ((*s_etat_processus)
                                       .hauteur_pile_operationnelle + 1))
                                     * sizeof(unsigned char **))) != NULL)                                      * sizeof(unsigned char **))) != NULL)
                             {                              {
                                 (*resultats)[(*s_etat_processus)                                  (*resultats)[(*s_etat_processus)
Line 6035  rplinit(int argc, char *argv[], char *en Line 5721  rplinit(int argc, char *argv[], char *en
     closelog();      closelog();
   
     pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes));      pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes));
     pthread_mutex_destroy(&((*((*s_etat_processus).s_liste_variables_partagees))  
             .mutex));  
   
     retrait_thread(s_etat_processus);      retrait_thread(s_etat_processus);
   
     pthread_mutex_destroy(&((*s_etat_processus).mutex));      pthread_mutex_destroy(&((*s_etat_processus).mutex_pile_processus));
     pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation));      pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation));
       pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation_buffer));
       pthread_mutex_destroy(&((*s_etat_processus).mutex_interruptions));
       pthread_mutex_destroy(&((*s_etat_processus).mutex_signaux));
     pthread_mutex_destroy(&mutex_sections_critiques);      pthread_mutex_destroy(&mutex_sections_critiques);
       pthread_mutex_destroy(&mutex_liste_variables_partagees);
   
 #   ifndef SEMAPHORES_NOMMES  #   ifndef SEMAPHORES_NOMMES
     sem_post(&((*s_etat_processus).semaphore_fork));      sem_post(&((*s_etat_processus).semaphore_fork));
Line 6055  rplinit(int argc, char *argv[], char *en Line 5743  rplinit(int argc, char *argv[], char *en
   
     free((*s_etat_processus).localisation);      free((*s_etat_processus).localisation);
   
 #   ifndef SEMAPHORES_NOMMES  
     sem_post(&semaphore_gestionnaires_signaux);  
     sem_destroy(&semaphore_gestionnaires_signaux);  
 #   else  
     sem_post(semaphore_gestionnaires_signaux);  
     sem_destroy2(semaphore_gestionnaires_signaux, getpid(), SEM_SIGNAUX);  
 #   endif  
   
     destruction_queue_signaux(s_etat_processus);      destruction_queue_signaux(s_etat_processus);
     liberation_contexte_cas(s_etat_processus);      liberation_contexte_cas(s_etat_processus);
   
Line 6070  rplinit(int argc, char *argv[], char *en Line 5750  rplinit(int argc, char *argv[], char *en
   
     if ((*s_etat_processus).requete_redemarrage == d_vrai)      if ((*s_etat_processus).requete_redemarrage == d_vrai)
     {      {
         chdir(repertoire_initial);          if (chdir(repertoire_initial) == 0)
         execvp(arg_exec[0], &(arg_exec[0]));          {
               execvp(arg_exec[0], &(arg_exec[0]));
           }
   
         erreur = d_erreur;          erreur = d_erreur;
     }      }
   
     free(arg_exec);      free(arg_exec);
     arret_thread_signaux(s_etat_processus);      arret_thread_signaux(s_etat_processus);
     free(s_etat_processus);      liberation_etat_processus_readline();
       liberation_allocateur_buffer(s_etat_processus);
       sys_free(s_etat_processus);
   
 #   ifdef DEBUG_MEMOIRE  #   ifdef DEBUG_MEMOIRE
     debug_memoire_verification();      debug_memoire_verification();
Line 6203  controle_integrite(struct_processus *s_e Line 5888  controle_integrite(struct_processus *s_e
   
   
 unsigned char *  unsigned char *
 date_compilation()  date_compilation(struct_processus *s_etat_processus)
 {  {
     unsigned char       *date;      unsigned char       *date;
   
Line 6218  date_compilation() Line 5903  date_compilation()
     return(date);      return(date);
 }  }
   
   #pragma GCC diagnostic pop
   
 // vim: ts=4  // vim: ts=4

Removed from v.1.124  
changed lines
  Added in v.1.166


CVSweb interface <joel.bertrand@systella.fr>