1

2

avec la fontion getopt

man getopt:
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/getopt.3.html

y'a un exemple à la fin, parce que je me souviens jamais comment on fait grin

(elle doit pas être super complexe cette fonction)

3

4

Qu'est-ce que tu cherches comme comportement en fait ? Avec le cas de "ls" que tu cites, j'ai peur de ne rien avoir compris ^^

(mais si tu veux rigoureusement le comportement des binaires standard d'Unix, le plus simple reste effectivement de passer par getopt)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

6

A noter que si tu fais ton prog PedroM only, le parsing de la ligne de commande est simplifé car tu as comme paramètre le classique :
int main (int argc, const char *argv[]);
et pas:
void _main (void)

En assembleur ca donne ceci:
_main:
  move.w 4(sp),d0 ; d0 = Nombre d'argument de la ligne de command
  move.l 6(a0),a0 ; pointeur vers un tableau contenant les arguments, ie.
  move.l (a0),a1   ; a1 = nom du programme
  cmpi.w #2,d0
  bne.s \pas2arg
  move.l 4(a0),a2 ; a2 = premier argument de la ligne de commande.


7

8

9

char **argv c'est une adresse de mémoire qui contient des adresses de mémoire qui contient des chars cote a cote.

donc si tu fais mem[argv] tu obtiens l'adresse du premier caractère du premier argument]

et mem[mem[argv+a*sizeof(adresse)]+i] permet de trouver le ieme caractere de l'arg a

schema coming

10

11

vala le schéma. Si tu piges pas un truc c'est ptet que j'ai mal expliqué trilangue

rZOF

j'ai dessiné une mémoire de largeur 32 bits

Avec moi, tu vas comprendre le lien entre le c et l'ASM trivil

12

13

14

15

Folco (./14) :
PpHd -> ça serait pas plutôt movea.l 6(sp),a0 pour obtenir un pointeur vers la liste des pointeurs, au lieu de movea.l 6(a0),a0 ?

C'était le piège pour voir si tu suivais devil

16

PpHd (./6) :
A noter que si tu fais ton prog PedroM only, le parsing de la ligne de commande est simplifé car tu as comme paramètre le classique :
int main (int argc, const char *argv[]);
et pas: void _main (void)
Terrible smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

17

18

C'est une bibliothèque dynamique comme au temps de la prog kernel ? (temps que TIGCC a révolu à tort d'ailleurs)
Elle est chargée en RAM ou tout est fait depuis l'archive ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

19

20

21

22

En général, tu parse ta ligne de commande 1 fois (voir 2) pour mettre à jour tes options.
Puis après tu calcules.

Vérifier que le nombre d'argument est toujours 2 est à mon avis une mauvaise idée.

23

24

25

J'ai jamais compris la différence entre --qqch et -qqch. Y'en a qui savent ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

26

c'est strictement pareil niveau prog, sinon c'est une "convention" simple tiret pour les options à une lettre et 2 pour les options longues. Mais certains programmes acceptent 1 tiret pour des options longues.

27

OK. C'est ce que j'avais remarqué et c'est pour ça que je ne comprenais pas la différence.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

28

29

Martial> Le 2ème argument n'est requis que si le 1er est différent de -help (et peut-être dans d'autres cas aussi, je ne connais pas ton programme), donc tu ne dois pas tester si le nombre d'arguments est supérieur à 2 tant que tu ne sais pas quel est le 1er argument.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

30