--- rpl/src/rpl.c 2012/10/05 13:12:39 1.120 +++ rpl/src/rpl.c 2012/10/17 14:27:06 1.123 @@ -80,6 +80,9 @@ rplinit(int argc, char *argv[], char *en struct_processus *s_etat_processus; + struct_liste_variables_statiques *l_element_statique_courant; + struct_liste_variables_statiques *l_element_statique_suivant; + struct_table_variables_partagees s_variables_partagees; struct sigaction action; @@ -299,29 +302,32 @@ rplinit(int argc, char *argv[], char *en insertion_thread(s_etat_processus, d_vrai); creation_queue_signaux(s_etat_processus); -# ifndef OS2 - localisation_courante(s_etat_processus); -# else - if ((*s_etat_processus).erreur_systeme != d_es) + if (d_forced_locale == 0) { - if (((*s_etat_processus).localisation = malloc((strlen(d_locale) + 1) * - sizeof(unsigned char))) == NULL) + localisation_courante(s_etat_processus); + } + else + { + if ((*s_etat_processus).erreur_systeme != d_es) { - if ((*s_etat_processus).langue == 'F') - { - uprintf("+++Système : Mémoire insuffisante\n"); - } - else + if (((*s_etat_processus).localisation = malloc((strlen(d_locale) + + 1) * sizeof(unsigned char))) == NULL) { - uprintf("+++System : Not enough memory\n"); + if ((*s_etat_processus).langue == 'F') + { + uprintf("+++Système : Mémoire insuffisante\n"); + } + else + { + uprintf("+++System : Not enough memory\n"); + } + + return(EXIT_FAILURE); } - return(EXIT_FAILURE); + strcpy((*s_etat_processus).localisation, d_locale); } - - strcpy((*s_etat_processus).localisation, d_locale); } -# endif (*s_etat_processus).erreur_systeme = d_es; @@ -411,6 +417,23 @@ rplinit(int argc, char *argv[], char *en } # endif + if (lancement_thread_signaux(s_etat_processus) != d_absence_erreur) + { + 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); + } + action.sa_handler = interruption1; action.sa_flags = 0; @@ -3345,6 +3368,17 @@ rplinit(int argc, char *argv[], char *en (*s_etat_processus).s_arbre_variables, d_vrai); free((*s_etat_processus).pointeurs_caracteres_variables); + l_element_statique_courant = (*s_etat_processus) + .l_liste_variables_statiques; + + while(l_element_statique_courant != NULL) + { + l_element_statique_suivant = + (*l_element_statique_courant).suivant; + free(l_element_statique_courant); + l_element_statique_courant = l_element_statique_suivant; + } + for(i = 0; i < (*((*s_etat_processus) .s_liste_variables_partagees)).nombre_variables; i++) @@ -3735,6 +3769,7 @@ rplinit(int argc, char *argv[], char *en } free(arg_exec); + arret_thread_signaux(s_etat_processus); free(s_etat_processus); # ifdef DEBUG_MEMOIRE