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

version 1.124, 2012/10/19 19:05:52 version 1.131, 2012/12/19 09:58:28
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.11    RPL/2 (R) version 4.1.12
   Copyright (C) 1989-2012 Dr. BERTRAND Joël    Copyright (C) 1989-2012 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 80  rplinit(int argc, char *argv[], char *en Line 80  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 269  rplinit(int argc, char *argv[], char *en Line 273  rplinit(int argc, char *argv[], char *en
     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
Line 305  rplinit(int argc, char *argv[], char *en Line 314  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 438  rplinit(int argc, char *argv[], char *en Line 435  rplinit(int argc, char *argv[], char *en
   
     if ((*s_etat_processus).langue == 'F')      if ((*s_etat_processus).langue == 'F')
     {      {
         printf("+++Copyright (C) 1989 à 2011, 2012 BERTRAND Joël\n");          printf("+++Copyright (C) 1989 à 2012, 2013 BERTRAND Joël\n");
     }      }
     else      else
     {      {
         printf("+++Copyright (C) 1989 to 2011, 2012 BERTRAND Joel\n");          printf("+++Copyright (C) 1989 to 2012, 2013 BERTRAND Joel\n");
     }      }
   
     if (getenv("HOME") != NULL)      if (getenv("HOME") != NULL)
Line 3439  rplinit(int argc, char *argv[], char *en Line 3436  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 5675  rplinit(int argc, char *argv[], char *en Line 5679  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 5696  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 6035  rplinit(int argc, char *argv[], char *en Line 6038  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));
     pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation));      pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation));
     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));

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


CVSweb interface <joel.bertrand@systella.fr>