Re: Procédure ARGV

Liste des GroupesRevenir à fcs atari 
Sujet : Re: Procédure ARGV
De : _remove_vision (at) *nospam* atari.org (Good Old TOS)
Groupes : fr.comp.sys.atari
Date : 04. Jan 2025, 19:16:24
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <67797af9$0$11457$426a74cc@news.free.fr>
References : 1 2 3 4 5 6 7 8 9 10 11
User-Agent : Mozilla Thunderbird
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!

Date Sujet#  Auteur
2 Jan 25 * Procédure ARGV25Good Old TOS
2 Jan 25 `* Re: Procédure ARGV24OL
2 Jan 25  `* Re: Procédure ARGV23Good Old TOS
3 Jan 25   `* Re: Procédure ARGV22OL
3 Jan 25    `* Re: Procédure ARGV21Good Old TOS
3 Jan 25     +- Re: Procédure ARGV1OL
3 Jan 25     `* Re: Procédure ARGV19Good Old TOS
3 Jan 25      `* Re: Procédure ARGV18OL
3 Jan 25       `* Re: Procédure ARGV17OL
3 Jan 25        +- Re: Procédure ARGV1OL
3 Jan 25        `* Re: Procédure ARGV15Good Old TOS
3 Jan 25         `* Re: Procédure ARGV14OL
3 Jan 25          `* Re: Procédure ARGV13Good Old TOS
4 Jan 25           `* Re: Procédure ARGV12Good Old TOS
4 Jan 25            +- Re: Procédure ARGV1OL
4 Jan 25            +- Re: Procédure ARGV1OL
4 Jan 25            `* Re: Procédure ARGV9Good Old TOS
4 Jan 25             `* Re: Procédure ARGV8OL
4 Jan 25              +* Re: Procédure ARGV4Good Old TOS
4 Jan 25              i`* Re: Procédure ARGV3OL
5 Jan 25              i `* Re: Procédure ARGV2Djamé
5 Jan 25              i  `- Re: Procédure ARGV1Good Old TOS
5 Jan 25              `* Re: Procédure ARGV3tTh
5 Jan 25               +- Re: Procédure ARGV1OL
6 Jan 25               `- Re: Procédure ARGV1Arachide

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal