Deutsch English Français Italiano |
<67797af9$0$11457$426a74cc@news.free.fr> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.mixmin.net!proxad.net!feeder1-2.proxad.net!cleanfeed4-a.proxad.net!nnrp2-1.free.fr!not-for-mail Date: Sat, 4 Jan 2025 19:16:24 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: =?UTF-8?Q?Re=3A_Proc=C3=A9dure_ARGV?= Newsgroups: fr.comp.sys.atari References: <6776c99f$0$12931$426a74cc@news.free.fr> <6778159f$0$513$426a74cc@news.free.fr> <677826a2$0$29717$426a74cc@news.free.fr> <Q9EaQy098-PVA5Z7zAi1RLKy4XQ@jntp> <mIBAMcSyY7LpBCtFdtvLpUFiqJc@jntp> <67785429$0$375$426a74cc@news.free.fr> <n2atGw7UckVKd_awDmn5Fdq4Hf8@jntp> <677866ee$0$12914$426a34cc@news.free.fr> <6778765b$0$29730$426a34cc@news.free.fr> <6779084b$0$407$426a74cc@news.free.fr> <As32lgMMpUUm8zw8mfbxlR1lU1Y@jntp> Content-Language: fr From: Good Old TOS <_remove_vision@atari.org> In-Reply-To: <As32lgMMpUUm8zw8mfbxlR1lU1Y@jntp> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Lines: 68 Message-ID: <67797af9$0$11457$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 04 Jan 2025 19:16:25 CET NNTP-Posting-Host: 83.159.222.32 X-Trace: 1736014585 news-3.free.fr 11457 83.159.222.32:2426 X-Complaints-To: abuse@proxad.net Bytes: 3705 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!