diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/hoofd.c | 2 | ||||
-rw-r--r-- | src/kat.c | 2 | ||||
-rw-r--r-- | src/tak.c | 2 | ||||
-rw-r--r-- | src/toilet.c | 2 | ||||
-rw-r--r-- | src/util/loop_args.c | 7 |
5 files changed, 9 insertions, 6 deletions
diff --git a/src/hoofd.c b/src/hoofd.c index 0eac51d..c02d166 100644 --- a/src/hoofd.c +++ b/src/hoofd.c @@ -101,7 +101,7 @@ err_file: err_isdir: fprintf(stderr, "hoofd: bestand '%s' is een mapje\n", arg); - return 1; + return -1; } int entry_hoofd(int argc, char **argv) { @@ -74,7 +74,7 @@ err_file: err_isdir: fprintf(stderr, "kat: bestand '%s' is een mapje\n", arg); - return 1; + return -1; } int entry_kat(int argc, char **argv) { @@ -92,7 +92,7 @@ err_file: err_isdir: fprintf(stderr, "tak: bestand '%s' is een mapje\n", arg); - return 1; + return -1; } int entry_tak(int argc, char **argv) { diff --git a/src/toilet.c b/src/toilet.c index d9c2556..8ee0bfa 100644 --- a/src/toilet.c +++ b/src/toilet.c @@ -154,7 +154,7 @@ err_file: err_isdir: fprintf(stderr, "toilet: bestand '%s' is een mapje\n", arg); - return 1; + return -1; } int entry_toilet(int argc, char **argv) { diff --git a/src/util/loop_args.c b/src/util/loop_args.c index 4609c71..0ab6a7a 100644 --- a/src/util/loop_args.c +++ b/src/util/loop_args.c @@ -7,6 +7,8 @@ int loop_args(char **args, int (*callback)(char *argv, bool isstdin)) { return callback(*args, true); } + int stickyErr = 0; + while (*args != NULL) { int res = 0; if (!strcmp(*args, "-")) { @@ -15,10 +17,11 @@ int loop_args(char **args, int (*callback)(char *argv, bool isstdin)) { res = callback(*args, false); } - if (res != 0) return res; + if (res > 0) return res; + else if (res < 0 && stickyErr == 0) stickyErr = -res; args++; } - return 0; + return stickyErr; } |