mirror of
https://github.com/sheumann/hush.git
synced 2025-01-13 21:31:51 +00:00
init: set stderr to NONBLOCK
*: s/setenv(a,b,1)/xsetenv(a,b)/ function old new delta init_main 856 895 +39 message 146 144 -2 crond_main 1418 1416 -2 run 661 658 -3 zcip_main 1409 1403 -6 edit_file 910 901 -9 environment 20 - -20
This commit is contained in:
parent
b61dc1c1ce
commit
b8d1a4cd5f
33
init/init.c
33
init/init.c
@ -77,14 +77,6 @@ enum {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *const environment[] = {
|
|
||||||
"HOME=/",
|
|
||||||
bb_PATH_root_path,
|
|
||||||
"SHELL=/bin/sh",
|
|
||||||
"USER=root",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Function prototypes */
|
/* Function prototypes */
|
||||||
static void halt_reboot_pwoff(int sig) NORETURN;
|
static void halt_reboot_pwoff(int sig) NORETURN;
|
||||||
|
|
||||||
@ -118,15 +110,16 @@ static void message(int where, const char *fmt, ...)
|
|||||||
{
|
{
|
||||||
static int log_fd = -1;
|
static int log_fd = -1;
|
||||||
va_list arguments;
|
va_list arguments;
|
||||||
int l;
|
unsigned l;
|
||||||
char msg[128];
|
char msg[128];
|
||||||
|
|
||||||
msg[0] = '\r';
|
msg[0] = '\r';
|
||||||
va_start(arguments, fmt);
|
va_start(arguments, fmt);
|
||||||
vsnprintf(msg + 1, sizeof(msg) - 2, fmt, arguments);
|
l = vsnprintf(msg + 1, sizeof(msg) - 2, fmt, arguments);
|
||||||
|
if (l > sizeof(msg) - 2)
|
||||||
|
l = sizeof(msg) - 2;
|
||||||
|
msg[l] = '\0';
|
||||||
va_end(arguments);
|
va_end(arguments);
|
||||||
msg[sizeof(msg) - 2] = '\0';
|
|
||||||
l = strlen(msg);
|
|
||||||
|
|
||||||
if (ENABLE_FEATURE_INIT_SYSLOG) {
|
if (ENABLE_FEATURE_INIT_SYSLOG) {
|
||||||
/* Log the message to syslogd */
|
/* Log the message to syslogd */
|
||||||
@ -213,6 +206,8 @@ static void console_init(void)
|
|||||||
/* Make sure fd 0,1,2 are not closed
|
/* Make sure fd 0,1,2 are not closed
|
||||||
* (so that they won't be used by future opens) */
|
* (so that they won't be used by future opens) */
|
||||||
bb_sanitize_stdio();
|
bb_sanitize_stdio();
|
||||||
|
/* Make sure init can't be blocked by writing to stderr */
|
||||||
|
fcntl(STDERR_FILENO, F_SETFL, fcntl(STDERR_FILENO, F_GETFL) | O_NONBLOCK);
|
||||||
}
|
}
|
||||||
|
|
||||||
s = getenv("TERM");
|
s = getenv("TERM");
|
||||||
@ -825,15 +820,15 @@ int init_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
set_sane_term();
|
set_sane_term();
|
||||||
xchdir("/");
|
xchdir("/");
|
||||||
setsid();
|
setsid();
|
||||||
{
|
|
||||||
const char *const *e;
|
/* Make sure environs is set to something sane */
|
||||||
/* Make sure environs is set to something sane */
|
putenv((char *) "HOME=/");
|
||||||
for (e = environment; *e; e++)
|
putenv((char *) bb_PATH_root_path);
|
||||||
putenv((char *) *e);
|
putenv((char *) "SHELL=/bin/sh");
|
||||||
}
|
putenv((char *) "USER=root"); /* needed? why? */
|
||||||
|
|
||||||
if (argv[1])
|
if (argv[1])
|
||||||
setenv("RUNLEVEL", argv[1], 1);
|
xsetenv("RUNLEVEL", argv[1]);
|
||||||
|
|
||||||
/* Hello world */
|
/* Hello world */
|
||||||
message(MAYBE_CONSOLE | L_LOG, "init started: %s", bb_banner);
|
message(MAYBE_CONSOLE | L_LOG, "init started: %s", bb_banner);
|
||||||
|
@ -187,7 +187,7 @@ int crond_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
|
|
||||||
xchdir(CDir);
|
xchdir(CDir);
|
||||||
//signal(SIGHUP, SIG_IGN); /* ? original crond dies on HUP... */
|
//signal(SIGHUP, SIG_IGN); /* ? original crond dies on HUP... */
|
||||||
setenv("SHELL", DEFAULT_SHELL, 1); /* once, for all future children */
|
xsetenv("SHELL", DEFAULT_SHELL); /* once, for all future children */
|
||||||
crondlog(LVL9 "crond (busybox "BB_VER") started, log level %d", LogLevel);
|
crondlog(LVL9 "crond (busybox "BB_VER") started, log level %d", LogLevel);
|
||||||
SynchronizeDir();
|
SynchronizeDir();
|
||||||
|
|
||||||
@ -275,8 +275,8 @@ static void SetEnv(struct passwd *pas)
|
|||||||
/* if we want to set user's shell instead: */
|
/* if we want to set user's shell instead: */
|
||||||
/*safe_setenv(env_var_user, "SHELL", pas->pw_shell, 5);*/
|
/*safe_setenv(env_var_user, "SHELL", pas->pw_shell, 5);*/
|
||||||
#else
|
#else
|
||||||
setenv("USER", pas->pw_name, 1);
|
xsetenv("USER", pas->pw_name);
|
||||||
setenv("HOME", pas->pw_dir, 1);
|
xsetenv("HOME", pas->pw_dir);
|
||||||
#endif
|
#endif
|
||||||
/* currently, we use constant one: */
|
/* currently, we use constant one: */
|
||||||
/*setenv("SHELL", DEFAULT_SHELL, 1); - done earlier */
|
/*setenv("SHELL", DEFAULT_SHELL, 1); - done earlier */
|
||||||
|
@ -21,9 +21,9 @@
|
|||||||
|
|
||||||
static void change_user(const struct passwd *pas)
|
static void change_user(const struct passwd *pas)
|
||||||
{
|
{
|
||||||
setenv("USER", pas->pw_name, 1);
|
xsetenv("USER", pas->pw_name);
|
||||||
setenv("HOME", pas->pw_dir, 1);
|
xsetenv("HOME", pas->pw_dir);
|
||||||
setenv("SHELL", DEFAULT_SHELL, 1);
|
xsetenv("SHELL", DEFAULT_SHELL);
|
||||||
|
|
||||||
/* initgroups, setgid, setuid */
|
/* initgroups, setgid, setuid */
|
||||||
change_identity(pas);
|
change_identity(pas);
|
||||||
|
@ -144,7 +144,7 @@ static int run(char *argv[3], struct in_addr *ip)
|
|||||||
|
|
||||||
if (ip) {
|
if (ip) {
|
||||||
addr = inet_ntoa(*ip);
|
addr = inet_ntoa(*ip);
|
||||||
setenv("ip", addr, 1);
|
xsetenv("ip", addr);
|
||||||
fmt -= 3;
|
fmt -= 3;
|
||||||
}
|
}
|
||||||
bb_info_msg(fmt, argv[1], intf, addr);
|
bb_info_msg(fmt, argv[1], intf, addr);
|
||||||
@ -238,7 +238,7 @@ int zcip_main(int argc, char **argv)
|
|||||||
|
|
||||||
intf = argv[0];
|
intf = argv[0];
|
||||||
script_av[0] = argv[1];
|
script_av[0] = argv[1];
|
||||||
setenv("interface", intf, 1);
|
xsetenv("interface", intf);
|
||||||
|
|
||||||
// initialize the interface (modprobe, ifup, etc)
|
// initialize the interface (modprobe, ifup, etc)
|
||||||
script_av[1] = (char*)"init";
|
script_av[1] = (char*)"init";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user