Diff for /rpl/src/chainage.c between versions 1.3 and 1.6

version 1.3, 2010/02/10 10:14:18 version 1.6, 2010/03/05 11:20:08
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.11    RPL/2 (R) version 4.0.12
   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 56  chainage(struct_processus *s_etat_proces Line 56  chainage(struct_processus *s_etat_proces
     long                    nombre_caracteres_source;      long                    nombre_caracteres_source;
   
     unsigned char           *commande;      unsigned char           *commande;
       unsigned char           *executable_candidat;
     unsigned char           *instructions = "sed -e '1,1s/^#!/\\/\\//g' %s | "      unsigned char           *instructions = "sed -e '1,1s/^#!/\\/\\//g' %s | "
                                     "%s/bin/%s | "                                      "%s/bin/%s | "
                                     "%s/bin/rpliconv `%s/bin/rplfile "                                      "%s/bin/rpliconv `%s/bin/rplfile "
Line 99  chainage(struct_processus *s_etat_proces Line 100  chainage(struct_processus *s_etat_proces
             return(d_erreur);              return(d_erreur);
         }          }
   
         if ((commande = (unsigned char *) malloc((strlen(ds_preprocesseur) +          // Avant d'exécuter la commande, on teste les sommes de hashage
                 (2 * strlen((*s_etat_processus).nom_fichier_source)) +          // des utilitaires de la famille RPL/2.
                 (4 * strlen(d_exec_path)) +  
                 strlen(nom_fichier_temporaire) + strlen(instructions) - 11) *          if ((*s_etat_processus).rpl_home == NULL)
                 sizeof(unsigned char))) == NULL)  
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              if ((commande = (unsigned char *) malloc((strlen(ds_preprocesseur) +
                       (2 * strlen((*s_etat_processus).nom_fichier_source)) +
                       (4 * strlen(d_exec_path)) +
                       strlen(nom_fichier_temporaire) + strlen(instructions) - 11)
                       * sizeof(unsigned char))) == NULL)
               {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
   
                   free(nom_fichier_temporaire);
                   return(d_erreur);
               }
   
               sprintf(commande, instructions,
                       (*s_etat_processus).nom_fichier_source,
                       d_exec_path, ds_preprocesseur, d_exec_path, d_exec_path,
                       d_exec_path, (*s_etat_processus).nom_fichier_source,
                       nom_fichier_temporaire);
   
               if (alsprintf(&executable_candidat, "%s/bin/rpliconv",
                       d_exec_path) < 0)
               {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "md5",
                       rpliconv_md5) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "sha1",
                       rpliconv_sha1) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               free(executable_candidat);
   
               if (alsprintf(&executable_candidat, "%s/bin/rplfile",
                       d_exec_path) < 0)
               {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "md5",
                       rplfile_md5) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "sha1",
                       rplfile_sha1) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               free(executable_candidat);
   
               if (alsprintf(&executable_candidat, "%s/bin/rplpp",
                       d_exec_path) < 0)
               {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "md5",
                       rplpp_md5) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "sha1",
                       rplpp_sha1) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
             free(nom_fichier_temporaire);              free(executable_candidat);
             return(d_erreur);  
         }          }
           else
           {
               if ((commande = (unsigned char *) malloc((strlen(ds_preprocesseur) +
                       (2 * strlen((*s_etat_processus).nom_fichier_source)) +
                       (4 * strlen((*s_etat_processus).rpl_home)) +
                       strlen(nom_fichier_temporaire) + strlen(instructions) - 11)
                       * sizeof(unsigned char))) == NULL)
               {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
   
                   free(nom_fichier_temporaire);
                   return(d_erreur);
               }
   
               sprintf(commande, instructions,
                       (*s_etat_processus).nom_fichier_source,
                       (*s_etat_processus).rpl_home, ds_preprocesseur,
                       (*s_etat_processus).rpl_home, (*s_etat_processus).rpl_home,
                       (*s_etat_processus).rpl_home,
                       (*s_etat_processus).nom_fichier_source,
                       nom_fichier_temporaire);
   
               if (alsprintf(&executable_candidat, "%s/bin/rpliconv",
                       (*s_etat_processus).rpl_home) < 0)
               {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "md5",
                       rpliconv_md5) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "sha1",
                       rpliconv_sha1) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               free(executable_candidat);
   
               if (alsprintf(&executable_candidat, "%s/bin/rplfile",
                       (*s_etat_processus).rpl_home) < 0)
               {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "md5",
                       rplfile_md5) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "sha1",
                       rplfile_sha1) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               free(executable_candidat);
   
               if (alsprintf(&executable_candidat, "%s/bin/rplpp",
                       (*s_etat_processus).rpl_home) < 0)
               {
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "md5",
                       rplpp_md5) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
               if (controle(s_etat_processus, executable_candidat, "sha1",
                       rplpp_sha1) != d_vrai)
               {
                   (*s_etat_processus).erreur_systeme = d_es_somme_controle;
                   return(d_erreur);
               }
   
         sprintf(commande, instructions, (*s_etat_processus).nom_fichier_source,              free(executable_candidat);
                 d_exec_path, ds_preprocesseur, d_exec_path, d_exec_path,          }
                 d_exec_path, (*s_etat_processus).nom_fichier_source,  
                 nom_fichier_temporaire);  
   
         if ((f_source = popen(commande, "r")) == NULL)          if ((f_source = popen(commande, "r")) == NULL)
         {          {

Removed from v.1.3  
changed lines
  Added in v.1.6


CVSweb interface <joel.bertrand@systella.fr>