--- rpl/src/chainage.c 2010/03/09 10:18:42 1.7 +++ rpl/src/chainage.c 2010/08/26 19:07:34 1.18 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.13 + RPL/2 (R) version 4.0.19 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,13 +20,13 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* ================================================================================ - Routine de chainage du programme (lecture du fichier puis constitution - de la chaine executable) + Routine de chaînage du programme (lecture du fichier puis constitution + de la chaîne exécutable) ================================================================================ Entrées: structure processus -------------------------------------------------------------------------------- @@ -57,13 +57,26 @@ chainage(struct_processus *s_etat_proces unsigned char *commande; unsigned char *executable_candidat; + +# ifndef OS2 unsigned char *instructions = "sed -e '1,1s/^#!/\\/\\//g' %s | " "%s/bin/%s | " "%s/bin/rpliconv `%s/bin/rplfile " "-m %s/share/rplfiles -i %s | awk " "'{ print $3; }' | awk -F= " "'{ if ($2 != \"\") printf(\"-f %%s\", " - "$2); }'` -t `locale charmap`//IGNORE > %s"; + "$2); }'` -t %s//IGNORE > %s"; +# else + unsigned char *instructions = "sh -c \"" + "sed -e '1,1s/^#!/\\/\\//g' %s | " + "%s/bin/%s | " + "%s/bin/rpliconv `%s/bin/rplfile " + "-m %s/share/rplfiles -i %s | awk " + "'{ print $3; }' | awk -F= " + "'{ if ($2 != \\\"\\\") " + "printf(\\\"-f %%s\\\", " + "$2); }'` -t %s//IGNORE\" > %s"; +# endif unsigned long unite_fichier; @@ -107,8 +120,8 @@ chainage(struct_processus *s_etat_proces { 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) + (4 * strlen(d_exec_path)) + strlen(d_locale) + + strlen(nom_fichier_temporaire) + strlen(instructions) - 13) * sizeof(unsigned char))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -121,7 +134,7 @@ chainage(struct_processus *s_etat_proces (*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); + d_locale, nom_fichier_temporaire); if (alsprintf(&executable_candidat, "%s/bin/rpliconv", d_exec_path) < 0)