Sujet : Re: Procédure ARGV
De : ol.google (at) *nospam* lutece.net (OL)
Groupes : fr.comp.sys.atariDate : 04. Jan 2025, 22:54:59
Autres entêtes
Organisation : Nemoweb
Message-ID : <uS1EcrkMo2UDsEe76i8Sxo3Zoaw@jntp>
References : 1 2 3 4 5 6 7 8 9 10
User-Agent : Nemo/1.0
Le 04/01/2025 à 19:16, Good Old TOS a écrit :
Le 04/01/2025 à 15:32, OL a écrit :
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!
Ouaip...
En fait en premier c'est argv[0] qui doit être passé, soit le nom de l'applicatif à lancer, mais un espace suffit, si pas présent du coup ça décale les paramètres passés (cf. message de Thorsten).
Mais quelle galère pour faire juste un appel ""long" à Pexec !
Merci beaucoup en tout cas!
C'est aussi je pense le seul moyen pour passer en paramètre un chemin avec espace car sinon cela ne marche avec la méthode normale, enfin je crois.