- move common code into new open_new_terminal() function;

text    data     bss     dec     hex filename
 864434   10244  645892 1520570  1733ba busybox_old
 864386   10244  645892 1520522  17338a busybox_unstripped

add/remove: 1/0 grow/shrink: 0/2 up/down: 92/-143 (-51)
function                                     old     new   delta
open_new_terminal                              -      92     +92
exec_signal                                  345     276     -69
run                                         1527    1453     -74
Again, 48 != 51 so let's trust the former..
This commit is contained in:
Bernhard Reutner-Fischer 2006-05-29 12:54:16 +00:00
parent bbc225e13d
commit 0da069d382
2 changed files with 28 additions and 24 deletions

2
TODO
View File

@ -27,7 +27,7 @@ Rob Landley <rob@landley.net>:
bzip2
Compression-side support.
init
General cleanup.
General cleanup (should use ENABLE_FEATURE_INIT_SYSLOG and ENABLE_FEATURE_INIT_DEBUG).
Unify base64 handling.
There's base64 encoding and decoding going on in:
networking/wget.c:base64enc()

View File

@ -386,6 +386,23 @@ static void fixup_argv(int argc, char **argv, char *new_argv0)
}
}
/* Open the new terminal device */
static void open_new_terminal(const char *device, char fail) {
struct stat sb;
if ((device_open(device, O_RDWR)) < 0) {
if (stat(device, &sb) != 0) {
message(LOG | CONSOLE, "device '%s' does not exist.", device);
} else {
message(LOG | CONSOLE, "Bummer, can't open %s", device);
}
if (fail)
_exit(1);
/* else */
halt_signal(SIGUSR1);
}
}
static pid_t run(const struct init_action *a)
{
int i, junk;
@ -405,7 +422,6 @@ static pid_t run(const struct init_action *a)
sigprocmask(SIG_BLOCK, &nmask, &omask);
if ((pid = fork()) == 0) {
struct stat sb;
/* Clean up */
close(0);
@ -429,14 +445,7 @@ static pid_t run(const struct init_action *a)
setsid();
/* Open the new terminal device */
if ((device_open(a->terminal, O_RDWR)) < 0) {
if (stat(a->terminal, &sb) != 0) {
message(LOG | CONSOLE, "device '%s' does not exist.", a->terminal);
} else {
message(LOG | CONSOLE, "Bummer, can't open %s", a->terminal);
}
_exit(1);
}
open_new_terminal(a->terminal, 1);
/* Make sure the terminal will act fairly normal for us */
set_term(0);
@ -575,6 +584,8 @@ static pid_t run(const struct init_action *a)
getpid(), a->terminal, cmdpath);
#if defined CONFIG_FEATURE_INIT_COREDUMPS
{
struct stat sb;
if (stat(CORE_ENABLE_FLAG_FILE, &sb) == 0) {
struct rlimit limit;
@ -582,6 +593,7 @@ static pid_t run(const struct init_action *a)
limit.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &limit);
}
}
#endif
/* Now run it. The new program will take over this PID,
@ -729,15 +741,7 @@ static void exec_signal(int sig ATTRIBUTE_UNUSED)
close(2);
/* Open the new terminal device */
if ((device_open(a->terminal, O_RDWR)) < 0) {
struct stat sb;
if (stat(a->terminal, &sb) != 0) {
message(LOG | CONSOLE, "device '%s' does not exist.", a->terminal);
} else {
message(LOG | CONSOLE, "Bummer, can't open %s", a->terminal);
}
halt_signal(SIGUSR1);
}
open_new_terminal(a->terminal, 0);
/* Make sure the terminal will act fairly normal for us */
set_term(0);