*: 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:
Denis Vlasenko 2008-11-09 00:15:11 +00:00
parent 73cc54388d
commit 3fa36e2350
8 changed files with 24 additions and 23 deletions

View File

@ -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)

View File

@ -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).

View File

@ -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);
} }

View File

@ -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? */

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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);
} }