aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
Diffstat (limited to 'libbb')
-rw-r--r--libbb/single_argv.c15
-rw-r--r--libbb/vfork_daemon_rexec.c9
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
11char* FAST_FUNC single_argv(char **argv) 11char** 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
19char* 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)