star-style

Writing conventions for co-authors
Log | Files | Refs | README | LICENSE

commit b3caab1ca0cf1644dc05a850c62c0ef51d901b12
parent e7521882a4d9a5e7675aa2c094910ce5740a5cb3
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri,  2 Oct 2026 18:18:01 +0200

Rédige la section sur les programmes en ligne de commande

Diffstat:
Mdoc/fr/star-c.7 | 88++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 87 insertions(+), 1 deletion(-)

diff --git a/doc/fr/star-c.7 b/doc/fr/star-c.7 @@ -1692,15 +1692,101 @@ error: goto exit; } .Ed -.Sh LES PROGRAMME EN LIGNE DE COMMANDE +.\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.Sh LES PROGRAMMES EN LIGNE DE COMMANDE +Privilégier une interface en ligne de commande pour les programmes +directement exécutables par l'utilisateur. +À la fois simple et légère, elle s'intègre parfaitement aux shells, que +ce soit en session interactive ou via des scripts. +Plus qu'une interface utilisateur elle est ainsi une interface vers le +système UNIX dont le programme peut alors directement tirer partie, que +ce soit en terme de gestion d'entrées/sorties ou de communication +inter-processus avec d'autres utilitaires, par exemple via des tubes +shell. +.Pp +Analyser les arguments du programme en utilisant la fonction +.Xr getopt 3 +définie par le standard POSIX.1-2001 dans l'en-tête +.In unistd.h +de la bibliohtèque C. +Cette fonction assure la consistante de l'analyse des arguments et +participe au respect des conventions énoncées par le standard POSIX pour +les utilitaires en ligne de commandes. +.Pp +Proposer l'option +.Fl h +qui affiche le seul synopsis de la commande en guise de résumé de ses +attendus et options. +Réserver la description du programme et de ses options à sa page de +manuel. +Afficher ce même synopsis en cas d'erreur lors de l'analyse des +arguments de sorte à renvoyer l'utilisateur vers la syntaxe de la +commande. +.Bd -literal -offset Ds +static void +usage(FILE* stream) +{ + fprintf(stream, "usage: foo [-hv] [-b bar]\en"); +} + +int +main(int argc, char** argv) +{ + FILE* bar = NULL; + int err = 0; + int opt = 0; + int verbosity = 0; + + while ((opt = getopt(argc, argv, "b:hv")) != -1) { + switch (opt) { + case 'a': + if((bar = fopen(optarg, "r")) == NULL) err = 1; + break; + case 'h': usage(stdout); goto exit; + case 'v': verbosity += (verbosity < 3); break; + default: err = 1; break; + } + if (err) { usage(stderr); goto error; } + } + if (bar == NULL) bar = stdin; + + if ((err = foo(bar, verbosity)) != 0) goto error; + +exit: + if(bar && bar != stdin) fclose(bar); + return err; +error: + goto exit; +} +.Ed +.Pp +Dès que possible, donner la possibilité de lire les données d'entrée du +programme directement sur l'entrée standard. +Il pourra ainsi être chaîné avec un autre processus en charge, par +exemple, de pré-traiter ses données d'entrée. +De même, écrire les données en sortie du programme sur la sortie +standard pour qu'un autre utilitaire puisse en post-traiter le +résultat. +Si plusieurs fichiers d'entrée/de sortie sont lus/écrits par le +programme, définir les données le plus à même d'être pré/post-traitées +pour choisir lesquelles seront lues/écriture sur l'entrée/la sortie +standard. .\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh FICHIERS .\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh VOIR AUSSI .Xr gcc 1 , +.Xr getopt 3 , .Xr feature_test_macros 7 .Pp .Rs +.%A IEEE +.%A The Open Group +.%R Base Definitions, POSIX.1-2001 +.%T Section 12, Utility Conventions +.Re +.Pp +.Rs .%A La Fondation pour le logiciel libre .%T Comment utiliser les licences GNU pour vos logiciels .%U https://www.gnu.org/licenses/gpl-howto.fr.html