Sujet : Re: Procédure ARGV
De : ol.google (at) *nospam* lutece.net (OL)
Groupes : fr.comp.sys.atariDate : 04. Jan 2025, 15:32:44
Autres entêtes
Organisation : Nemoweb
Message-ID : <As32lgMMpUUm8zw8mfbxlR1lU1Y@jntp>
References : 1 2 3 4 5 6 7 8 9 10
User-Agent : Nemo/1.0
Le 04/01/2025 à 11:07, Good Old TOS a écrit :
Hello,
pb résolu grâce à Olivier! Un grand merci!
Voilà le code fonctionnel:
long XPexec_eas(int mode, char* full_name, char* cmdline)
{
/* A BIG thnaks to Olivier Landemarre ! */
char buffer[1500] ;
char eas_cmd[128] ;
char* pt_env = buffer ;
char* source ;
char* envp = _BasPag->p_env ;
/* Program Environment is required else it fails (e.g. err 27 with curl) */
while( *envp )
{
while ( *envp ) *pt_env++ = *envp++ ;
*pt_env++ = 0 ;
envp++ ;
}
*pt_env++='A' ;
*pt_env++='R' ;
*pt_env++='G' ;
*pt_env++='V' ;
*pt_env++='=' ;
*pt_env++ = 0 ;
*pt_env++ = ' ' ; /* These 2 are important else */
*pt_env++ = 0 ; /* First parameter is ignored ! */
while ( *cmdline )
{
if ( *cmdline == ' ' ) *pt_env++ = 0 ; /* New parameter/value */
else if ( *cmdline == '\' ) *pt_env++ = '/' ; /* Change \ to / */
else *pt_env++ = *cmdline ; /* Next char of parameter/value */
cmdline++ ;
}
*pt_env++ = 0 ;
*pt_env = 0 ;
eas_cmd[0] = 127 ;
return Pexec( mode, full_name, eas_cmd, buffer ) ;
}
Il manquait un espace + \0 après "ARGV=" avant la génération des paramètres.
Yep cool
une fois j'ai passé une semaine a chercher un bug totalement stupide de niveau débutant, j'avais mis mis:
if(condition = 1) ... au lieu de if(condition == 1) ... !!!!
J'ai eu beau relire 1000 fois le code je ne voyais pas
Bon là j'ai du tester avec un petit logiciel écrit il y a 30 ans pour voir ce qui était passé à l'application sinon je n'aurais pas trouvé pourtant c'est du C classique mais on ne gère pas cela tous les jours!