- 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..
diff --git a/init/init.c b/init/init.c
index ec3c4d7..d800480 100644
--- a/init/init.c
+++ b/init/init.c
@@ -386,6 +386,23 @@
}
}
+/* 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 @@
sigprocmask(SIG_BLOCK, &nmask, &omask);
if ((pid = fork()) == 0) {
- struct stat sb;
/* Clean up */
close(0);
@@ -429,14 +445,7 @@
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,12 +584,15 @@
getpid(), a->terminal, cmdpath);
#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_max = RLIM_INFINITY;
- setrlimit(RLIMIT_CORE, &limit);
+ limit.rlim_cur = RLIM_INFINITY;
+ limit.rlim_max = RLIM_INFINITY;
+ setrlimit(RLIMIT_CORE, &limit);
+ }
}
#endif
@@ -729,15 +741,7 @@
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);