Re: Procédure ARGV

Liste des GroupesRevenir à fcs atari 
Sujet : Re: Procédure ARGV
De : djame (at) *nospam* biensur.com (Djamé)
Groupes : fr.comp.sys.atari
Date : 05. Jan 2025, 11:13:46
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <677a5b5a$0$28498$426a34cc@news.free.fr>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
User-Agent : Unison/2.2
On 2025-01-04 21:54:59 +0000, OL said:

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.
ca ne marche pas en déspecialisant l'espace ?

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