Diff for /rpl/src/formateur_flux.c between versions 1.15 and 1.18

version 1.15, 2011/11/18 09:51:32 version 1.18, 2011/11/26 10:01:26
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.4    RPL/2 (R) version 4.1.5
   Copyright (C) 1989-2011 Dr. BERTRAND Joël    Copyright (C) 1989-2011 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 268  validation_chaine(unsigned char *chaine) Line 268  validation_chaine(unsigned char *chaine)
         {          {
             if ((*(chaine + 1)) == '"')              if ((*(chaine + 1)) == '"')
             {              {
                 // Valide                  chaine += 2;
             }              }
             else if ((*(chaine + 1)) == 'b')              else if ((*(chaine + 1)) == 'b')
             {              {
                 // Valide                  chaine += 2;
             }              }
             else if ((*(chaine + 1)) == 'n')              else if ((*(chaine + 1)) == 'n')
             {              {
                 // Valide                  chaine += 2;
             }              }
             else if ((*(chaine + 1)) == 't')              else if ((*(chaine + 1)) == 't')
             {              {
                 // Valide                  chaine += 2;
             }              }
             else if ((*(chaine + 1)) == 'x')              else if ((*(chaine + 1)) == 'x')
             {              {
Line 347  validation_chaine(unsigned char *chaine) Line 347  validation_chaine(unsigned char *chaine)
                 {                  {
                     return(d_faux);                      return(d_faux);
                 }                  }
   
                   chaine += 4;
             }              }
             else if ((*(chaine + 1)) == '\\')              else if ((*(chaine + 1)) == '\\')
             {              {
                 // Valide                  chaine += 2;
             }              }
             else              else
             {              {
Line 360  validation_chaine(unsigned char *chaine) Line 362  validation_chaine(unsigned char *chaine)
         }          }
         else          else
         {          {
             // Caractère valide              chaine++;
         }          }
   
         chaine++;  
     }      }
   
     return(d_vrai);      return(d_vrai);
Line 527  prochain_caractere(struct_processus *s_e Line 527  prochain_caractere(struct_processus *s_e
         }          }
         else if ((*(chaine + 1)) == '\\')          else if ((*(chaine + 1)) == '\\')
         {          {
             suivant = chaine + 1;              suivant = chaine + 2;
         }          }
         else          else
         {          {
Line 599  longueur_chaine(struct_processus *s_etat Line 599  longueur_chaine(struct_processus *s_etat
 ================================================================================  ================================================================================
   Routine retournant un pointeur sur le i-ème caractère d'une chaîne    Routine retournant un pointeur sur le i-ème caractère d'une chaîne
 ================================================================================  ================================================================================
   Entrées : structure sur l'état du processus et chaîne    Entrées : structure sur l'état du processus, chaîne et position du caractère
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
   Sorties : longueur de la chaîne    Sorties : pointeur sur le caractère
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
   Effets de bord : néant    Effets de bord : néant
 ================================================================================  ================================================================================
Line 633  pointeur_ieme_caractere(struct_processus Line 633  pointeur_ieme_caractere(struct_processus
     return(pointeur);      return(pointeur);
 }  }
   
   
   /*
   ================================================================================
     Routine retournant la position du caractère en fonction du pointeur
     dans la chaîne
   ================================================================================
     Entrées : structure sur l'état du processus, chaîne et position
   --------------------------------------------------------------------------------
     Sorties : quantième dans la chaîne
   --------------------------------------------------------------------------------
     Effets de bord : néant
   ================================================================================
   */
   
   integer8
   position_caractere_de_chaine(struct_processus *s_etat_processus,
           unsigned char *chaine, unsigned char *position)
   {
       integer8            i;
   
       i = 1;
   
       while(chaine != position)
       {
           chaine = prochain_caractere(s_etat_processus, chaine);
           i++;
   
           if ((*chaine) == d_code_fin_chaine)
           {
               return(0);
           }
       }
   
       return(i);
   }
   
   
   /*
   ================================================================================
     Conversion d'une chaîne en majuscule ou en minuscule
   ================================================================================
     Entrées : chaîne et indicateur ('M' pour majuscules, 'm' pour minuscules)
   --------------------------------------------------------------------------------
     Sorties : néant
   --------------------------------------------------------------------------------
     Effets de bord : néant
   ================================================================================
   */
   
   void
   conversion_chaine(struct_processus *s_etat_processus,
           unsigned char *chaine, unsigned char type)
   {
       int                 (*fonction_1)(int);
       int                 (*fonction_2)(int);
   
       unsigned char       *ptr;
       unsigned char       *ptr2;
       unsigned char       registre;
   
       if (type == 'M')
       {
           fonction_1 = toupper;
           fonction_2 = tolower;
       }
       else
       {
           fonction_1 = tolower;
           fonction_2 = toupper;
       }
   
       ptr = chaine;
   
       while((*ptr) != d_code_fin_chaine)
       {
           ptr2 = prochain_caractere(s_etat_processus, ptr);
   
           if ((ptr2 - ptr) == 1)
           {
               registre = fonction_1((*ptr));
   
               if (fonction_2(registre) == (*ptr))
               {
                   (*ptr) = registre;
               }
           }
   
           ptr = ptr2;
       }
   
       return;
   }
   
 // vim: ts=4  // vim: ts=4

Removed from v.1.15  
changed lines
  Added in v.1.18


CVSweb interface <joel.bertrand@systella.fr>