Sujet : Re: Procédure ARGV
De : ol.google (at) *nospam* lutece.net (OL)
Groupes : fr.comp.sys.atariDate : 03. Jan 2025, 19:01:03
Autres entêtes
Organisation : Nemoweb
Message-ID : <rAAYbwmoSp1JFUQVt66v1YfuJBo@jntp>
References : 1 2 3 4 5
User-Agent : Nemo/1.0
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
J'ai fait un truc qui marche à priori alors à tester pas besoin de starter particulier le programme PureC est compilé avec PCSTART
#include <tos.h>
char myenv[4000],normalenv[2];
void main(int argc,char *argv[],const char *envp[])
{ char *pt_env=myenv, *source; short i=200;
while(*envp) /* copie de l'environnement application */
{
source = *envp;
while (*source) {
*pt_env++ = *source++;
}
*pt_env++=0;
envp++;
}
/* creation de l'argument */
*pt_env++='A';
*pt_env++='R';
*pt_env++='G';
*pt_env++='V';
*pt_env++='=';
*pt_env++=0; /* il faut mettre 0 ici suivi de l'argument que l'on veut passer ! */
while(i--) *pt_env++='T'; /* mettre ce qu'il faut ici on met 200 T pour voir */
*pt_env++=0;
*pt_env=0;
normalenv[0]=127;
(void)Pexec(0,"gnuarg.ttp", normalenv, myenv);
}