diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-01-19 21:19:35 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-01-19 21:19:35 +0000 |
commit | 9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e (patch) | |
tree | 69a650a8cd686f21087fc572a995420b6ac632cc /console-tools | |
parent | f8c11aa65df2af4ab20c0effc42997bbd7357cc3 (diff) | |
download | busybox-w32-9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e.tar.gz busybox-w32-9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e.tar.bz2 busybox-w32-9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e.zip |
openvt,getty,vfork_daemon_rexec,mount: tighten up fd cleanup code
(will close all fd's > 2 on daemonization now)
getty: fix "getty -" support, and also do not try to chown/chmod "-"
telnetd: fix "lost ctty" bug
Yet another attempt on saner function names:
bb_sanitize_server_stdio(0/1) -> bb_sanitize_stdio() + bb_daemonize();
Diffstat (limited to 'console-tools')
-rw-r--r-- | console-tools/openvt.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/console-tools/openvt.c b/console-tools/openvt.c index f1cf5645b..c7b3e4fa4 100644 --- a/console-tools/openvt.c +++ b/console-tools/openvt.c | |||
@@ -17,7 +17,6 @@ int openvt_main(int argc, char **argv) | |||
17 | int fd; | 17 | int fd; |
18 | char vtname[sizeof(VC_FORMAT) + 2]; | 18 | char vtname[sizeof(VC_FORMAT) + 2]; |
19 | 19 | ||
20 | |||
21 | if (argc < 3) { | 20 | if (argc < 3) { |
22 | bb_show_usage(); | 21 | bb_show_usage(); |
23 | } | 22 | } |
@@ -25,18 +24,16 @@ int openvt_main(int argc, char **argv) | |||
25 | sprintf(vtname, VC_FORMAT, (int)xatoul_range(argv[1], 1, 63)); | 24 | sprintf(vtname, VC_FORMAT, (int)xatoul_range(argv[1], 1, 63)); |
26 | 25 | ||
27 | if (fork() == 0) { | 26 | if (fork() == 0) { |
28 | /* leave current vt */ | 27 | /* child */ |
29 | if (setsid() < 0) { | 28 | /* leave current vt (controlling tty) */ |
30 | bb_perror_msg_and_die("setsid"); | 29 | setsid(); |
31 | } | ||
32 | close(0); /* so that new vt becomes stdin */ | ||
33 | |||
34 | /* and grab new one */ | 30 | /* and grab new one */ |
35 | fd = xopen(vtname, O_RDWR); | 31 | fd = xopen(vtname, O_RDWR); |
36 | 32 | /* Reassign stdin, stdout and sterr */ | |
37 | /* Reassign stdout and sterr */ | 33 | dup2(fd, STDIN_FILENO); |
38 | dup2(fd, STDOUT_FILENO); | 34 | dup2(fd, STDOUT_FILENO); |
39 | dup2(fd, STDERR_FILENO); | 35 | dup2(fd, STDERR_FILENO); |
36 | while (fd > 2) close(fd--); | ||
40 | 37 | ||
41 | execvp(argv[2], &argv[2]); | 38 | execvp(argv[2], &argv[2]); |
42 | _exit(1); | 39 | _exit(1); |