aplat

Documents structurés pour Unix
git clone git://git.asteride.xyz/~ldp/aplat.git
Journaux | Fichiers | Références | LISEZ-MOI | LICENCE

commit 0e29082b35d43354ad4e84c7b4a8f3be17d49502
parent 9c76abfb1444c0a8547382b0cfae64c47161e8d7
Auteur: Loïc Daignault-Pichette <loic@asteride.xyz>
Date:   Fri,  7 Jun 2024 14:36:54 -0400

ajout d'une option -h

Diffstat:
Maplat.c | 39++++++++++++++++++++++++++++++---------
Mchangements.txt | 1+
2 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/aplat.c b/aplat.c @@ -25,6 +25,7 @@ #define DRAP_OUV 2 static void utilisation(FILE *fichier); +static void version(void); static int aplatir(FILE *f); static int obt_jeton(FILE *fichier, struct tampon *tp); static int echapper(FILE *fichier, struct tampon *tp); @@ -41,6 +42,8 @@ struct tampon tp_ctn; int main(int argc, char **argv) { + int c; + /* trouver le nom du programme */ if ((nom_prog = *argv) == NULL || *nom_prog == '\0') nom_prog = "aplat"; @@ -59,16 +62,23 @@ main(int argc, char **argv) return 1; } #endif - - if (argc == 2 && argv[1][0] == '-' && argv[1][1] == 'V' - && argv[1][2] == '\0') { - printf("aplat " VERSION "\n"); - return 0; - } else if (argc > 1) { - utilisation(stderr); - return 1; + + while ((c = getopt(argc, argv, "Vh")) != -1) { + switch (c) { + case 'V': + version(); + return 0; + case 'h': + utilisation(stdout); + return 0; + default: + goto erreur; + } } + if (argc > 1) + goto erreur; + /* initialiser les tampons */ if (tp_init(&tp_etq, TP_ETQ_TLL) < 0 || tp_init(&tp_ctn, TP_CTN_TLL) < 0) @@ -78,12 +88,23 @@ main(int argc, char **argv) return 1; return 0; + +erreur: + utilisation(stderr); + return 1; } static void utilisation(FILE *f) { - fprintf(f, _("Utilisation: %s <[fichier]\n"), nom_prog); + fprintf(f, _("Utilisation: %s <[fichier]\n" + " %s -V | -h\n"), nom_prog, nom_prog); +} + +static void +version(void) +{ + fprintf(stdout, "%s " VERSION "\n", nom_prog); } static int diff --git a/changements.txt b/changements.txt @@ -14,6 +14,7 @@ Version 2.0 (???) * plat(5): Ajout de la séquence d'échappement « /d », qui signifie « : ». Les deux-points sont donc maintenant échappables. * aplat(1): La nouvelle option -V affiche la version du programme. +* aplat(1): La nouvelle optoin -h affiche le synopsis du programme. * aplat(1): Le raccourcis syntaxique utilisant les deux-points n'existe plus. * aplat(1): Les blocs sont délimités par le caractère « = », plutôt que par la séquence « """ ». Ce caractère doit en outre se trouver en début de ligne.