summaryrefslogtreecommitdiff
path: root/src/tak.c
diff options
context:
space:
mode:
authorLieuwe Rooijakkers <lieuwerooijakkers@gmail.com>2024-08-04 23:42:03 +0200
committerLieuwe Rooijakkers <lieuwerooijakkers@gmail.com>2024-08-04 23:42:03 +0200
commit44e676468e1954e9f17a471e82602a9e036acecf (patch)
tree6e2705828239959d6626b3d0c5394ddf0a991ae3 /src/tak.c
parent7a84b99e6db450496b08a7ae5e13f05d3e0f6276 (diff)
tak: use loop_files
Diffstat (limited to 'src/tak.c')
-rw-r--r--src/tak.c33
1 files changed, 3 insertions, 30 deletions
diff --git a/src/tak.c b/src/tak.c
index 0cda9d5..0b30f95 100644
--- a/src/tak.c
+++ b/src/tak.c
@@ -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);
}