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

version 1.14, 2011/11/17 22:21:16 version 1.15, 2011/11/18 09:51:32
Line 244  formateur_flux(struct_processus *s_etat_ Line 244  formateur_flux(struct_processus *s_etat_
   
 /*  /*
 ================================================================================  ================================================================================
     Routine testant la validité d'une chaîne de caractères
   ================================================================================
     Entrées : structure sur l'état du processus et chaîne courante
   --------------------------------------------------------------------------------
     Sorties : pointeur sur le caractère suivant
   --------------------------------------------------------------------------------
     Effets de bord : néant
   ================================================================================
   */
   
   logical1
   validation_chaine(unsigned char *chaine)
   {
       if (chaine == NULL)
       {
           return(d_faux);
       }
   
       while((*chaine) != d_code_fin_chaine)
       {
           if ((*chaine) == '\\')
           {
               if ((*(chaine + 1)) == '"')
               {
                   // Valide
               }
               else if ((*(chaine + 1)) == 'b')
               {
                   // Valide
               }
               else if ((*(chaine + 1)) == 'n')
               {
                   // Valide
               }
               else if ((*(chaine + 1)) == 't')
               {
                   // Valide
               }
               else if ((*(chaine + 1)) == 'x')
               {
                   if ((*(chaine + 2)) != d_code_fin_chaine)
                   {
                       if ((*(chaine + 3)) != d_code_fin_chaine)
                       {
                           switch(*(chaine + 2))
                           {
                               case '0':
                               case '1':
                               case '2':
                               case '3':
                               case '4':
                               case '5':
                               case '6':
                               case '7':
                               case '8':
                               case '9':
                               case 'A':
                               case 'B':
                               case 'C':
                               case 'D':
                               case 'E':
                               case 'F':
                                   break;
   
                               default:
                                   return(d_faux);
                                   break;
                           }
   
                           switch(*(chaine + 3))
                           {
                               case '0':
                               case '1':
                               case '2':
                               case '3':
                               case '4':
                               case '5':
                               case '6':
                               case '7':
                               case '8':
                               case '9':
                               case 'A':
                               case 'B':
                               case 'C':
                               case 'D':
                               case 'E':
                               case 'F':
                                   break;
   
                               default:
                                   return(d_faux);
                                   break;
                           }
                       }
                       else
                       {
                           return(d_faux);
                       }
                   }
                   else
                   {
                       return(d_faux);
                   }
               }
               else if ((*(chaine + 1)) == '\\')
               {
                   // Valide
               }
               else
               {
                   // Tous les autres cas sont invalides
                   return(d_faux);
               }
           }
           else
           {
               // Caractère valide
           }
   
           chaine++;
       }
   
       return(d_vrai);
   }
   
   
   /*
   ================================================================================
   Routine permettant de trouver le caractère suivant dans une chaîne    Routine permettant de trouver le caractère suivant dans une chaîne
 ================================================================================  ================================================================================
   Entrées : structure sur l'état du processus et chaîne courante    Entrées : structure sur l'état du processus et chaîne courante
Line 259  prochain_caractere(struct_processus *s_e Line 387  prochain_caractere(struct_processus *s_e
 {  {
     unsigned char       *suivant;      unsigned char       *suivant;
   
       if (chaine == NULL)
       {
           return(NULL);
       }
   
     if ((*chaine) == '\\')      if ((*chaine) == '\\')
     {      {
         if ((*(chaine + 1)) == '"')          if ((*(chaine + 1)) == '"')
Line 461  longueur_chaine(struct_processus *s_etat Line 594  longueur_chaine(struct_processus *s_etat
     return(nombre_caracteres);      return(nombre_caracteres);
 }  }
   
   
   /*
   ================================================================================
     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
   --------------------------------------------------------------------------------
     Sorties : longueur de la chaîne
   --------------------------------------------------------------------------------
     Effets de bord : néant
   ================================================================================
   */
   
   unsigned char *
   pointeur_ieme_caractere(struct_processus *s_etat_processus,
           unsigned char *chaine, integer8 position)
   {
       integer8            i;
   
       unsigned char       *pointeur;
   
       if ((pointeur = chaine) == NULL)
       {
           return(NULL);
       }
   
       for(i = 0; i < position; i++)
       {
           pointeur = prochain_caractere(s_etat_processus, pointeur);
   
           if ((*pointeur) == d_code_fin_chaine)
           {
               return(pointeur);
           }
       }
   
       return(pointeur);
   }
   
 // vim: ts=4  // vim: ts=4

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


CVSweb interface <joel.bertrand@systella.fr>