From 415f65b5671fdea8bb41f4d8c14cef4d7b1ec235 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Sun, 8 Sep 2024 22:49:53 +0200 Subject: hus: Gebruik option_parse --- src/hus.c | 54 +++++++++++++++++++----------------------------------- 1 file changed, 19 insertions(+), 35 deletions(-) diff --git a/src/hus.c b/src/hus.c index 271fd05..3ab0661 100644 --- a/src/hus.c +++ b/src/hus.c @@ -11,6 +11,7 @@ #include "util/debug.h" #include "util/error.h" +#include "util/option.h" #include "util/versie.h" static char *shufrange = NULL; @@ -54,43 +55,26 @@ static void shuf_lines() { free(js); } -static void usage(FILE *f) { - fprintf(f, - "Gebruik: hus [-hV] [BESTAND]\n" - " hus -i LA-HO [-hV]\n" - "\n" - "Hussel de regels van het gegeven bestand.\n" - "Als er geen bestand gegeven is, of bestand is -, hussel dan de regels op standaard invoer.\n" - "\n" - " -i LA-HO Genereer regels van laag naar hoog en hussel deze\n" - " -h Toon deze hulptekst\n" - " -V Toon versienummer\n"); -} +static const char *usage_string = + "Gebruik: hus [-hV] [BESTAND]\n" + " hus -i LA-HO [-hV]\n" + "\n" + "Hussel de regels van het gegeven bestand.\n" + "Als er geen bestand gegeven is, of bestand is -, hussel dan de regels op standaard invoer.\n" + "\n" + " -i LA-HO Genereer regels van laag naar hoog en hussel deze\n" + " -h Toon deze hulptekst\n" + " -V Toon versienummer\n"; static char** parse_options(int argc, char **argv) { - int opt; - while ((opt = getopt(argc, argv, "i:hV")) != -1) { - switch (opt) { - case 'i': - shufrange = optarg; - break; - - case 'h': - usage(stdout); - exit(0); - - case 'V': - drukkedoos_print_versie(stdout); - exit(0); - - case '?': - fprintf(stderr, "hus: Ongeldige optie: -%c\n", optopt); - usage(stderr); - exit(1); - } - } - - return argv + optind; + const struct option_spec spec[] = { + {'i', OPTION_WITHARG(&shufrange)}, + {'h', OPTION_HELPUSAGE(usage_string)}, + {'V', OPTION_VERSION()}, + OPTION_SPEC_END + }; + + return option_parse(argc, argv, spec); } static int exec_shufrange() { -- cgit v1.2.3-70-g09d2