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:
| M | doc/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