commit c59894bd5c41f2d4b4a03755a8aefbf470be28f2
parent 5773a8f22b400601ec82cc6b199b160a1d1cca22
Author: sin <sin@2f30.org>
Date: Thu, 13 Nov 2014 14:15:20 +0000
Implement cat -u and report correct exit condition
Diffstat:
M | cat.c | | | 18 | +++++++++++------- |
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/cat.c b/cat.c
@@ -9,7 +9,7 @@
static void
usage(void)
{
- eprintf("usage: %s [file...]\n", argv0);
+ eprintf("usage: %s [-u] [file...]\n", argv0);
}
int
@@ -17,9 +17,12 @@ main(int argc, char *argv[])
{
char *p;
FILE *fp;
- int i;
+ int ret = 0;
ARGBEGIN {
+ case 'u':
+ setbuf(stdout, NULL);
+ break;
default:
usage();
} ARGEND;
@@ -27,17 +30,18 @@ main(int argc, char *argv[])
if(argc == 0) {
concat(stdin, "<stdin>", stdout, "<stdout>");
} else {
- for(i = 0; i < argc; i++) {
- p = argv[i];
- if (argv[i][0] == '-')
+ for (; argc; argc--, argv++) {
+ p = argv[0];
+ if (argv[0][0] == '-')
p = "/dev/fd/0";
if(!(fp = fopen(p, "r"))) {
- weprintf("fopen %s:", argv[i]);
+ weprintf("fopen %s:", p);
+ ret = 1;
continue;
}
concat(fp, p, stdout, "<stdout>");
fclose(fp);
}
}
- return 0;
+ return ret;
}