--- rpl/src/chainage.c 2010/08/26 19:07:34 1.18 +++ rpl/src/chainage.c 2010/09/07 08:58:04 1.19 @@ -49,6 +49,7 @@ chainage(struct_processus *s_etat_proces logical1 drapeau_fin; logical1 existence; + logical1 initialisation; logical1 ouverture; logical1 presence_chaine; @@ -59,8 +60,7 @@ chainage(struct_processus *s_etat_proces unsigned char *executable_candidat; # ifndef OS2 - unsigned char *instructions = "sed -e '1,1s/^#!/\\/\\//g' %s | " - "%s/bin/%s | " + unsigned char *instructions = "%s/bin/%s %s | " "%s/bin/rpliconv `%s/bin/rplfile " "-m %s/share/rplfiles -i %s | awk " "'{ print $3; }' | awk -F= " @@ -68,8 +68,7 @@ chainage(struct_processus *s_etat_proces "$2); }'` -t %s//IGNORE > %s"; # else unsigned char *instructions = "sh -c \"" - "sed -e '1,1s/^#!/\\/\\//g' %s | " - "%s/bin/%s | " + "%s/bin/%s %s | " "%s/bin/rpliconv `%s/bin/rplfile " "-m %s/share/rplfiles -i %s | awk " "'{ print $3; }' | awk -F= " @@ -131,8 +130,9 @@ chainage(struct_processus *s_etat_proces } sprintf(commande, instructions, + d_exec_path, ds_preprocesseur, (*s_etat_processus).nom_fichier_source, - d_exec_path, ds_preprocesseur, d_exec_path, d_exec_path, + d_exec_path, d_exec_path, d_exec_path, (*s_etat_processus).nom_fichier_source, d_locale, nom_fichier_temporaire); @@ -358,11 +358,43 @@ chainage(struct_processus *s_etat_proces i = 0; drapeau_fin = d_faux; + initialisation = d_vrai; + + /* + * Élimination du sharp-bang si nécessaire et des caractères + * inutiles. Conversion de caractères. + */ while(drapeau_fin == d_faux) { if ((caractere = getc(f_source)) != EOF) { + if (initialisation == d_vrai) + { + if (caractere == '#') + { + if ((caractere = getc(f_source)) != EOF) + { + if (caractere == '!') + { + do + { + caractere = getc(f_source); + } while((caractere != EOF) && + (caractere != + d_code_retour_chariot)); + } + else + { + rewind(f_source); + caractere = getc(f_source); + } + } + } + + initialisation = d_faux; + } + if ((caractere == d_code_retour_chariot) || (caractere == d_code_tabulation) || ((caractere == d_code_espace) &&