aboutsummaryrefslogtreecommitdiff
path: root/libbb/fclose_nonstdin.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2013-11-28 03:14:16 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2013-11-28 03:14:16 +0100
commit259b3c047aea430c4aaecbdb9580a07e67691e8d (patch)
tree937c646d6384e0f79c11ef3d6527601ce164911b /libbb/fclose_nonstdin.c
parent8bd810bd276d20451faafdae88df4af9c2dd96d1 (diff)
downloadbusybox-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.c3
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;