diff options
Diffstat (limited to 'toys/posix')
-rw-r--r-- | toys/posix/cmp.c | 10 | ||||
-rw-r--r-- | toys/posix/grep.c | 9 | ||||
-rw-r--r-- | toys/posix/sed.c | 4 | ||||
-rw-r--r-- | toys/posix/tail.c | 4 | ||||
-rw-r--r-- | toys/posix/tee.c | 4 |
5 files changed, 14 insertions, 17 deletions
diff --git a/toys/posix/cmp.c b/toys/posix/cmp.c index 527fbfda..f4c34091 100644 --- a/toys/posix/cmp.c +++ b/toys/posix/cmp.c @@ -43,6 +43,8 @@ static void do_cmp(int fd, char *name) return; } + toys.exitval = 0; + for (;;) { len1 = readall(TT.fd, toybuf, size); len2 = readall(fd, buf2, size); @@ -54,11 +56,9 @@ static void do_cmp(int fd, char *name) if (toys.optflags & FLAG_l) printf("%ld %o %o\n", byte_no, toybuf[i], buf2[i]); else { - if (!(toys.optflags & FLAG_s)) { + if (!(toys.optflags & FLAG_s)) printf("%s %s differ: char %ld, line %ld\n", TT.name, name, byte_no, line_no); - toys.exitval++; - } goto out; } } @@ -79,6 +79,8 @@ out: void cmp_main(void) { - loopfiles_rw(toys.optargs, O_CLOEXEC, 0, toys.optflags&FLAG_s, do_cmp); + toys.exitval = 2; + loopfiles_rw(toys.optargs, O_CLOEXEC|(WARN_ONLY*!(toys.optflags&FLAG_s)), 0, + do_cmp); } diff --git a/toys/posix/grep.c b/toys/posix/grep.c index 6423ea6b..2fe6ac27 100644 --- a/toys/posix/grep.c +++ b/toys/posix/grep.c @@ -81,17 +81,12 @@ static void outline(char *line, char dash, char *name, long lcount, long bcount, static void do_grep(int fd, char *name) { struct double_list *dlb = 0; - FILE *file = fdopen(fd, "r"); + FILE *file = xfdopen(fd, "r"); long lcount = 0, mcount = 0, offset = 0, after = 0, before = 0; char *bars = 0; if (!fd) name = "(standard input)"; - if (!file) { - perror_msg_raw(name); - return; - } - // Loop through lines of input for (;;) { char *line = 0, *start; @@ -368,5 +363,5 @@ void grep_main(void) if (!strcmp(*ss, "-")) do_grep(0, *ss); else dirtree_read(*ss, do_grep_r); } - } else loopfiles_rw(ss, O_RDONLY, 0, 1, do_grep); + } else loopfiles_rw(ss, O_RDONLY|WARN_ONLY, 0, do_grep); } diff --git a/toys/posix/sed.c b/toys/posix/sed.c index c62d2d10..744edf7b 100644 --- a/toys/posix/sed.c +++ b/toys/posix/sed.c @@ -1010,8 +1010,8 @@ void sed_main(void) TT.fdout = 1; TT.remember = xstrdup(""); - // Inflict pattern upon input files - loopfiles_rw(args, O_RDONLY, 0, 0, do_sed); + // Inflict pattern upon input files. Long version because !O_CLOEXEC + loopfiles_rw(args, O_RDONLY|WARN_ONLY, 0, do_sed); if (!(toys.optflags & FLAG_i)) process_line(0, 0); diff --git a/toys/posix/tail.c b/toys/posix/tail.c index 787e116e..22b5ac6d 100644 --- a/toys/posix/tail.c +++ b/toys/posix/tail.c @@ -242,8 +242,8 @@ void tail_main(void) if ((TT.ffd = inotify_init()) < 0) perror_exit("inotify_init"); TT.files = xmalloc(toys.optc*8); } - loopfiles_rw(args, O_RDONLY|(O_CLOEXEC*!(toys.optflags&FLAG_f)), - 0, 0, do_tail); + loopfiles_rw(args, O_RDONLY|WARN_ONLY|(O_CLOEXEC*!(toys.optflags&FLAG_f)), + 0, do_tail); if ((toys.optflags & FLAG_f) && TT.file_no) { int len, last_fd = TT.files[(TT.file_no-1)*2], i, fd; diff --git a/toys/posix/tee.c b/toys/posix/tee.c index d5591b67..6167c8ad 100644 --- a/toys/posix/tee.c +++ b/toys/posix/tee.c @@ -49,8 +49,8 @@ void tee_main(void) // Open output files loopfiles_rw(toys.optargs, - O_RDWR|O_CREAT|((toys.optflags & FLAG_a)?O_APPEND:O_TRUNC), - 0666, 0, do_tee_open); + O_RDWR|O_CREAT|WARN_ONLY|((toys.optflags & FLAG_a)?O_APPEND:O_TRUNC), + 0666, do_tee_open); for (;;) { struct fd_list *fdl; |