Diff for /rpl/src/rpl.c between versions 1.78 and 1.81

version 1.78, 2011/08/30 14:19:28 version 1.81, 2011/09/09 12:23:25
Line 187  rplinit(int argc, char *argv[], unsigned Line 187  rplinit(int argc, char *argv[], unsigned
     (*s_etat_processus).exception = d_ep;      (*s_etat_processus).exception = d_ep;
     (*s_etat_processus).erreur_systeme = d_es;      (*s_etat_processus).erreur_systeme = d_es;
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
       (*s_etat_processus).compteur_violation_d_acces = 0;
   
     (*s_etat_processus).rpl_home = rpl_home;      (*s_etat_processus).rpl_home = rpl_home;
   
Line 439  rplinit(int argc, char *argv[], unsigned Line 440  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGINT);
   
       if (signal_test != SIGINT)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
     if (sigaction(SIGTERM, &action, NULL) != 0)      if (sigaction(SIGTERM, &action, NULL) != 0)
     {      {
         erreur = d_es_signal;          erreur = d_es_signal;
Line 456  rplinit(int argc, char *argv[], unsigned Line 477  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGTERM);
   
       if (signal_test != SIGTERM)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption2;      action.sa_sigaction = interruption2;
 #   else  #   else
Line 478  rplinit(int argc, char *argv[], unsigned Line 519  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGTSTP);
   
       if (signal_test != SIGTSTP)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption4;      action.sa_sigaction = interruption4;
 #   else  #   else
Line 501  rplinit(int argc, char *argv[], unsigned Line 562  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGSTART);
   
       if (signal_test != SIGSTART)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
     if (sigaction(SIGCONT, &action, NULL) != 0)      if (sigaction(SIGCONT, &action, NULL) != 0)
     {      {
         if ((*s_etat_processus).langue == 'F')          if ((*s_etat_processus).langue == 'F')
Line 516  rplinit(int argc, char *argv[], unsigned Line 597  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGCONT);
   
       if (signal_test != SIGCONT)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption5;      action.sa_sigaction = interruption5;
 #   else  #   else
Line 540  rplinit(int argc, char *argv[], unsigned Line 641  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGFSTOP);
   
       if (signal_test != SIGFSTOP)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption11;      action.sa_sigaction = interruption11;
 #   else  #   else
Line 564  rplinit(int argc, char *argv[], unsigned Line 685  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGFABORT);
   
       if (signal_test != SIGFABORT)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption8;      action.sa_sigaction = interruption8;
 #   else  #   else
Line 588  rplinit(int argc, char *argv[], unsigned Line 729  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGURG);
   
       if (signal_test != SIGURG)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption7;      action.sa_sigaction = interruption7;
 #   else  #   else
Line 612  rplinit(int argc, char *argv[], unsigned Line 773  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGPIPE);
   
       if (signal_test != SIGPIPE)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption6;      action.sa_sigaction = interruption6;
 #   else  #   else
Line 636  rplinit(int argc, char *argv[], unsigned Line 817  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGINJECT);
   
       if (signal_test != SIGINJECT)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption9;      action.sa_sigaction = interruption9;
 #   else  #   else
Line 660  rplinit(int argc, char *argv[], unsigned Line 861  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGABORT);
   
       if (signal_test != SIGABORT)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption1;      action.sa_sigaction = interruption1;
 #   else  #   else
Line 684  rplinit(int argc, char *argv[], unsigned Line 905  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       signal_test = SIGTEST;
       kill(getpid(), SIGALRM);
   
       if (signal_test != SIGALRM)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
 #   ifndef _BROKEN_SIGINFO  #   ifndef _BROKEN_SIGINFO
     action.sa_sigaction = interruption3;      action.sa_sigaction = interruption3;
 #   else  #   else
Line 1858  rplinit(int argc, char *argv[], unsigned Line 2099  rplinit(int argc, char *argv[], unsigned
   
             (*s_etat_processus).l_base_pile = NULL;              (*s_etat_processus).l_base_pile = NULL;
             (*s_etat_processus).l_base_pile_last = NULL;              (*s_etat_processus).l_base_pile_last = NULL;
             (*s_etat_processus).l_base_pile_undo = NULL;  
   
             (*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;
Line 2766  rplinit(int argc, char *argv[], unsigned Line 3006  rplinit(int argc, char *argv[], unsigned
                             if (setjmp(contexte_initial) == 0)                              if (setjmp(contexte_initial) == 0)
                             {                              {
                                 erreur = sequenceur(s_etat_processus);                                  erreur = sequenceur(s_etat_processus);
   
                                   if (erreur == d_absence_erreur)
                                   {
                                       if (((*s_etat_processus).var_volatile_alarme
                                               == 0) && ((*s_etat_processus)
                                               .arret_depuis_abort == 0) &&
                                               ((*s_etat_processus).at_exit
                                               != NULL))
                                       {
                                           erreur = evaluation(s_etat_processus,
                                                   (*s_etat_processus).at_exit,
                                                   'E');
                                       }
                                   }
                             }                              }
                         }                          }
                         else                          else
Line 2773  rplinit(int argc, char *argv[], unsigned Line 3027  rplinit(int argc, char *argv[], unsigned
                             if (setjmp(contexte_initial) == 0)                              if (setjmp(contexte_initial) == 0)
                             {                              {
                                 erreur = sequenceur_optimise(s_etat_processus);                                  erreur = sequenceur_optimise(s_etat_processus);
                             }  
                         }  
   
                         if (erreur == d_absence_erreur)                                  if (erreur == d_absence_erreur)
                         {                                  {
                             if (((*s_etat_processus).var_volatile_alarme == 0)                                      if (((*s_etat_processus).var_volatile_alarme
                                     && ((*s_etat_processus).arret_depuis_abort                                              == 0) && ((*s_etat_processus)
                                     == 0) && ((*s_etat_processus).at_exit                                              .arret_depuis_abort == 0) &&
                                     != NULL))                                              ((*s_etat_processus).at_exit
                             {                                              != NULL))
                                 erreur = evaluation(s_etat_processus,                                      {
                                         (*s_etat_processus).at_exit, 'E');                                          erreur = evaluation(s_etat_processus,
                                                   (*s_etat_processus).at_exit,
                                                   'E');
                                       }
                                   }
                             }                              }
                         }                          }
                     }                      }
Line 3385  rplinit(int argc, char *argv[], unsigned Line 3641  rplinit(int argc, char *argv[], unsigned
                     while(l_element_courant != NULL)                      while(l_element_courant != NULL)
                     {                      {
                         l_element_suivant = (*((struct_liste_chainee *)                          l_element_suivant = (*((struct_liste_chainee *)
                                 l_element_courant)).suivant;  
   
                         liberation(s_etat_processus,  
                                 (*((struct_liste_chainee *)  
                                 l_element_courant)).donnee);  
                         free((struct_liste_chainee *) l_element_courant);  
   
                         l_element_courant = l_element_suivant;  
                     }  
   
                     l_element_courant = (void *) (*s_etat_processus)  
                             .l_base_pile_undo;  
                     while(l_element_courant != NULL)  
                     {  
                         l_element_suivant = (*((struct_liste_chainee *)  
                                 l_element_courant)).suivant;                                  l_element_courant)).suivant;
   
                         liberation(s_etat_processus,                          liberation(s_etat_processus,

Removed from v.1.78  
changed lines
  Added in v.1.81


CVSweb interface <joel.bertrand@systella.fr>