[git commit] ash: [REDIR] Remove EMFILE special case

Denys Vlasenko vda.linux at googlemail.com
Tue Oct 25 17:04:39 UTC 2016


commit: https://git.busybox.net/busybox/commit/?id=20a2cd6291924d405e636916962c6294d3b8544e
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Upstream commit:

    Date: Sun, 6 May 2007 12:01:37 +1000
    [REDIR] Remove EMFILE special case

    No caller of copyfd need to ignore EMFILE so we can remove the special
    case and just let it call sh_error on any error.

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 9dcf809..8092e39 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -5190,9 +5190,7 @@ openredirect(union node *redir)
 }
 
 /*
- * Copy a file descriptor to be >= to.  Returns -1
- * if the source file descriptor is closed, EMPTY if there are no unused
- * file descriptors left.
+ * Copy a file descriptor to be >= to. Throws exception on error.
  */
 /* 0x800..00: bit to set in "to" to request dup2 instead of fcntl(F_DUPFD).
  * old code was doing close(to) prior to copyfd() to achieve the same */
@@ -5213,8 +5211,6 @@ copyfd(int from, int to)
 		newfd = fcntl(from, F_DUPFD, to);
 	}
 	if (newfd < 0) {
-		if (errno == EMFILE)
-			return EMPTY;
 		/* Happens when source fd is not open: try "echo >&99" */
 		ash_msg_and_raise_error("%d: %m", from);
 	}
@@ -10243,8 +10239,6 @@ setinputfile(const char *fname, int flags)
 	if (fd < 10) {
 		fd2 = copyfd(fd, 10);
 		close(fd);
-		if (fd2 < 0)
-			ash_msg_and_raise_error("out of file descriptors");
 		fd = fd2;
 	}
 	setinputfd(fd, flags & INPUT_PUSH_FILE);


More information about the busybox-cvs mailing list