- 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:
parent
bbc225e13d
commit
0da069d382
2
TODO
2
TODO
@ -27,7 +27,7 @@ Rob Landley <rob@landley.net>:
|
|||||||
bzip2
|
bzip2
|
||||||
Compression-side support.
|
Compression-side support.
|
||||||
init
|
init
|
||||||
General cleanup.
|
General cleanup (should use ENABLE_FEATURE_INIT_SYSLOG and ENABLE_FEATURE_INIT_DEBUG).
|
||||||
Unify base64 handling.
|
Unify base64 handling.
|
||||||
There's base64 encoding and decoding going on in:
|
There's base64 encoding and decoding going on in:
|
||||||
networking/wget.c:base64enc()
|
networking/wget.c:base64enc()
|
||||||
|
50
init/init.c
50
init/init.c
@ -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)
|
static pid_t run(const struct init_action *a)
|
||||||
{
|
{
|
||||||
int i, junk;
|
int i, junk;
|
||||||
@ -405,7 +422,6 @@ static pid_t run(const struct init_action *a)
|
|||||||
sigprocmask(SIG_BLOCK, &nmask, &omask);
|
sigprocmask(SIG_BLOCK, &nmask, &omask);
|
||||||
|
|
||||||
if ((pid = fork()) == 0) {
|
if ((pid = fork()) == 0) {
|
||||||
struct stat sb;
|
|
||||||
|
|
||||||
/* Clean up */
|
/* Clean up */
|
||||||
close(0);
|
close(0);
|
||||||
@ -429,14 +445,7 @@ static pid_t run(const struct init_action *a)
|
|||||||
setsid();
|
setsid();
|
||||||
|
|
||||||
/* Open the new terminal device */
|
/* Open the new terminal device */
|
||||||
if ((device_open(a->terminal, O_RDWR)) < 0) {
|
open_new_terminal(a->terminal, 1);
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make sure the terminal will act fairly normal for us */
|
/* Make sure the terminal will act fairly normal for us */
|
||||||
set_term(0);
|
set_term(0);
|
||||||
@ -575,12 +584,15 @@ static pid_t run(const struct init_action *a)
|
|||||||
getpid(), a->terminal, cmdpath);
|
getpid(), a->terminal, cmdpath);
|
||||||
|
|
||||||
#if defined CONFIG_FEATURE_INIT_COREDUMPS
|
#if defined CONFIG_FEATURE_INIT_COREDUMPS
|
||||||
if (stat(CORE_ENABLE_FLAG_FILE, &sb) == 0) {
|
{
|
||||||
struct rlimit limit;
|
struct stat sb;
|
||||||
|
if (stat(CORE_ENABLE_FLAG_FILE, &sb) == 0) {
|
||||||
|
struct rlimit limit;
|
||||||
|
|
||||||
limit.rlim_cur = RLIM_INFINITY;
|
limit.rlim_cur = RLIM_INFINITY;
|
||||||
limit.rlim_max = RLIM_INFINITY;
|
limit.rlim_max = RLIM_INFINITY;
|
||||||
setrlimit(RLIMIT_CORE, &limit);
|
setrlimit(RLIMIT_CORE, &limit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -729,15 +741,7 @@ static void exec_signal(int sig ATTRIBUTE_UNUSED)
|
|||||||
close(2);
|
close(2);
|
||||||
|
|
||||||
/* Open the new terminal device */
|
/* Open the new terminal device */
|
||||||
if ((device_open(a->terminal, O_RDWR)) < 0) {
|
open_new_terminal(a->terminal, 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make sure the terminal will act fairly normal for us */
|
/* Make sure the terminal will act fairly normal for us */
|
||||||
set_term(0);
|
set_term(0);
|
||||||
|
Loading…
Reference in New Issue
Block a user