summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
Diffstat (limited to 'init')
-rw-r--r--init/init.c104
1 files changed, 52 insertions, 52 deletions
diff --git a/init/init.c b/init/init.c
index 76368fb..b488f64 100644
--- a/init/init.c
+++ b/init/init.c
@@ -10,7 +10,6 @@
*/
#include "busybox.h"
-#include <errno.h>
#include <paths.h>
#include <signal.h>
#include <sys/ioctl.h>
@@ -119,7 +118,7 @@ struct init_action {
/* Static variables */
static struct init_action *init_action_list = NULL;
-static char console[CONSOLE_BUFF_SIZE] = CONSOLE_DEV;
+static char console_name[CONSOLE_BUFF_SIZE] = DEV_CONSOLE;
#if !ENABLE_SYSLOGD
static const char *log_console = VC_5;
@@ -129,13 +128,13 @@ static sig_atomic_t got_cont = 0;
#endif
enum {
- LOG = 0x1,
- CONSOLE = 0x2,
+ L_LOG = 0x1,
+ L_CONSOLE = 0x2,
#if ENABLE_FEATURE_EXTRA_QUIET
MAYBE_CONSOLE = 0x0,
#else
- MAYBE_CONSOLE = CONSOLE,
+ MAYBE_CONSOLE = L_CONSOLE,
#endif
#ifndef RB_HALT_SYSTEM
@@ -171,7 +170,7 @@ static void loop_forever(void)
#endif
/* Print a message to the specified device.
- * Device may be bitwise-or'd from LOG | CONSOLE */
+ * Device may be bitwise-or'd from L_LOG | L_CONSOLE */
#if ENABLE_DEBUG_INIT
#define messageD message
#else
@@ -191,11 +190,11 @@ static void message(int device, const char *fmt, ...)
msg[0] = '\r';
va_start(arguments, fmt);
l = vsnprintf(msg + 1, 1024 - 2, fmt, arguments) + 1;
- va_end(arguments);
+ va_end(arguments);
#if ENABLE_SYSLOGD
/* Log the message to syslogd */
- if (device & LOG) {
+ if (device & L_LOG) {
/* don`t out "\r\n" */
openlog(applet_name, 0, LOG_DAEMON);
syslog(LOG_INFO, "%s", msg + 1);
@@ -211,21 +210,22 @@ static void message(int device, const char *fmt, ...)
/* Take full control of the log tty, and never close it.
* It's mine, all mine! Muhahahaha! */
if (log_fd < 0) {
- if ((log_fd = device_open(log_console, O_RDWR | O_NONBLOCK | O_NOCTTY)) < 0) {
+ log_fd = device_open(log_console, O_WRONLY | O_NONBLOCK | O_NOCTTY);
+ if (log_fd < 0) {
log_fd = -2;
- bb_error_msg("bummer, can't write to log on %s!", log_console);
- device = CONSOLE;
+ bb_error_msg("bummer, can't log to %s!", log_console);
+ device = L_CONSOLE;
} else {
fcntl(log_fd, F_SETFD, FD_CLOEXEC);
}
}
- if ((device & LOG) && (log_fd >= 0)) {
+ if (device & L_LOG) {
full_write(log_fd, msg, l);
}
#endif
- if (device & CONSOLE) {
- int fd = device_open(CONSOLE_DEV,
+ if (device & L_CONSOLE) {
+ int fd = device_open(DEV_CONSOLE,
O_WRONLY | O_NOCTTY | O_NONBLOCK);
/* Always send console messages to /dev/console so people will see them. */
if (fd >= 0) {
@@ -291,26 +291,25 @@ static void console_init(void)
char *s;
if ((s = getenv("CONSOLE")) != NULL || (s = getenv("console")) != NULL) {
- safe_strncpy(console, s, sizeof(console));
+ safe_strncpy(console_name, s, sizeof(console_name));
} else {
/* 2.2 kernels: identify the real console backend and try to use it */
if (ioctl(0, TIOCGSERIAL, &sr) == 0) {
/* this is a serial console */
- snprintf(console, sizeof(console) - 1, SC_FORMAT, sr.line);
+ snprintf(console_name, sizeof(console_name) - 1, SC_FORMAT, sr.line);
} else if (ioctl(0, VT_GETSTATE, &vt) == 0) {
/* this is linux virtual tty */
- snprintf(console, sizeof(console) - 1, VC_FORMAT, vt.v_active);
+ snprintf(console_name, sizeof(console_name) - 1, VC_FORMAT, vt.v_active);
} else {
- safe_strncpy(console, CONSOLE_DEV, sizeof(console));
+ strcpy(console_name, DEV_CONSOLE);
tried++;
}
}
- while ((fd = open(console, O_RDONLY | O_NONBLOCK)) < 0 && tried < 2) {
+ while ((fd = open(console_name, O_RDONLY | O_NONBLOCK)) < 0 && tried < 2) {
/* Can't open selected console -- try
logical system console and VT_MASTER */
- safe_strncpy(console, (tried == 0 ? CONSOLE_DEV : CURRENT_VC),
- sizeof(console));
+ strcpy(console_name, (tried == 0 ? DEV_CONSOLE : CURRENT_VC));
tried++;
}
if (fd < 0) {
@@ -318,7 +317,7 @@ static void console_init(void)
#if !ENABLE_SYSLOGD
log_console =
#endif
- safe_strncpy(console, bb_dev_null, sizeof(console));
+ strcpy(console_name, bb_dev_null);
} else {
s = getenv("TERM");
/* check for serial console */
@@ -328,7 +327,7 @@ static void console_init(void)
if (s == NULL || strcmp(s, "linux") == 0)
putenv((char*)"TERM=vt102");
#if !ENABLE_SYSLOGD
- log_console = console;
+ log_console = console_name;
#endif
} else {
if (s == NULL)
@@ -336,7 +335,7 @@ static void console_init(void)
}
close(fd);
}
- messageD(LOG, "console=%s", console);
+ messageD(L_LOG, "console=%s", console_name);
}
static void fixup_argv(int argc, char **argv, const char *new_argv0)
@@ -356,14 +355,14 @@ static void fixup_argv(int argc, char **argv, const char *new_argv0)
}
/* Open the new terminal device */
-static void open_new_terminal(const char * const device, const int fail) {
+static void open_new_terminal(const char* device, int 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);
+ message(L_LOG | L_CONSOLE, "device '%s' does not exist", device);
} else {
- message(LOG | CONSOLE, "Bummer, can't open %s", device);
+ message(L_LOG | L_CONSOLE, "Bummer, can't open %s", device);
}
if (fail)
_exit(1);
@@ -434,7 +433,7 @@ static pid_t run(const struct init_action *a)
/* Now fork off another process to just hang around */
if ((pid = fork()) < 0) {
- message(LOG | CONSOLE, "Can't fork!");
+ message(L_LOG | L_CONSOLE, "Can't fork!");
_exit(1);
}
@@ -453,7 +452,7 @@ static pid_t run(const struct init_action *a)
/* Use a temporary process to steal the controlling tty. */
if ((pid = fork()) < 0) {
- message(LOG | CONSOLE, "Can't fork!");
+ message(L_LOG | L_CONSOLE, "Can't fork!");
_exit(1);
}
if (pid == 0) {
@@ -506,7 +505,7 @@ static pid_t run(const struct init_action *a)
/* make a new argv[0] */
if ((cmd[0] = malloc(strlen(s) + 2)) == NULL) {
- message(LOG | CONSOLE, bb_msg_memory_exhausted);
+ message(L_LOG | L_CONSOLE, bb_msg_memory_exhausted);
cmd[0] = cmdpath;
} else {
cmd[0][0] = '-';
@@ -532,7 +531,7 @@ static pid_t run(const struct init_action *a)
* be allowed to start a shell or whatever an init script
* specifies.
*/
- messageD(LOG, "Waiting for enter to start '%s'"
+ messageD(L_LOG, "Waiting for enter to start '%s'"
"(pid %d, terminal %s)\n",
cmdpath, getpid(), a->terminal);
full_write(1, press_enter, sizeof(press_enter) - 1);
@@ -542,7 +541,7 @@ static pid_t run(const struct init_action *a)
#endif
/* Log the process name and args */
- message(LOG, "Starting pid %d, console %s: '%s'",
+ message(L_LOG, "Starting pid %d, console %s: '%s'",
getpid(), a->terminal, cmdpath);
#if ENABLE_FEATURE_INIT_COREDUMPS
@@ -563,7 +562,7 @@ static pid_t run(const struct init_action *a)
BB_EXECVP(cmdpath, cmd);
/* We're still here? Some error happened. */
- message(LOG | CONSOLE, "Bummer, cannot run '%s': %m", cmdpath);
+ message(L_LOG | L_CONSOLE, "Bummer, cannot run '%s': %m", cmdpath);
_exit(-1);
}
sigprocmask(SIG_SETMASK, &omask, NULL);
@@ -658,16 +657,16 @@ static void shutdown_system(void)
/* Allow Ctrl-Alt-Del to reboot system. */
init_reboot(RB_ENABLE_CAD);
- message(CONSOLE | LOG, "The system is going down NOW !!");
+ message(L_CONSOLE | L_LOG, "The system is going down NOW !!");
sync();
/* Send signals to every process _except_ pid 1 */
- message(CONSOLE | LOG, init_sending_format, "TERM");
+ message(L_CONSOLE | L_LOG, init_sending_format, "TERM");
kill(-1, SIGTERM);
sleep(1);
sync();
- message(CONSOLE | LOG, init_sending_format, "KILL");
+ message(L_CONSOLE | L_LOG, init_sending_format, "KILL");
kill(-1, SIGKILL);
sleep(1);
@@ -712,10 +711,10 @@ static void exec_signal(int sig ATTRIBUTE_UNUSED)
dup(0);
dup(0);
- messageD(CONSOLE | LOG, "Trying to re-exec %s", a->command);
+ messageD(L_CONSOLE | L_LOG, "Trying to re-exec %s", a->command);
BB_EXECLP(a->command, a->command, NULL);
- message(CONSOLE | LOG, "exec of '%s' failed: %m",
+ message(L_CONSOLE | L_LOG, "exec of '%s' failed: %m",
a->command);
sync();
sleep(2);
@@ -741,7 +740,7 @@ static void shutdown_signal(int sig)
m = "poweroff";
rb = RB_POWER_OFF;
}
- message(CONSOLE | LOG, "Requesting system %s.", m);
+ message(L_CONSOLE | L_LOG, "Requesting system %s", m);
sync();
/* allow time for last message to reach serial console */
@@ -781,7 +780,7 @@ static void new_init_action(int action, const char *command, const char *cons)
struct init_action *new_action, *a, *last;
if (*cons == '\0')
- cons = console;
+ cons = console_name;
if (strcmp(cons, bb_dev_null) == 0 && (action & ASKFIRST))
return;
@@ -792,8 +791,9 @@ static void new_init_action(int action, const char *command, const char *cons)
for (a = last = init_action_list; a; a = a->next) {
/* don't enter action if it's already in the list,
* but do overwrite existing actions */
- if ((strcmp(a->command, command) == 0) &&
- (strcmp(a->terminal, cons) == 0)) {
+ if ((strcmp(a->command, command) == 0)
+ && (strcmp(a->terminal, cons) == 0)
+ ) {
a->action = action;
free(new_action);
return;
@@ -808,7 +808,7 @@ static void new_init_action(int action, const char *command, const char *cons)
strcpy(new_action->command, command);
new_action->action = action;
strcpy(new_action->terminal, cons);
- messageD(LOG|CONSOLE, "command='%s' action='%d' terminal='%s'\n",
+ messageD(L_LOG | L_CONSOLE, "command='%s' action='%d' terminal='%s'\n",
new_action->command, new_action->action, new_action->terminal);
}
@@ -890,7 +890,7 @@ static void parse_inittab(void)
/* Separate the ID field from the runlevels */
runlev = strchr(id, ':');
if (runlev == NULL || *(runlev + 1) == '\0') {
- message(LOG | CONSOLE, "Bad inittab entry: %s", lineAsRead);
+ message(L_LOG | L_CONSOLE, "Bad inittab entry: %s", lineAsRead);
continue;
} else {
*runlev = '\0';
@@ -900,7 +900,7 @@ static void parse_inittab(void)
/* Separate the runlevels from the action */
action = strchr(runlev, ':');
if (action == NULL || *(action + 1) == '\0') {
- message(LOG | CONSOLE, "Bad inittab entry: %s", lineAsRead);
+ message(L_LOG | L_CONSOLE, "Bad inittab entry: %s", lineAsRead);
continue;
} else {
*action = '\0';
@@ -910,7 +910,7 @@ static void parse_inittab(void)
/* Separate the action from the command */
command = strchr(action, ':');
if (command == NULL || *(command + 1) == '\0') {
- message(LOG | CONSOLE, "Bad inittab entry: %s", lineAsRead);
+ message(L_LOG | L_CONSOLE, "Bad inittab entry: %s", lineAsRead);
continue;
} else {
*command = '\0';
@@ -934,7 +934,7 @@ static void parse_inittab(void)
}
if (a->name == 0) {
/* Choke on an unknown action */
- message(LOG | CONSOLE, "Bad inittab entry: %s", lineAsRead);
+ message(L_LOG | L_CONSOLE, "Bad inittab entry: %s", lineAsRead);
}
}
fclose(file);
@@ -947,7 +947,7 @@ static void reload_signal(int sig ATTRIBUTE_UNUSED)
{
struct init_action *a, *tmp;
- message(LOG, "Reloading /etc/inittab");
+ message(L_LOG, "Reloading /etc/inittab");
/* disable old entrys */
for (a = init_action_list; a; a = a->next ) {
@@ -1012,7 +1012,7 @@ int init_main(int argc, char **argv)
close(1);
close(2);
- if (device_open(console, O_RDWR | O_NOCTTY) == 0) {
+ if (device_open(console_name, O_RDWR | O_NOCTTY) == 0) {
set_term();
close(0);
}
@@ -1029,7 +1029,7 @@ int init_main(int argc, char **argv)
if (argc > 1) setenv("RUNLEVEL", argv[1], 1);
/* Hello world */
- message(MAYBE_CONSOLE | LOG, "init started: %s", bb_msg_full_version);
+ message(MAYBE_CONSOLE | L_LOG, "init started: %s", bb_msg_full_version);
/* Make sure there is enough memory to do something useful. */
if (ENABLE_SWAPONOFF) {
@@ -1038,7 +1038,7 @@ int init_main(int argc, char **argv)
if (!sysinfo(&info) &&
(info.mem_unit ? : 1) * (long long)info.totalram < 1024*1024)
{
- message(CONSOLE,"Low memory: forcing swapon.");
+ message(L_CONSOLE, "Low memory: forcing swapon.");
/* swapon -a requires /proc typically */
new_init_action(SYSINIT, "mount -t proc proc /proc", "");
/* Try to turn on swap */
@@ -1121,7 +1121,7 @@ int init_main(int argc, char **argv)
/* Set the pid to 0 so that the process gets
* restarted by run_actions() */
a->pid = 0;
- message(LOG, "Process '%s' (pid %d) exited. "
+ message(L_LOG, "Process '%s' (pid %d) exited. "
"Scheduling it for restart.",
a->command, wpid);
}