summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2024-09-08 22:49:53 +0200
committerTom Smeding <tom@tomsmeding.com>2024-09-08 22:49:53 +0200
commit415f65b5671fdea8bb41f4d8c14cef4d7b1ec235 (patch)
tree57ffc14121988e5dfe7111475593ee541660177e /src
parentf017c53ec62b03e34c4ba4eb80eb3ec82bbff4ff (diff)
hus: Gebruik option_parse
Diffstat (limited to 'src')
-rw-r--r--src/hus.c54
1 files 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() {