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

version 1.13, 2011/09/26 15:57:10 version 1.14, 2011/11/17 22:21:16
Line 241  formateur_flux(struct_processus *s_etat_ Line 241  formateur_flux(struct_processus *s_etat_
     return(chaine);      return(chaine);
 }  }
   
   
   /*
   ================================================================================
     Routine permettant de trouver le caractère suivant dans une chaîne
   ================================================================================
     Entrées : structure sur l'état du processus et chaîne courante
   --------------------------------------------------------------------------------
     Sorties : pointeur sur le caractère suivant
   --------------------------------------------------------------------------------
     Effets de bord : néant
   ================================================================================
   */
   
   static inline unsigned char *
   prochain_caractere(struct_processus *s_etat_processus, unsigned char *chaine)
   {
       unsigned char       *suivant;
   
       if ((*chaine) == '\\')
       {
           if ((*(chaine + 1)) == '"')
           {
               suivant = chaine + 2;
           }
           else if ((*(chaine + 1)) == 'b')
           {
               suivant = chaine + 2;
           }
           else if ((*(chaine + 1)) == 'n')
           {
               suivant = chaine + 2;
           }
           else if ((*(chaine + 1)) == 't')
           {
               suivant = chaine + 2;
           }
           else if ((*(chaine + 1)) == 'x')
           {
               if ((*(chaine + 2)) != d_code_fin_chaine)
               {
                   if ((*(chaine + 3)) != d_code_fin_chaine)
                   {
                       logical1        erreur;
   
                       erreur = d_faux;
   
                       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:
                               erreur = d_vrai;
                               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:
                               erreur = d_vrai;
                               break;
                       }
   
                       if (erreur == d_vrai)
                       {
                           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());
                           }
   
                           return(NULL);
                       }
   
                       suivant = chaine + 4;
                   }
                   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());
                       }
   
                       return(NULL);
                   }
               }
               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());
                   }
   
                   return(NULL);
               }
           }
           else if ((*(chaine + 1)) == '\\')
           {
               suivant = chaine + 1;
           }
           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());
               }
   
               return(NULL);
           }
       }
       else
       {
           suivant = chaine + 1;
       }
   
       return(suivant);
   }
   
   
   /*
   ================================================================================
     Routine donnant la longueur d'une chaîne de caractères
   ================================================================================
     Entrées : structure sur l'état du processus et chaîne
   --------------------------------------------------------------------------------
     Sorties : longueur de la chaîne
   --------------------------------------------------------------------------------
     Effets de bord : néant
   ================================================================================
   */
   
   integer8
   longueur_chaine(struct_processus *s_etat_processus, unsigned char *chaine)
   {
       integer8        nombre_caracteres;
   
       unsigned char   *pointeur;
   
       pointeur = chaine;
       nombre_caracteres = 0;
   
       if ((*pointeur) == '\0')
       {
           return(0);
       }
   
       do
       {
           if ((pointeur = prochain_caractere(s_etat_processus, pointeur)) == NULL)
           {
               return(0);
           }
   
           nombre_caracteres++;
       } while((*pointeur) != 0);
   
       return(nombre_caracteres);
   }
   
 // vim: ts=4  // vim: ts=4

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


CVSweb interface <joel.bertrand@systella.fr>