Sujet : Re: Procédure ARGV
De : _remove_vision (at) *nospam* atari.org (Good Old TOS)
Groupes : fr.comp.sys.atariDate : 04. Jan 2025, 00:44:26
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <6778765b$0$29730$426a34cc@news.free.fr>
References : 1 2 3 4 5 6 7 8 9 10 11
User-Agent : Mozilla Thunderbird
Le 03/01/2025 à 23:38, Good Old TOS a écrit :
Le 03/01/2025 à 22:34, OL a écrit :
Le 03/01/2025 à 22:18, Good Old TOS a écrit :
Le 03/01/2025 à 19:11, OL a écrit :
Le 03/01/2025 à 19:07, OL a écrit :
Le 03/01/2025 à 19:04, Good Old TOS a écrit :
Le 03/01/2025 à 17:51, Good Old TOS a écrit :
Le 03/01/2025 à 17:33, OL a écrit :
Le 02/01/2025 à 23:58, Good Old TOS a écrit :
Salut Olivier et bonne année!
>
Sur https://www.atari-forum.com/viewtopic.php?t=44522
Thorsten a posté un spawn qui compilé avec le cstartv.s posté à https://www.atari-forum.com/viewtopic.php?p=473831#p473831 devrait faire l'affaire.
J'ai un peu regardé mais je n'ai pas vu de différence notable dans les paramètres, juste les variables d'environnements en plus au début. J'ai essayé de récupérer sa routine pc_spawnve de spawn mais pas moyen d'arriver à un résultat concluant.
>
Du coup je suis passé par un appel à /bin/sh qui ne me satisfait guère (exécution d'un shell + création d'un ficher temporaire) mais au moins ça marche.
>
>
Le 02/01/2025 à 19:42, OL a écrit :
Le 02/01/2025 à 18:15, Good Old TOS a écrit :
Hello,
>
si certains ont suivi https://www.atari-forum.com/ viewtopic.php? f=70&t=44522
vous avez pu réaliser que je galère pas mal avec ARGV pour passer plus de 124 caractères en ligne de commande.
Bref, j'ai laissé tomber et je laisse à sh le soin de passer correctement les paramètres à curl.
Si jamais il y en a qui maitrise ARGV et qui arrive à faire l'appel suivant via Pexec (PURE C svp :-)):
u:\usr\bin\curl -L --cacert cacert.pem --get https:// vision2.atari.org/vupdate/staging/vision.ver --output H: \PURE_C\PROJECTS\VISION\UPDATE\vision.ver
Faites moi signe :-)
>
Attention: il y a un piège, parfois on croit que ça marche mais dans H:\PURE_C\PROJECTS\VISION\UPDATE\vision.ver, on y trouve que le fichier a été déplacé comme si -L avait été ignoré :-(
>
A+,
Jean
>
Normalement je savais faire, on peut regarder si tu veux, mais pas sur qu'à l'époque je n'étais que avec GCC. Pour vérifier il te faudrait un client (qui remplace curl) et voir ce qu'il retourne comme arguments.
>
Olivier
>
Je lit quelques commentaires que j'ai put faire, voilà ce qu'il semble ressortir
>
Ton problème ne serait pas dans la création de ARGV sous PureC, en fait il faut recopier tout l'environnement de ton application et rajouter ARGV à la fin, sinon l'application n'a pas l'environnement, GCC il me semble fait tout dans ton dos de ce que je me souvient et ne suit pas la documentation.
Je vais voir si je peux faire un exemple
>
Olivier
Salut Olivier,
je pense que c'est ça mais en même m'inspirant du code de Thorsten, j'ai bien recréé l'environnement depuis Pure C mais même résultat (curl 27, out of memory)
Mais si tu y arrives, je suis preneur :-)
A+,
Jean
Ah non erreur 27 c'était avant, avec l’environnement c'est l'option - L de curl qui n'est pas prise en compte (d'où le fichier généré qui dit juste que le doc a bougé)
>
J'ai regardé ton code cela ne peut pas marcher à mon avis vu que c'est un argument qui est demandé par la commande pas un environnement donc tout doit être mis dans le même variable d'environnement
>
Su tu préfère il faut remplacer les T par u:\usr\bin\curl -L -- cacert.....
Et si tu as des chemins avec des espaces il faut mettre le tout entre ""
>
>
-L est bien passé par les argv; je faisais référence à l’environnent car dans mes tests c'est vrai que rajouter l'environnement solutionne le pb du out of memory mais du coup je me retrouve avec le pb du -L ignoré
Les "T"?
J'ai essayé plein de trucs en passant par u:\, u:/, en récupérat l'env, en ajoutant un espace pour les paramètres dans valeur (e.g. -L vs --cacert cacert.pem); j'ai du/pu rater un truc c'est sur.
>
Tu n'as pas lu mon 3eme message avec le code!
Salut Olivier,
ben je ne vois pas le code dans tes messages! J'utilise Thunderbird pour lire les news mais j'ai reçu ton email.
Je vais regarder ton code et tester
Pareil :-( curl ignore le -L
Code:
long XPexec_eas(int mode, char* full_name, char* cmdline)
{
char buffer[1500] ;
char eas_cmd[1] ;
char* pt_env = buffer ;
char* source ;
char* envp = _BasPag->p_env ;
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 ;
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 ) ;
}
Appel: XPexec_eas( 0, "u:\usr\bin\curl", "-L --cacert cacert.pem --get
https://vision2.atari.org/vupdate/staging/vision.ver --output H:\PURE_C\PROJECTS\VISION\UPDATE\vision.ver" ) ;