Diff for /rpl/src/analyse.c between versions 1.8 and 1.14

version 1.8, 2010/04/07 13:45:00 version 1.14, 2010/05/05 21:19:24
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.14    RPL/2 (R) version 4.0.15
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2010 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 46  creation_instruction(struct_processus *s Line 46  creation_instruction(struct_processus *s
   
     unsigned char           *ptr;      unsigned char           *ptr;
   
       BUG(strlen(instruction) >= d_longueur_maximale_instruction,
               printf("%s -> %d >= %d\n", instruction, (int) strlen(instruction),
               d_longueur_maximale_instruction));
   
     if ((*s_etat_processus).arbre_instructions == NULL)      if ((*s_etat_processus).arbre_instructions == NULL)
     {      {
         if (((*s_etat_processus).arbre_instructions =          if (((*s_etat_processus).arbre_instructions =
Line 710  initialisation_instructions(struct_proce Line 714  initialisation_instructions(struct_proce
   
     INSTRUCTION("APPEND", instruction_append);      INSTRUCTION("APPEND", instruction_append);
     INSTRUCTION("ARRY->", instruction_array_fleche);      INSTRUCTION("ARRY->", instruction_array_fleche);
       INSTRUCTION("ATEXIT", instruction_atexit);
     INSTRUCTION("BESSEL", instruction_bessel);      INSTRUCTION("BESSEL", instruction_bessel);
     INSTRUCTION("CLRERR", instruction_clrerr);      INSTRUCTION("CLRERR", instruction_clrerr);
     INSTRUCTION("CLRMTX", instruction_clrmtx);      INSTRUCTION("CLRMTX", instruction_clrmtx);
Line 827  initialisation_instructions(struct_proce Line 832  initialisation_instructions(struct_proce
   
     INSTRUCTION("AUTOSCALE", instruction_autoscale);      INSTRUCTION("AUTOSCALE", instruction_autoscale);
     INSTRUCTION("BACKSPACE", instruction_backspace);      INSTRUCTION("BACKSPACE", instruction_backspace);
       INSTRUCTION("CLRATEXIT", instruction_clratexit);
     INSTRUCTION("COPYRIGHT", instruction_copyright);      INSTRUCTION("COPYRIGHT", instruction_copyright);
     //INSTRUCTION("CYLINDRIC");      //INSTRUCTION("CYLINDRIC");
     INSTRUCTION("DAEMONIZE", instruction_daemonize);      INSTRUCTION("DAEMONIZE", instruction_daemonize);
Line 939  analyse(struct_processus *s_etat_process Line 945  analyse(struct_processus *s_etat_process
   
     unsigned char                   *position;      unsigned char                   *position;
     unsigned char                   *bibliotheque_candidate;      unsigned char                   *bibliotheque_candidate;
     unsigned char                   *instruction_majuscule;      unsigned char                   instruction_majuscule
                                               [d_longueur_maximale_instruction];
     unsigned char                   registre_instruction_valide;      unsigned char                   registre_instruction_valide;
   
     void                            (*instruction)();      void                            (*instruction)();
Line 956  analyse(struct_processus *s_etat_process Line 963  analyse(struct_processus *s_etat_process
      * On autorise l'exécution d'un fork() dans un thread concurrent.       * On autorise l'exécution d'un fork() dans un thread concurrent.
      */       */
   
   #   ifndef SEMAPHORES_NOMMES
     if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0)      if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_processus;          (*s_etat_processus).erreur_systeme = d_es_processus;
Line 970  analyse(struct_processus *s_etat_process Line 978  analyse(struct_processus *s_etat_process
             return;              return;
         }          }
     }      }
   #   else
       if (sem_post((*s_etat_processus).semaphore_fork) != 0)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return;
       }
   
     scrutation_injection(s_etat_processus);      while(sem_wait((*s_etat_processus).semaphore_fork) == -1)
   
     if (fonction == NULL)  
     {      {
         if ((instruction_majuscule = conversion_majuscule(          if (errno != EINTR)
                 (*s_etat_processus).instruction_courante)) == NULL)  
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_processus;
             return;              return;
         }          }
       }
   #   endif
   
       scrutation_injection(s_etat_processus);
   
       if (fonction == NULL)
       {
           conversion_majuscule_limitee((*s_etat_processus).instruction_courante,
                   instruction_majuscule, d_longueur_maximale_instruction);
         instruction = analyse_instruction(s_etat_processus,          instruction = analyse_instruction(s_etat_processus,
                 instruction_majuscule);                  instruction_majuscule);
   
Line 1010  analyse(struct_processus *s_etat_process Line 1029  analyse(struct_processus *s_etat_process
                 profilage(s_etat_processus, NULL);                  profilage(s_etat_processus, NULL);
             }              }
         }          }
   
         free(instruction_majuscule);  
     }      }
     else      else
     {      {

Removed from v.1.8  
changed lines
  Added in v.1.14


CVSweb interface <joel.bertrand@systella.fr>