Diff for /rpl/src/rpl.c between versions 1.103 and 1.107

version 1.103, 2011/11/30 17:21:07 version 1.107, 2012/01/05 10:19:05
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.5    RPL/2 (R) version 4.1.5
   Copyright (C) 1989-2011 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 37  rplinit(int argc, char *argv[], char *en Line 37  rplinit(int argc, char *argv[], char *en
 #   include                             "copyright-conv.h"  #   include                             "copyright-conv.h"
 #   include                             "licence-conv.h"  #   include                             "licence-conv.h"
   
       char                                **arg_exec;
   
 #   ifdef HAVE_STACK_OVERFLOW_RECOVERY  #   ifdef HAVE_STACK_OVERFLOW_RECOVERY
     char                                pile_signaux[SIGSTKSZ];      char                                pile_signaux[SIGSTKSZ];
 #   endif  #   endif
Line 201  rplinit(int argc, char *argv[], char *en Line 203  rplinit(int argc, char *argv[], char *en
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       if ((arg_exec = malloc((argc + 1) * sizeof(char *))) == NULL)
       {
           if ((langue = getenv("LANG")) != NULL)
           {
               if (strncmp(langue, "fr", 2) == 0)
               {
                   uprintf("+++Système : Mémoire insuffisante\n");
               }
               else
               {
                   uprintf("+++System : Not enough memory\n");
               }
           }
           else
           {
               uprintf("+++System : Not enough memory\n");
           }
   
           return(EXIT_FAILURE);
       }
   
       for(i = 0; i < (unsigned long) argc; i++)
       {
           arg_exec[i] = argv[i];
       }
   
       argv[argc] = NULL;
   
     initialisation_contexte_cas(s_etat_processus);      initialisation_contexte_cas(s_etat_processus);
   
     (*s_etat_processus).exception = d_ep;      (*s_etat_processus).exception = d_ep;
Line 315  rplinit(int argc, char *argv[], char *en Line 345  rplinit(int argc, char *argv[], char *en
   
     if ((*s_etat_processus).langue == 'F')      if ((*s_etat_processus).langue == 'F')
     {      {
         printf("+++Copyright (C) 1989 à 2010, 2011 BERTRAND Joël\n");          printf("+++Copyright (C) 1989 à 2011, 2012 BERTRAND Joël\n");
     }      }
     else      else
     {      {
         printf("+++Copyright (C) 1989 to 2010, 2011 BERTRAND Joel\n");          printf("+++Copyright (C) 1989 to 2011, 2012 BERTRAND Joel\n");
     }      }
   
     if (getenv("HOME") != NULL)      if (getenv("HOME") != NULL)
Line 453  rplinit(int argc, char *argv[], char *en Line 483  rplinit(int argc, char *argv[], char *en
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       if (sigaction(SIGALRM, &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);
       }
   
       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);
       }
   
     action.sa_handler = interruption2;      action.sa_handler = interruption2;
     action.sa_flags = 0;      action.sa_flags = 0;
   
Line 1965  rplinit(int argc, char *argv[], char *en Line 2032  rplinit(int argc, char *argv[], char *en
             (*s_etat_processus).arbre_instructions = NULL;              (*s_etat_processus).arbre_instructions = NULL;
   
             (*s_etat_processus).tid_processus_pere = pthread_self();              (*s_etat_processus).tid_processus_pere = pthread_self();
               (*s_etat_processus).tid= pthread_self();
             (*s_etat_processus).pid_processus_pere = getpid();              (*s_etat_processus).pid_processus_pere = getpid();
             (*s_etat_processus).processus_detache = d_vrai;              (*s_etat_processus).processus_detache = d_vrai;
             (*s_etat_processus).var_volatile_processus_pere = -1;              (*s_etat_processus).var_volatile_processus_pere = -1;
Line 3596  rplinit(int argc, char *argv[], char *en Line 3664  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);          chdir(repertoire_initial);
         execve(argv[0], (*(argv + 1)), envp);          execvp(arg_exec[0], &(arg_exec[0]));
         erreur = d_erreur;          erreur = d_erreur;
     }      }
   
     // Libération de la copie des arguments      free(arg_exec);
     // A FAIRE  
   
     free(s_etat_processus);      free(s_etat_processus);
   
 #   ifdef DEBUG_MEMOIRE  #   ifdef DEBUG_MEMOIRE

Removed from v.1.103  
changed lines
  Added in v.1.107


CVSweb interface <joel.bertrand@systella.fr>