diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-11-29 11:44:10 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-11-29 11:44:10 +0100 |
commit | c1005355718055983912ebdd79357b11894e0958 (patch) | |
tree | f879fd99b2850586ececc83b796d1ab697b3dece /libbb | |
parent | 75a1c87357070ec0229f1c98d887bc1c526bb81c (diff) | |
download | busybox-w32-c1005355718055983912ebdd79357b11894e0958.tar.gz busybox-w32-c1005355718055983912ebdd79357b11894e0958.tar.bz2 busybox-w32-c1005355718055983912ebdd79357b11894e0958.zip |
cat,nl: fix handling of open errors
$ cat -n does_not_exist; echo $?
cat: does_not_exist: No such file or directory
1
function old new delta
print_numbered_lines 118 129 +11
nl_main 196 201 +5
cat_main 421 425 +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 20/0) Total: 20 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/print_numbered_lines.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libbb/print_numbered_lines.c b/libbb/print_numbered_lines.c index 9a8a51440..d6459d7c3 100644 --- a/libbb/print_numbered_lines.c +++ b/libbb/print_numbered_lines.c | |||
@@ -8,12 +8,16 @@ | |||
8 | 8 | ||
9 | #include "libbb.h" | 9 | #include "libbb.h" |
10 | 10 | ||
11 | void FAST_FUNC print_numbered_lines(struct number_state *ns, const char *filename) | 11 | int FAST_FUNC print_numbered_lines(struct number_state *ns, const char *filename) |
12 | { | 12 | { |
13 | FILE *fp = fopen_or_warn_stdin(filename); | 13 | FILE *fp = fopen_or_warn_stdin(filename); |
14 | unsigned N = ns->start; | 14 | unsigned N; |
15 | char *line; | 15 | char *line; |
16 | 16 | ||
17 | if (!fp) | ||
18 | return EXIT_FAILURE; | ||
19 | |||
20 | N = ns->start; | ||
17 | while ((line = xmalloc_fgetline(fp)) != NULL) { | 21 | while ((line = xmalloc_fgetline(fp)) != NULL) { |
18 | if (ns->all | 22 | if (ns->all |
19 | || (ns->nonempty && line[0]) | 23 | || (ns->nonempty && line[0]) |
@@ -27,4 +31,6 @@ void FAST_FUNC print_numbered_lines(struct number_state *ns, const char *filenam | |||
27 | ns->start = N; | 31 | ns->start = N; |
28 | 32 | ||
29 | fclose(fp); | 33 | fclose(fp); |
34 | |||
35 | return EXIT_SUCCESS; | ||
30 | } | 36 | } |