Deutsch   English   Français   Italiano  
<87wnchvsqa.fsf@universite-de-strasbourg.fr.invalid>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!aioe.org!K7PIs9tCGQ+WHJa7e6BylQ.user.46.165.242.75.POSTED!not-for-mail
From: Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid>
Newsgroups: fr.comp.os.unix
Subject: Re: =?utf-8?Q?r=C3=A8gle?= pour =?utf-8?Q?=C3=A9crire?= les "usage:
 ..."
Date: Wed, 13 Jul 2022 19:15:57 +0200
Organization: =?utf-8?Q?Universit=C3=A9?= de Strasbourg
Message-ID: <87wnchvsqa.fsf@universite-de-strasbourg.fr.invalid>
References: <62c8c4eb$0$24781$426a74cc@news.free.fr>
	<tab00r$v6d7$1@dont-email.me> <62c98a7b$0$18716$426a74cc@news.free.fr>
	<87a69ix9rl.fsf@universite-de-strasbourg.fr.invalid>
	<62cc5318$0$18751$426a34cc@news.free.fr>
	<tahkuf$6ob$1@cabale.usenet-fr.net>
	<875yk3xsbg.fsf@universite-de-strasbourg.fr.invalid>
	<62ce256c$0$22264$426a34cc@news.free.fr>
	<871qupxml4.fsf@universite-de-strasbourg.fr.invalid>
	<62ceda82$0$24807$426a34cc@news.free.fr>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Injection-Info: gioia.aioe.org; logging-data="43282"; posting-host="K7PIs9tCGQ+WHJa7e6BylQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
Cancel-Lock: sha1:b6/ct6sSpCnMDH1wijveLg2gwcI=
X-Notice: Filtered by postfilter v. 0.9.2
Bytes: 5078
Lines: 111

Thomas <fantome.forums.tDeContes@free.fr.invalid> writes:

>> >> accepter "-vn" comme "-v -n",
>> >> accepter "-odir" comme "-o dir",
>> >
>> > est-ce que c'est qqch que les usagers utilisent bcp, =C3=A7a ?
>> > parce que moi je trouve =C3=A7a plut=C3=B4t emb=C3=AAtant, avec notamm=
ent :
>> > "-onv" =3D "-o -n -v", ou
>> > "-onv" =3D> dir =3D "nv" ?
>>=20
>> La seconde. Si un argument contient plusieurs options, la premi=C3=A8re
>> n=C3=A9cessitant un argument d'option s'impose : l'argument de l'option =
est
>> soit la suite, soit l'argument suivant.
>
> (si l'argument suivant est une option, que fait getopt() ?)

-o -v =3D> -v est l'argument de l'option -o (idem "-o-v")

> ce que je voulais dire c'est qu'=C3=A0 la relecture c'est pas =C3=A9viden=
t du=20
> tout, il faut d=C3=A9chiffrer.
> c'est qqch que j'=C3=A9vite au maximum.

Je pense que c'est juste le contraire : on lit de gauche =C3=A0 droite, il
suffit de savoir quelle option a un argument.

[...]
> =C3=A7a fait bcp plus usine =C3=A0 gaz que l'analyse lin=C3=A9aire,
> donc - entre autres - plus difficile =C3=A0 debugger et =C3=A0 maintenir.
>
> bon, si c'est n=C3=A9cessaire on va se le farcir ...

Pas du tout, tu fais ce que tu veux, c'est juste une illustration du
fait que ce n'est pas tr=C3=A8s difficile.

[...]
>>     while optind < argc and argv[optind][0] =3D=3D "-":
>>         if argv[optind] in ["-v", "--verbose"]:
>>             opt_v =3D True; optind +=3D 1
>>         elif argv[optind] in ["-ni", "--new-iork"]:
>>             opt_ni =3D True; optind +=3D 1
>>         elif argv[optind] in ["-od", "--output-dir"] and optind+1 < argc:
>>             opt_od =3D True; dir =3D argv[optind+1]; optind +=3D 2
>>         else:
>>             wtf ("option inconnue")
[...]
>
> si je te suis bien, tu consid=C3=A8res qu'il n'est pas important de trait=
er=20
> "--" ?

Voil=C3=A0 ce qu'il faut ajouter :

        elif argv[optind] =3D=3D "--":
            optind +=3D 1
            break

>> On peut affiner le cas d'erreur o=C3=B9 "-od" est le dernier =C3=A9l=C3=
=A9ment.
>
> h=C3=A9 oui ! l=C3=A0 tu utilises argv[optind+1] sans v=C3=A9rifier qu'il=
 existe !

Si si, c'est v=C3=A9rifi=C3=A9.

>> On peut aussi tester la duplication des options (si le opt_x est d=C3=A9=
j=C3=A0
>> True).
>
> dans ce cas l=C3=A0 on doit faire quoi ? ignorer ou une erreur ?

Au choix. Je pr=C3=A9f=C3=A8re ignorer (ou warning au pire).

[...]
>> Le test de coh=C3=A9rence final a exactement la meme structure que celui=
 que
>> tu fais en analysant les arguments (sauf qu'il teste seulement les
>> diff=C3=A9rents bool=C3=A9ens).
>
> je ne dirais pas "exactement", mais je crois que =C3=A7a va aller.

C'est la m=C3=AAme logique.

[...]
>> (=C3=80 mon avis, ce n'est pas assez gratifiant pour se passer de getopt=
() ou
>> s'=C3=A9carter de ses conventions, mais chacun son truc.)
>
> je ne comprend pas cette phrase.

Cela signifie : moi j'utiliserais getopt() =C3=A0 la place

>> C'est Posix, il y a de fortes chances que la d=C3=A9pendance soit d=C3=
=A9j=C3=A0
>> satisfaite.
>
> je programme en Ada, et =C3=A7a ne fait pas partie de la norme Ada. donc =
=C3=A7a=20
> me fait d=C3=A9pendre de mon compilateur via ses "suppl=C3=A9ments".
> =C3=A7a peut =C3=AAtre g=C3=AAnant pour ceux qui voudraient utiliser un a=
utre=20
> compilateur que le mien.

Il doit y a avoir quelque chose d'=C3=A9quivalent =C3=A0 getopt. En python =
il y a
un module getopt et aussi argparse. Si =C3=A7a n'y est pas, tu peux r=C3=A2=
ler
aupr=C3=A8s des d=C3=A9veloppeurs de la biblioth=C3=A8que standard.

-- Alain.