From 9662bbf79b33ca8d1dfdc9aeda17d2643c2e183f Mon Sep 17 00:00:00 2001 From: Lieuwe Rooijakkers Date: Sun, 4 Aug 2024 15:00:16 +0200 Subject: kat: use loop_args --- src/kat.c | 43 +++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/kat.c b/src/kat.c index aa0249c..923307a 100644 --- a/src/kat.c +++ b/src/kat.c @@ -4,6 +4,7 @@ #include #include "util/versie.h" +#include "util/loop_args.h" #include "io/read_file.h" static void usage(FILE *f) { @@ -47,35 +48,20 @@ static void process(struct filebuf *fb) { // TODO: be smarter, kat doesn't have to read the whole file in memory (for // unmappable files) -int entry_kat(int argc, char **argv) { - char **args = parse_options(argc, argv); +static int handle(char *arg, bool isstdin) { + struct filebuf *fb = NULL; - if (*args == NULL) { - struct filebuf *fb = stream_to_filebuf(stdin, 0); + if (isstdin) { + fb = stream_to_filebuf(stdin, 0); if (fb == NULL) goto err_stdin; - - process(fb); - return 0; - } - - while (*args != NULL) { - struct filebuf *fb = NULL; - - if (!strcmp(*args, "-")) { - fb = stream_to_filebuf(stdin, 0); - if (fb == NULL) goto err_stdin; - } else { - bool isdir = false; - fb = file_to_filebuf(*args, 0, &isdir); - if (isdir) goto err_isdir; - else if (fb == NULL) goto err_file; - } - - process(fb); - - args++; + } else { + bool isdir = false; + fb = file_to_filebuf(arg, 0, &isdir); + if (isdir) goto err_isdir; + else if (fb == NULL) goto err_file; } + process(fb); return 0; err_stdin: @@ -87,6 +73,11 @@ err_file: return 1; err_isdir: - fprintf(stderr, "kat: bestand '%s' is een mapje\n", *args); + fprintf(stderr, "kat: bestand '%s' is een mapje\n", arg); return 1; } + +int entry_kat(int argc, char **argv) { + char **args = parse_options(argc, argv); + return loop_args(args, handle); +} -- cgit v1.2.3-70-g09d2