diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2013-11-28 03:14:16 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2013-11-28 03:14:16 +0100 |
commit | 259b3c047aea430c4aaecbdb9580a07e67691e8d (patch) | |
tree | 937c646d6384e0f79c11ef3d6527601ce164911b /libbb/fclose_nonstdin.c | |
parent | 8bd810bd276d20451faafdae88df4af9c2dd96d1 (diff) | |
download | busybox-w32-259b3c047aea430c4aaecbdb9580a07e67691e8d.tar.gz busybox-w32-259b3c047aea430c4aaecbdb9580a07e67691e8d.tar.bz2 busybox-w32-259b3c047aea430c4aaecbdb9580a07e67691e8d.zip |
sed: open input files sequentially to avoid EMFILE
Currently, sed pre-opens all files, which may cause EMFILE errors
on systems with low ulimit -n. Change sed to open one file at a time.
function old new delta
get_next_line 177 235 +58
sed_main 682 652 -30
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 58/-30) Total: 28 bytes
Based on the patch by Daniel Borca <dborca@yahoo.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb/fclose_nonstdin.c')
-rw-r--r-- | libbb/fclose_nonstdin.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libbb/fclose_nonstdin.c b/libbb/fclose_nonstdin.c index 5ce9d5b48..1b1441347 100644 --- a/libbb/fclose_nonstdin.c +++ b/libbb/fclose_nonstdin.c | |||
@@ -18,7 +18,8 @@ int FAST_FUNC fclose_if_not_stdin(FILE *f) | |||
18 | { | 18 | { |
19 | /* Some more paranoid applets want ferror() check too */ | 19 | /* Some more paranoid applets want ferror() check too */ |
20 | int r = ferror(f); /* NB: does NOT set errno! */ | 20 | int r = ferror(f); /* NB: does NOT set errno! */ |
21 | if (r) errno = EIO; /* so we'll help it */ | 21 | if (r) |
22 | errno = EIO; /* so we'll help it */ | ||
22 | if (f != stdin) | 23 | if (f != stdin) |
23 | return (r | fclose(f)); /* fclose does set errno on error */ | 24 | return (r | fclose(f)); /* fclose does set errno on error */ |
24 | return r; | 25 | return r; |