*: a bit of code shrink
function old new delta stop_handler 41 38 -3 sulogin_main 508 504 -4 got_cont 4 - -4 cont_handler 11 - -11 startservice 309 297 -12 processorstart 423 409 -14 tcpudpsvd_main 1861 1843 -18 ------------------------------------------------------------------------------ (add/remove: 0/2 grow/shrink: 0/5 up/down: 0/-66) Total: -66 bytes
This commit is contained in:
parent
73cc54388d
commit
3fa36e2350
16
init/init.c
16
init/init.c
@ -60,7 +60,6 @@ struct init_action {
|
|||||||
static struct init_action *init_action_list = NULL;
|
static struct init_action *init_action_list = NULL;
|
||||||
|
|
||||||
static const char *log_console = VC_5;
|
static const char *log_console = VC_5;
|
||||||
static sig_atomic_t got_cont = 0;
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
L_LOG = 0x1,
|
L_LOG = 0x1,
|
||||||
@ -613,24 +612,21 @@ static void ctrlaltdel_signal(int sig UNUSED_PARAM)
|
|||||||
run_actions(CTRLALTDEL);
|
run_actions(CTRLALTDEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The SIGCONT handler is set to record_signo().
|
||||||
|
* It just sets bb_got_signal = SIGCONT. */
|
||||||
|
|
||||||
/* The SIGSTOP & SIGTSTP handler */
|
/* The SIGSTOP & SIGTSTP handler */
|
||||||
static void stop_handler(int sig UNUSED_PARAM)
|
static void stop_handler(int sig UNUSED_PARAM)
|
||||||
{
|
{
|
||||||
int saved_errno = errno;
|
int saved_errno = errno;
|
||||||
|
|
||||||
got_cont = 0;
|
bb_got_signal = 0;
|
||||||
while (!got_cont)
|
while (bb_got_signal == 0)
|
||||||
pause();
|
pause();
|
||||||
|
|
||||||
errno = saved_errno;
|
errno = saved_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The SIGCONT handler */
|
|
||||||
static void cont_handler(int sig UNUSED_PARAM)
|
|
||||||
{
|
|
||||||
got_cont = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void new_init_action(uint8_t action_type, const char *command, const char *cons)
|
static void new_init_action(uint8_t action_type, const char *command, const char *cons)
|
||||||
{
|
{
|
||||||
struct init_action *a, *last;
|
struct init_action *a, *last;
|
||||||
@ -808,7 +804,7 @@ int init_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
+ (1 << SIGTERM) /* reboot */
|
+ (1 << SIGTERM) /* reboot */
|
||||||
, halt_reboot_pwoff);
|
, halt_reboot_pwoff);
|
||||||
signal(SIGINT, ctrlaltdel_signal);
|
signal(SIGINT, ctrlaltdel_signal);
|
||||||
signal(SIGCONT, cont_handler);
|
signal(SIGCONT, record_signo);
|
||||||
bb_signals(0
|
bb_signals(0
|
||||||
+ (1 << SIGSTOP)
|
+ (1 << SIGSTOP)
|
||||||
+ (1 << SIGTSTP)
|
+ (1 << SIGTSTP)
|
||||||
|
@ -486,8 +486,8 @@ int login_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
// If this stuff is really needed, add it and explain why!
|
// If this stuff is really needed, add it and explain why!
|
||||||
|
|
||||||
/* Set signals to defaults */
|
/* Set signals to defaults */
|
||||||
/*signal(SIGALRM, SIG_DFL); - not needed, we already set it
|
/* Non-ignored signals revert to SIG_DFL on exec anyway */
|
||||||
* to non-SIG_IGN, and on exec such signals are reset to SIG_DFL */
|
/*signal(SIGALRM, SIG_DFL);*/
|
||||||
|
|
||||||
/* Is this correct? This way user can ctrl-c out of /etc/profile,
|
/* Is this correct? This way user can ctrl-c out of /etc/profile,
|
||||||
* potentially creating security breach (tested with bash 3.0).
|
* potentially creating security breach (tested with bash 3.0).
|
||||||
|
@ -32,11 +32,12 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
|
|
||||||
opt_complementary = "t+"; /* -t N */
|
opt_complementary = "t+"; /* -t N */
|
||||||
getopt32(argv, "t:", &timeout);
|
getopt32(argv, "t:", &timeout);
|
||||||
|
argv += optind;
|
||||||
|
|
||||||
if (argv[optind]) {
|
if (argv[0]) {
|
||||||
close(0);
|
close(0);
|
||||||
close(1);
|
close(1);
|
||||||
dup(xopen(argv[optind], O_RDWR));
|
dup(xopen(argv[0], O_RDWR));
|
||||||
close(2);
|
close(2);
|
||||||
dup(0);
|
dup(0);
|
||||||
}
|
}
|
||||||
|
@ -131,7 +131,8 @@ int nc_main(int argc, char **argv)
|
|||||||
|
|
||||||
if (wsecs) {
|
if (wsecs) {
|
||||||
alarm(0);
|
alarm(0);
|
||||||
signal(SIGALRM, SIG_DFL);
|
/* Non-ignored siganls revert to SIG_DFL on exec anyway */
|
||||||
|
/*signal(SIGALRM, SIG_DFL);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -e given? */
|
/* -e given? */
|
||||||
|
@ -497,9 +497,9 @@ int tcpudpsvd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
|
|
||||||
xdup2(0, 1);
|
xdup2(0, 1);
|
||||||
|
|
||||||
signal(SIGTERM, SIG_DFL);
|
signal(SIGPIPE, SIG_DFL); /* this one was SIG_IGNed */
|
||||||
signal(SIGPIPE, SIG_DFL);
|
/* Non-ignored signals revert to SIG_DFL on exec anyway */
|
||||||
signal(SIGCHLD, SIG_DFL);
|
/*signal(SIGCHLD, SIG_DFL);*/
|
||||||
sig_unblock(SIGCHLD);
|
sig_unblock(SIGCHLD);
|
||||||
|
|
||||||
#ifdef SSLSVD
|
#ifdef SSLSVD
|
||||||
|
@ -336,10 +336,11 @@ static void startservice(struct svdir *s)
|
|||||||
xdup2(logpipe.wr, 1);
|
xdup2(logpipe.wr, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bb_signals(0
|
/* Non-ignored signals revert to SIG_DFL on exec anyway */
|
||||||
|
/*bb_signals(0
|
||||||
+ (1 << SIGCHLD)
|
+ (1 << SIGCHLD)
|
||||||
+ (1 << SIGTERM)
|
+ (1 << SIGTERM)
|
||||||
, SIG_DFL);
|
, SIG_DFL);*/
|
||||||
sig_unblock(SIGCHLD);
|
sig_unblock(SIGCHLD);
|
||||||
sig_unblock(SIGTERM);
|
sig_unblock(SIGTERM);
|
||||||
execvp(*run, run);
|
execvp(*run, run);
|
||||||
|
@ -227,11 +227,12 @@ static void processorstart(struct logdir *ld)
|
|||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
/* child */
|
/* child */
|
||||||
bb_signals(0
|
/* Non-ignored signals revert to SIG_DFL on exec anyway */
|
||||||
|
/*bb_signals(0
|
||||||
+ (1 << SIGTERM)
|
+ (1 << SIGTERM)
|
||||||
+ (1 << SIGALRM)
|
+ (1 << SIGALRM)
|
||||||
+ (1 << SIGHUP)
|
+ (1 << SIGHUP)
|
||||||
, SIG_DFL);
|
, SIG_DFL);*/
|
||||||
sig_unblock(SIGTERM);
|
sig_unblock(SIGTERM);
|
||||||
sig_unblock(SIGALRM);
|
sig_unblock(SIGALRM);
|
||||||
sig_unblock(SIGHUP);
|
sig_unblock(SIGHUP);
|
||||||
|
@ -179,7 +179,8 @@ int script_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
setsid();
|
setsid();
|
||||||
ioctl(0, TIOCSCTTY, 0 /* 0: don't forcibly steal */);
|
ioctl(0, TIOCSCTTY, 0 /* 0: don't forcibly steal */);
|
||||||
|
|
||||||
/* signal(SIGCHLD, SIG_DFL); - exec does this for us */
|
/* Non-ignored signals revert to SIG_DFL on exec anyway */
|
||||||
|
/*signal(SIGCHLD, SIG_DFL);*/
|
||||||
execl(shell, shell, shell_opt, shell_arg, NULL);
|
execl(shell, shell, shell_opt, shell_arg, NULL);
|
||||||
bb_simple_perror_msg_and_die(shell);
|
bb_simple_perror_msg_and_die(shell);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user