diff options
author | Denis Vlasenko | 2007-09-30 23:50:48 +0000 |
---|---|---|
committer | Denis Vlasenko | 2007-09-30 23:50:48 +0000 |
commit | 96e1b38586e80a0f014038bf4fdf4689c668fbd6 (patch) | |
tree | d7f6a7866700601598cfcc006b7dcb6cb4a7c07e /shell | |
parent | deabacdf91c6d1c3cfcdb4cd06780807193de81d (diff) | |
download | busybox-96e1b38586e80a0f014038bf4fdf4689c668fbd6.zip busybox-96e1b38586e80a0f014038bf4fdf4689c668fbd6.tar.gz |
introduce and use close_on_exec_on(fd). -50 bytes.
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 4 | ||||
-rw-r--r-- | shell/hush.c | 8 | ||||
-rw-r--r-- | shell/lash.c | 2 |
3 files changed, 8 insertions, 6 deletions
diff --git a/shell/ash.c b/shell/ash.c index 183911c..9d8b83c 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -3469,7 +3469,7 @@ setjobctl(int on) close(ofd); if (fd < 0) goto out; - fcntl(fd, F_SETFD, FD_CLOEXEC); + close_on_exec_on(fd); do { /* while we are in the background */ pgrp = tcgetpgrp(fd); if (pgrp < 0) { @@ -8830,7 +8830,7 @@ closescript(void) static void setinputfd(int fd, int push) { - fcntl(fd, F_SETFD, FD_CLOEXEC); + close_on_exec_on(fd); if (push) { pushfile(); parsefile->buf = 0; diff --git a/shell/hush.c b/shell/hush.c index 5f9f2c5..9c70556 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -760,9 +760,11 @@ static int builtin_eval(char **argv) static int builtin_cd(char **argv) { const char *newdir; - if (argv[1] == NULL) + if (argv[1] == NULL) { + // bash does nothing (exitcode 0) if HOME is ""; if it's unset, + // bash says "bash: cd: HOME not set" and does nothing (exitcode 1) newdir = getenv("HOME") ? : "/"; - else + } else newdir = argv[1]; if (chdir(newdir)) { printf("cd: %s: %s\n", newdir, strerror(errno)); @@ -3629,7 +3631,7 @@ static void setup_job_control(void) saved_task_pgrp = shell_pgrp = getpgrp(); debug_printf_jobs("saved_task_pgrp=%d\n", saved_task_pgrp); - fcntl(interactive_fd, F_SETFD, FD_CLOEXEC); + close_on_exec_on(interactive_fd); /* If we were ran as 'hush &', * sleep until we are in the foreground. */ diff --git a/shell/lash.c b/shell/lash.c index 5ba490f..af3a8f8 100644 --- a/shell/lash.c +++ b/shell/lash.c @@ -576,7 +576,7 @@ static int setup_redirects(struct child_prog *prog, int squirrel[]) if (openfd != redir->fd) { if (squirrel && redir->fd < 3) { squirrel[redir->fd] = dup(redir->fd); - fcntl(squirrel[redir->fd], F_SETFD, FD_CLOEXEC); + close_on_exec_on(squirrel[redir->fd]); } dup2(openfd, redir->fd); close(openfd); |