Diff for /rpl/src/instructions_s1.c between versions 1.98 and 1.100

version 1.98, 2019/02/07 15:47:41 version 1.100, 2019/02/09 13:36:40
Line 3651  instruction_syseval(struct_processus *s_ Line 3651  instruction_syseval(struct_processus *s_
             l_element_courant = (*l_element_courant).suivant;              l_element_courant = (*l_element_courant).suivant;
         }          }
   
         action_courante.sa_handler = SIG_IGN;  
         action_courante.sa_flags = SA_NODEFER | SA_ONSTACK;  
   
         if (sigaction(SIGINT, &action_courante, &action_passee) != 0)  
         {  
             for(i = 0; i < nombre_arguments; i++)  
             {  
                 depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),  
                         &s_objet_temporaire);  
                 liberation(s_etat_processus, s_objet_temporaire);  
             }  
   
             free(arguments);  
             (*s_etat_processus).erreur_systeme = d_es_signal;  
             return;  
         }  
   
         if (pipe(pipes_entree) != 0)          if (pipe(pipes_entree) != 0)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_processus;              (*s_etat_processus).erreur_systeme = d_es_processus;
Line 3688  instruction_syseval(struct_processus *s_ Line 3671  instruction_syseval(struct_processus *s_
   
         fflush(NULL);          fflush(NULL);
   
           verrouillage_threads_concurrents(s_etat_processus);
   
           action_courante.sa_handler = SIG_IGN;
           action_courante.sa_flags = 0;
   
           if (sigaction(SIGINT, &action_courante, &action_passee) != 0)
           {
               for(i = 0; i < nombre_arguments; i++)
               {
                   depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                           &s_objet_temporaire);
                   liberation(s_etat_processus, s_objet_temporaire);
               }
   
               free(arguments);
               (*s_etat_processus).erreur_systeme = d_es_signal;
               return;
           }
   
         pid = fork();          pid = fork();
   
         if (pid < 0)          if (pid < 0)
Line 3820  instruction_syseval(struct_processus *s_ Line 3822  instruction_syseval(struct_processus *s_
         }          }
         else          else
         {          {
               if (sigaction(SIGINT, &action_passee, NULL) != 0)
               {
                   for(i = 0; i < nombre_arguments; i++)
                   {
                       depilement(s_etat_processus,
                               &((*s_etat_processus).l_base_pile),
                               &s_objet_temporaire);
                       liberation(s_etat_processus, s_objet_temporaire);
                   }
   
                   free(arguments);
                   (*s_etat_processus).erreur_systeme = d_es_signal;
                   return;
               }
   
               deverrouillage_threads_concurrents(s_etat_processus);
   
             if (close(pipes_entree[0]) != 0)              if (close(pipes_entree[0]) != 0)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_processus;                  (*s_etat_processus).erreur_systeme = d_es_processus;
Line 4026  instruction_syseval(struct_processus *s_ Line 4045  instruction_syseval(struct_processus *s_
             }              }
   
 #           ifndef SEMAPHORES_NOMMES  #           ifndef SEMAPHORES_NOMMES
                 if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0)                  while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0)
 #           else  #           else
                 if (sem_wait((*s_etat_processus).semaphore_fork) != 0)                  while(sem_wait((*s_etat_processus).semaphore_fork) != 0)
 #           endif  #           endif
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_processus;                  if (errno != EINTR)
                 return;                  {
                       (*s_etat_processus).erreur_systeme = d_es_processus;
                       return;
                   }
             }              }
   
             do              do
Line 4182  instruction_syseval(struct_processus *s_ Line 4204  instruction_syseval(struct_processus *s_
             free(tampon);              free(tampon);
         }          }
   
         if (sigaction(SIGINT, &action_passee, NULL) != 0)  
         {  
             for(i = 0; i < nombre_arguments; i++)  
             {  
                 depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),  
                         &s_objet_temporaire);  
                 liberation(s_etat_processus, s_objet_temporaire);  
             }  
   
             free(arguments);  
             (*s_etat_processus).erreur_systeme = d_es_signal;  
             return;  
         }  
   
         for(i = 0; i < nombre_arguments; i++)          for(i = 0; i < nombre_arguments; i++)
         {          {
             depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),              depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
Line 4203  instruction_syseval(struct_processus *s_ Line 4211  instruction_syseval(struct_processus *s_
             liberation(s_etat_processus, s_objet_temporaire);              liberation(s_etat_processus, s_objet_temporaire);
         }          }
   
           free(arguments);
   
         if ((tampon = malloc(sizeof(unsigned char))) == NULL)          if ((tampon = malloc(sizeof(unsigned char))) == NULL)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 4272  instruction_syseval(struct_processus *s_ Line 4282  instruction_syseval(struct_processus *s_
             return;              return;
         }          }
   
         free(arguments);  
         free(tampon);          free(tampon);
     }      }
     else      else

Removed from v.1.98  
changed lines
  Added in v.1.100


CVSweb interface <joel.bertrand@systella.fr>