diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/single_argv.c | 15 | ||||
-rw-r--r-- | libbb/vfork_daemon_rexec.c | 9 |
2 files changed, 17 insertions, 7 deletions
diff --git a/libbb/single_argv.c b/libbb/single_argv.c index 64844ddf8..594cb0d8d 100644 --- a/libbb/single_argv.c +++ b/libbb/single_argv.c | |||
@@ -8,11 +8,18 @@ | |||
8 | */ | 8 | */ |
9 | #include "libbb.h" | 9 | #include "libbb.h" |
10 | 10 | ||
11 | char* FAST_FUNC single_argv(char **argv) | 11 | char** FAST_FUNC skip_dash_dash(char **argv) |
12 | { | 12 | { |
13 | if (argv[1] && strcmp(argv[1], "--") == 0) | 13 | argv++; |
14 | if (argv[0] && argv[0][0] == '-' && argv[0][1] == '-' && argv[0][2] == '\0') | ||
14 | argv++; | 15 | argv++; |
15 | if (!argv[1] || argv[2]) | 16 | return argv; |
17 | } | ||
18 | |||
19 | char* FAST_FUNC single_argv(char **argv) | ||
20 | { | ||
21 | argv = skip_dash_dash(argv); | ||
22 | if (!argv[0] || argv[1]) | ||
16 | bb_show_usage(); | 23 | bb_show_usage(); |
17 | return argv[1]; | 24 | return argv[0]; |
18 | } | 25 | } |
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index 3845c0892..dad50ddb9 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c | |||
@@ -301,9 +301,12 @@ void FAST_FUNC bb_daemonize_or_rexec(int flags, char **argv) | |||
301 | } | 301 | } |
302 | 302 | ||
303 | if (flags & DAEMON_DEVNULL_STDIO) { | 303 | if (flags & DAEMON_DEVNULL_STDIO) { |
304 | xdup2(fd, 0); | 304 | if (flags & DAEMON_DEVNULL_STDIN) |
305 | xdup2(fd, 1); | 305 | xdup2(fd, 0); |
306 | xdup2(fd, 2); | 306 | if (flags & DAEMON_DEVNULL_OUTERR) { |
307 | xdup2(fd, 1); | ||
308 | xdup2(fd, 2); | ||
309 | } | ||
307 | } else { | 310 | } else { |
308 | /* have 0,1,2 open at least to /dev/null */ | 311 | /* have 0,1,2 open at least to /dev/null */ |
309 | while ((unsigned)fd < 2) | 312 | while ((unsigned)fd < 2) |