diff options
author | Lieuwe Rooijakkers <lieuwerooijakkers@gmail.com> | 2024-08-04 14:58:12 +0200 |
---|---|---|
committer | Lieuwe Rooijakkers <lieuwerooijakkers@gmail.com> | 2024-08-04 15:08:23 +0200 |
commit | e97438c8a6aa6bf5d9a5eb34fbac56661fccfae4 (patch) | |
tree | 26e4a2c08f8cf88ecb49041e728b355317d24a80 | |
parent | 98e7281d39f8ce9af07d7bf1461d18982d1984eb (diff) |
tak: use loop_args
-rw-r--r-- | src/tak.c | 41 |
1 files changed, 16 insertions, 25 deletions
@@ -6,6 +6,7 @@ #include "util/versie.h" #include "io/read_file.h" +#include "util/loop_args.h" static void usage(FILE *f) { fprintf(f, @@ -65,35 +66,20 @@ static void process(struct filebuf *fb) { free_filebuf(fb); } -int entry_tak(int argc, char **argv) { - char **args = parse_options(argc, argv); +static int handle(char *arg, bool isstdin) { + struct filebuf *fb = NULL; - if (*args == NULL) { + if (isstdin) { struct filebuf *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: @@ -105,6 +91,11 @@ err_file: return 1; err_isdir: - fprintf(stderr, "tak: bestand '%s' is een mapje\n", *args); + fprintf(stderr, "tak: bestand '%s' is een mapje\n", arg); return 1; } + +int entry_tak(int argc, char **argv) { + char **args = parse_options(argc, argv); + return loop_args(args, handle); +} |