diff options
-rw-r--r-- | src/tak.c | 33 |
1 files changed, 3 insertions, 30 deletions
@@ -6,7 +6,7 @@ #include "util/versie.h" #include "io/read_file.h" -#include "util/loop_args.h" +#include "util/loop_files.h" static void usage(FILE *f) { fprintf(f, @@ -41,7 +41,7 @@ static char** parse_options(int argc, char **argv) { return argv + optind; } -static void process(struct filebuf *fb) { +static int process(struct filebuf *fb, char*, bool) { char *lstart, *lend; lend = &fb->buf[fb->sz - 1]; @@ -64,38 +64,11 @@ static void process(struct filebuf *fb) { } free_filebuf(fb); -} - -static int handle(char *arg, bool isstdin) { - struct filebuf *fb = NULL; - - if (isstdin) { - struct filebuf *fb = stream_to_filebuf(stdin, 0); - if (fb == NULL) goto err_stdin; - } 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: - fprintf(stderr, "tak: fout bij lezen van standaard invoer\n"); - return 1; - -err_file: - fprintf(stderr, "tak: fout bij lezen van bestand\n"); - return 1; - -err_isdir: - 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); + return loop_files(args, process); } |