Re: règle pour écrire les "usage: ..."

Liste des GroupesRevenir à fco unix 
Sujet : Re: règle pour écrire les "usage: ..."
De : alain (at) *nospam* universite-de-strasbourg.fr.invalid (Alain Ketterlin)
Groupes : fr.comp.os.unix
Date : 11. Jul 2022, 23:17:23
Autres entêtes
Organisation : Université de Strasbourg
Message-ID : <875yk3xsbg.fsf@universite-de-strasbourg.fr.invalid>
References : 1 2 3 4 5 6
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
Olivier Miakinen <om+news@miakinen.net> writes:

Le 11/07/2022 18:43, Thomas répondait à Alain Ketterlin :

[...]
Si l'ordre des options est sans importance, il vaut peut-être mieux en
donner une liste linéaire, comme le fait en général --help (ou le man).
Un synopsis "mkdir [-m mode] [-p]" aurait l'air d'imposer l'ordre.
 
ah ben tant mieux :
j'ai horreur de l'analyse de texte, et la lecture des arguments en fait
partie.
ça me parait bcp moins compliqué à faire avec un ordre imposé.

Je te comprends : dans ton cas, tu peux analyser les arguments avec une
cascade de if. Mais imagine que tu écrives "ls" : difficile d'exiger les
options dans l'ordre alphabétique.

Permets-moi d'être en complet désaccord avec toi sur ce point, parce que
là l'usage est quasiment universel, du moins pour toutes les options avec
tiret.
>
Je veux dire que si la syntaxe proposée est :
usage: rapid [-v] -ni [-od dir] gui_file...
>
alors je m'attendrais à ce que toutes ces écritures soient autorisées :
rapid -v -ni -od dir gui_file...
rapid -ni -v -od dir gui_file...
rapid -ni -od dir -v gui_file...
rapid -v -od dir -ni gui_file...
rapid -od dir -v -ni gui_file...
rapid -od dir -ni -v gui_file...
>
Bien sûr je m'interdirais seulement de mettre 'dir' ailleurs que juste
derrière '-od', ou de mettre 'gui_file...' ailleurs qu'à la fin.

C'est la vision Posix, telle qu'elle est implémentée dans la fonction
getopt() -- sauf que les options doivent être mono-caractère. Dans ce
cas (options -v -n -o), on écrirait (en C) :

    while ((opt = getopt(argc, argv, "vno:")) != -1) /* ":" = argument */
    {
        switch (opt)
        {
            case 'v':
                ...
                break;
            /* ... */
            case 'o':
                whatever = optarg;
                ...
                break;
            default:
                wtf ("option inconnue");
        }
    }
    if (optind >= argc)
        wtf ("il faut au moins un gui_file");
    /* les "gui_file" sont argv[optind] etc. */

getopt() s'occupe de tout, y compris permuter les éléments de argv si
nécessaire pour permettre "rapid gui1 -v gui2", traiter l'option "--"
pour permettre ensuite un fichier appelé "-guifile" ou même "-v",
accepter "-vn" comme "-v -n", accepter "-odir" comme "-o dir", etc. J'en
oublie sûrement.

Tellement pratique qu'on cherche rarement ailleurs. Par contre cela
oblige à la fin à vérifier la cohérence (si il y a une option -o il faut
qu'il y ait aussi l'option -n).

Presque tous les outils standard utilisent ça, je pense (sauf les
commandes avec des options de folie, comme gcc). Les directives Posix
sont là :

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

Et la GNU libc a ses propres extensions, par exemple pour permettre
"--verbose" etc.

-- Alain.

Date Sujet#  Auteur
9 Jul 22 * règle pour écrire les "usage: ..."35Thomas
9 Jul 22 +* Re: règle pour écrire les "usage: ..."31ST
9 Jul 22 i`* Re: règle pour écrire les "usage: ..."30Thomas
9 Jul 22 i `* Re: règle pour écrire les "usage: ..."29Alain Ketterlin
11 Jul 22 i  `* Re: règle pour écrire les "usage: ..."28Thomas
11 Jul 22 i   `* Re: règle pour écrire les "usage: ..."27Olivier Miakinen
11 Jul 22 i    +* Re: règle pour écrire les "usage: ..."24Alain Ketterlin
13 Jul 22 i    i`* Re: règle pour écrire les "usage: ..."23Thomas
13 Jul 22 i    i +* Re: règle pour écrire les "usage: ..."21Alain Ketterlin
13 Jul 22 i    i i`* Re: règle pour écrire les "usage: ..."20Thomas
13 Jul 22 i    i i +* Re: règle pour écrire les "usage: ..."15Nicolas George
13 Jul 22 i    i i i`* Re: règle pour écrire les "usage: ..."14Thomas
13 Jul 22 i    i i i +* Re: règle pour écrire les "usage: ..."12Olivier Miakinen
13 Jul 22 i    i i i i`* Re: règle pour écrire les "usage: ..."11Thomas
13 Jul 22 i    i i i i `* Re: règle pour écrire les "usage: ..."10Olivier Miakinen
14 Jul 22 i    i i i i  +* Re: règle pour écrire les "usage: ..."6Nicolas George
9 Aug 22 i    i i i i  i`* Re: règle pour écrire les "usage: ..."5Thomas
10 Aug 22 i    i i i i  i `* Re: règle pour écrire les "usage: ..."4Nicolas George
14 Aug 22 i    i i i i  i  `* Re: règle pour écrire les "usage: ..."3Thomas
14 Aug 22 i    i i i i  i   `* Re: règle pour écrire les "usage: ..."2Nicolas George
19 Apr 23 i    i i i i  i    `- Re: règle pour écrire les "usage: ..."1Thomas
14 Jul 22 i    i i i i  `* Re: règle pour écrire les "usage: ..."3Thomas
14 Jul 22 i    i i i i   `* Re: règle pour écrire les "usage: ..."2Olivier Miakinen
31 Jul 22 i    i i i i    `- Re: règle pour écrire les "usage: ..."1Thomas
13 Jul 22 i    i i i `- Re: règle pour écrire les "usage: ..."1Nicolas George
13 Jul 22 i    i i `* Re: règle pour écrire les "usage: ..."4Alain Ketterlin
14 Jul 22 i    i i  `* Re: règle pour écrire les "usage: ..."3Thomas
14 Jul 22 i    i i   `* Re: règle pour écrire les "usage: ..."2Olivier Miakinen
31 Jul 22 i    i i    `- Re: règle pour écrire les "usage: ..."1Thomas
13 Jul 22 i    i `- Re: règle pour écrire les "usage: ..."1Nicolas George
11 Jul 22 i    +- Re: règle pour écrire les "usage: ..."1Thomas
14 Aug 22 i    `- Re: règle pour écrire les "usage: ..."1Thomas
9 Jul 22 `* Re: règle pour écrire les "usage: ..."3Olivier Miakinen
9 Jul 22  `* Re: règle pour écrire les "usage: ..."2Thomas
9 Jul 22   `- Re: règle pour écrire les "usage: ..."1Olivier Miakinen

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal