--- rpl/src/rpl.c 2010/12/08 20:58:16 1.52 +++ rpl/src/rpl.c 2011/04/20 08:26:04 1.62 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.20 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.0.prerelease.0 + Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -307,11 +307,11 @@ rplinit(int argc, char *argv[], unsigned if ((*s_etat_processus).langue == 'F') { - printf("+++Copyright (C) 1989 à 2009, 2010 BERTRAND Joël\n"); + printf("+++Copyright (C) 1989 à 2010, 2011 BERTRAND Joël\n"); } else { - printf("+++Copyright (C) 1989 to 2009, 2010 BERTRAND Joel\n"); + printf("+++Copyright (C) 1989 to 2010, 2011 BERTRAND Joel\n"); } if (getenv("HOME") != NULL) @@ -438,6 +438,23 @@ rplinit(int argc, char *argv[], unsigned return(EXIT_FAILURE); } + if (sigaction(SIGTERM, &action, NULL) != 0) + { + 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 action.sa_sigaction = interruption2; # else @@ -465,7 +482,8 @@ rplinit(int argc, char *argv[], unsigned # else action.sa_handler = interruption4; # endif - action.sa_flags = SA_ONSTACK | SA_SIGINFO | SA_NODEFER; + // SIGCONT ne doit pas pouvoir être appelé depuis son gestionnaire. + action.sa_flags = SA_ONSTACK | SA_SIGINFO; if (sigaction(SIGSTART, &action, NULL) != 0) { @@ -1599,7 +1617,7 @@ rplinit(int argc, char *argv[], unsigned # else action.sa_handler = interruption10; # endif - action.sa_flags = SA_ONSTACK | SA_SIGINFO | SA_NODEFER; + action.sa_flags = SA_ONSTACK | SA_SIGINFO; if (sigaction(SIGHUP, &action, NULL) != 0) { @@ -1815,7 +1833,16 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).affichage_arguments = 'N'; (*s_etat_processus).autorisation_conversion_chaine = 'Y'; (*s_etat_processus).autorisation_evaluation_nom = 'Y'; - (*s_etat_processus).autorisation_nom_implicite = 'Y'; + + if (mode_interactif == d_vrai) + { + (*s_etat_processus).autorisation_nom_implicite = 'Y'; + } + else + { + (*s_etat_processus).autorisation_nom_implicite = 'N'; + } + (*s_etat_processus).autorisation_empilement_programme = 'N'; (*s_etat_processus).requete_arret = 'N'; (*s_etat_processus).evaluation_forcee = 'N'; @@ -2522,6 +2549,7 @@ rplinit(int argc, char *argv[], unsigned fflush(stdout); initialisation_instructions(s_etat_processus); + initialisation_variables(s_etat_processus); if (arguments != NULL) { @@ -3557,12 +3585,6 @@ rplinit(int argc, char *argv[], unsigned } } -# if !defined(Cygwin) && !defined(OpenBSD) - (*s_etat_processus).pile_signal.ss_flags = SS_DISABLE; - sigaltstack(&((*s_etat_processus).pile_signal), NULL); - free((*s_etat_processus).pile_signal.ss_sp); -# endif - closelog(); pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes));