diff options
-rw-r--r-- | src/hus.c | 54 |
1 files changed, 19 insertions, 35 deletions
@@ -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() { |