runsvd: shrink by Vladimir
*: use unified trivial signal handler function old new delta record_signo - 10 +10 process_stdin 433 443 +10 bbunpack 383 391 +8 wc_main 598 605 +7 conescape 293 296 +3 nmeter_main 670 672 +2 fallbackSort 1717 1719 +2 bb_got_signal - 1 +1 microcom_main 713 712 -1 signalled 2 - -2 pack_gzip 1661 1659 -2 evalvar 1376 1374 -2 compare_keys 737 735 -2 parse_command 1460 1456 -4 expand 1748 1744 -4 s_term 37 29 -8 s_hangup 8 - -8 fgotsig 10 - -10 find_pair 187 169 -18 signal_handler 190 170 -20 runsvdir_main 1701 1583 -118 ------------------------------------------------------------------------------ (add/remove: 2/3 grow/shrink: 6/10 up/down: 43/-199) Total: -156 bytes
This commit is contained in:
@@ -52,7 +52,6 @@ struct globals {
|
||||
struct pollfd pfd[1];
|
||||
unsigned stamplog;
|
||||
smallint check; /* = 1; */
|
||||
smallint exitsoon;
|
||||
smallint set_pgrp;
|
||||
};
|
||||
#define G (*(struct globals*)&bb_common_bufsiz1)
|
||||
@@ -65,7 +64,6 @@ struct globals {
|
||||
#define pfd (G.pfd )
|
||||
#define stamplog (G.stamplog )
|
||||
#define check (G.check )
|
||||
#define exitsoon (G.exitsoon )
|
||||
#define set_pgrp (G.set_pgrp )
|
||||
#define INIT_G() do { \
|
||||
check = 1; \
|
||||
@@ -89,15 +87,6 @@ static void warnx(const char *m1)
|
||||
warn3x(m1, "", "");
|
||||
}
|
||||
|
||||
static void s_term(int sig_no UNUSED_PARAM)
|
||||
{
|
||||
exitsoon = 1;
|
||||
}
|
||||
static void s_hangup(int sig_no UNUSED_PARAM)
|
||||
{
|
||||
exitsoon = 2;
|
||||
}
|
||||
|
||||
static void runsv(int no, const char *name)
|
||||
{
|
||||
pid_t pid;
|
||||
@@ -246,20 +235,11 @@ int runsvdir_main(int argc UNUSED_PARAM, char **argv)
|
||||
|
||||
INIT_G();
|
||||
|
||||
argv++;
|
||||
if (!*argv)
|
||||
bb_show_usage();
|
||||
if (argv[0][0] == '-') {
|
||||
switch (argv[0][1]) {
|
||||
case 'P': set_pgrp = 1;
|
||||
case '-': ++argv;
|
||||
}
|
||||
if (!*argv)
|
||||
bb_show_usage();
|
||||
}
|
||||
opt_complementary = "-1";
|
||||
set_pgrp = getopt32(argv, "P");
|
||||
argv += optind;
|
||||
|
||||
bb_signals_recursive(1 << SIGTERM, s_term);
|
||||
bb_signals_recursive(1 << SIGHUP, s_hangup);
|
||||
bb_signals_recursive((1 << SIGTERM) | (1 << SIGHUP), record_signo);
|
||||
svdir = *argv++;
|
||||
if (argv && *argv) {
|
||||
rplog = *argv;
|
||||
@@ -346,14 +326,14 @@ int runsvdir_main(int argc UNUSED_PARAM, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
switch (exitsoon) {
|
||||
case 1:
|
||||
_exit(EXIT_SUCCESS);
|
||||
case 2:
|
||||
switch (bb_got_signal) {
|
||||
case SIGHUP:
|
||||
for (i = 0; i < svnum; i++)
|
||||
if (sv[i].pid)
|
||||
kill(sv[i].pid, SIGTERM);
|
||||
_exit(111);
|
||||
// N.B. fall through
|
||||
case SIGTERM:
|
||||
_exit((SIGHUP == bb_got_signal) ? 111 : EXIT_SUCCESS);
|
||||
}
|
||||
}
|
||||
/* not reached */
|
||||
|
Reference in New Issue
Block a user