Diff for /rpl/src/instructions_t3.c between versions 1.11 and 1.12

version 1.11, 2010/07/14 14:19:39 version 1.12, 2010/07/31 10:34:18
Line 598  instruction_tokenize(struct_processus *s Line 598  instruction_tokenize(struct_processus *s
     struct_liste_chainee                *l_element_courant;      struct_liste_chainee                *l_element_courant;
   
     unsigned char                       *ptr;      unsigned char                       *ptr;
       unsigned char                       *ptr2;
     unsigned char                       *registre_instruction_courante;      unsigned char                       *registre_instruction_courante;
     unsigned char                       *registre_definitions_chainees;      unsigned char                       *registre_definitions_chainees;
       unsigned char                       *tampon;
   
       unsigned long                       nombre_caracteres_echappement;
     unsigned long                       registre_longueur_definitions_chainees;      unsigned long                       registre_longueur_definitions_chainees;
     unsigned long                       registre_position_courante;      unsigned long                       registre_position_courante;
   
Line 647  instruction_tokenize(struct_processus *s Line 650  instruction_tokenize(struct_processus *s
   
     if ((*s_objet_argument).type == CHN)      if ((*s_objet_argument).type == CHN)
     {      {
           // Conversion des caractères d'échappement
   
           ptr = (unsigned char *) (*s_objet_argument).objet;
           ptr2 = ptr;
   
           while((*ptr) != d_code_fin_chaine)
           {
               (*ptr2) = (*ptr);
   
               // Début de la séquence d'échappement
   
               if ((*ptr) == '\\')
               {
                   if ((*(ptr + 1)) == '"')
                   {
                       ptr++;
                       (*ptr2) = '\"';
                   }
                   else if ((*(ptr + 1)) == 'n')
                   {
                       ptr++;
                       (*ptr2) = '\n';
                   }
                   else if ((*(ptr + 1)) == 't')
                   {
                       ptr++;
                       (*ptr2) = '\t';
                   }
                   else if ((*(ptr + 1)) == '\\')
                   {
                           ptr++;
                   }
                   else
                   {
                       if ((*s_etat_processus).langue == 'F')
                       {
                           printf("+++Information : Séquence d'échappement "
                                   "inconnue [%d]\n", (int) getpid());
                       }
                       else
                       {
                           printf("+++Warning : Unknown escape code "
                                   "[%d]\n", (int) getpid());
                       }
                   }
               }
   
                   ptr++;
                   ptr2++;
           }
   
           (*ptr2) = d_code_fin_chaine;
   
         // Remplacement des éventuels retours à la ligne et tabulations par          // Remplacement des éventuels retours à la ligne et tabulations par
         // des espaces.          // des espaces.
   
Line 746  instruction_tokenize(struct_processus *s Line 802  instruction_tokenize(struct_processus *s
                 (*(*l_element_courant).donnee).objet = (*s_etat_processus)                  (*(*l_element_courant).donnee).objet = (*s_etat_processus)
                         .instruction_courante;                          .instruction_courante;
                 (*l_element_courant).suivant = NULL;                  (*l_element_courant).suivant = NULL;
   
                   /*
                    * Rajout du caractère d'échappement devant un guillemet
                    */
   
                   nombre_caracteres_echappement = 0;
                   ptr = (unsigned char *) (*(*l_element_courant).donnee).objet;
   
                   while((*ptr) != d_code_fin_chaine)
                   {
                       if ((*ptr) == '\"')
                       {
                           nombre_caracteres_echappement++;
                       }
   
                       ptr++;
                   }
   
                   if (nombre_caracteres_echappement != 0)
                   {
                       tampon = (unsigned char *) (*(*l_element_courant)
                               .donnee).objet;
   
                       if (((*(*l_element_courant).donnee).objet = malloc(
                               (strlen(tampon) + 1 + nombre_caracteres_echappement)
                               * sizeof(unsigned char))) == NULL)
                       {
                           (*s_etat_processus).erreur_systeme =
                                   d_es_allocation_memoire;
                           return;
                       }
   
                       ptr = tampon;
                       ptr2 = (*(*l_element_courant).donnee).objet;
   
                       while((*ptr) != d_code_fin_chaine)
                       {
                           if ((*ptr) == '\"')
                           {
                               (*(ptr2++)) = '\\';
   
                           }
                           else if ((*ptr) == '\\')
                           {
                               (*(ptr2++)) = '\\';
                           }
   
                           (*(ptr2++)) = (*(ptr++));
                       }
   
                       (*ptr2) = d_code_fin_chaine;
                       free(tampon);
                   }
             }              }
             else              else
             {              {

Removed from v.1.11  
changed lines
  Added in v.1.12


CVSweb interface <joel.bertrand@systella.fr>