*: 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:
		
							
								
								
									
										16
									
								
								init/init.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								init/init.c
									
									
									
									
									
								
							@@ -60,7 +60,6 @@ struct init_action {
 | 
			
		||||
static struct init_action *init_action_list = NULL;
 | 
			
		||||
 | 
			
		||||
static const char *log_console = VC_5;
 | 
			
		||||
static sig_atomic_t got_cont = 0;
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	L_LOG = 0x1,
 | 
			
		||||
@@ -613,24 +612,21 @@ static void ctrlaltdel_signal(int sig UNUSED_PARAM)
 | 
			
		||||
	run_actions(CTRLALTDEL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* The SIGCONT handler is set to record_signo().
 | 
			
		||||
 * It just sets bb_got_signal = SIGCONT.  */
 | 
			
		||||
 | 
			
		||||
/* The SIGSTOP & SIGTSTP handler */
 | 
			
		||||
static void stop_handler(int sig UNUSED_PARAM)
 | 
			
		||||
{
 | 
			
		||||
	int saved_errno = errno;
 | 
			
		||||
 | 
			
		||||
	got_cont = 0;
 | 
			
		||||
	while (!got_cont)
 | 
			
		||||
	bb_got_signal = 0;
 | 
			
		||||
	while (bb_got_signal == 0)
 | 
			
		||||
		pause();
 | 
			
		||||
 | 
			
		||||
	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)
 | 
			
		||||
{
 | 
			
		||||
	struct init_action *a, *last;
 | 
			
		||||
@@ -808,7 +804,7 @@ int init_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
			+ (1 << SIGTERM)  /* reboot */
 | 
			
		||||
			, halt_reboot_pwoff);
 | 
			
		||||
		signal(SIGINT, ctrlaltdel_signal);
 | 
			
		||||
		signal(SIGCONT, cont_handler);
 | 
			
		||||
		signal(SIGCONT, record_signo);
 | 
			
		||||
		bb_signals(0
 | 
			
		||||
			+ (1 << SIGSTOP)
 | 
			
		||||
			+ (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!
 | 
			
		||||
 | 
			
		||||
	/* Set signals to defaults */
 | 
			
		||||
	/*signal(SIGALRM, SIG_DFL); - not needed, we already set it
 | 
			
		||||
	 * to non-SIG_IGN, and on exec such signals are reset to SIG_DFL */
 | 
			
		||||
	/* Non-ignored signals revert to SIG_DFL on exec anyway */
 | 
			
		||||
	/*signal(SIGALRM, SIG_DFL);*/
 | 
			
		||||
 | 
			
		||||
	/* Is this correct? This way user can ctrl-c out of /etc/profile,
 | 
			
		||||
	 * 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 */
 | 
			
		||||
	getopt32(argv, "t:", &timeout);
 | 
			
		||||
	argv += optind;
 | 
			
		||||
 | 
			
		||||
	if (argv[optind]) {
 | 
			
		||||
	if (argv[0]) {
 | 
			
		||||
		close(0);
 | 
			
		||||
		close(1);
 | 
			
		||||
		dup(xopen(argv[optind], O_RDWR));
 | 
			
		||||
		dup(xopen(argv[0], O_RDWR));
 | 
			
		||||
		close(2);
 | 
			
		||||
		dup(0);
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -131,7 +131,8 @@ int nc_main(int argc, char **argv)
 | 
			
		||||
 | 
			
		||||
	if (wsecs) {
 | 
			
		||||
		alarm(0);
 | 
			
		||||
		signal(SIGALRM, SIG_DFL);
 | 
			
		||||
		/* Non-ignored siganls revert to SIG_DFL on exec anyway */
 | 
			
		||||
		/*signal(SIGALRM, SIG_DFL);*/
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* -e given? */
 | 
			
		||||
 
 | 
			
		||||
@@ -497,9 +497,9 @@ int tcpudpsvd_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
 | 
			
		||||
	xdup2(0, 1);
 | 
			
		||||
 | 
			
		||||
	signal(SIGTERM, SIG_DFL);
 | 
			
		||||
	signal(SIGPIPE, SIG_DFL);
 | 
			
		||||
	signal(SIGCHLD, SIG_DFL);
 | 
			
		||||
	signal(SIGPIPE, SIG_DFL); /* this one was SIG_IGNed */
 | 
			
		||||
	/* Non-ignored signals revert to SIG_DFL on exec anyway */
 | 
			
		||||
	/*signal(SIGCHLD, SIG_DFL);*/
 | 
			
		||||
	sig_unblock(SIGCHLD);
 | 
			
		||||
 | 
			
		||||
#ifdef SSLSVD
 | 
			
		||||
 
 | 
			
		||||
@@ -336,10 +336,11 @@ static void startservice(struct svdir *s)
 | 
			
		||||
				xdup2(logpipe.wr, 1);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		bb_signals(0
 | 
			
		||||
		/* Non-ignored signals revert to SIG_DFL on exec anyway */
 | 
			
		||||
		/*bb_signals(0
 | 
			
		||||
			+ (1 << SIGCHLD)
 | 
			
		||||
			+ (1 << SIGTERM)
 | 
			
		||||
			, SIG_DFL);
 | 
			
		||||
			, SIG_DFL);*/
 | 
			
		||||
		sig_unblock(SIGCHLD);
 | 
			
		||||
		sig_unblock(SIGTERM);
 | 
			
		||||
		execvp(*run, run);
 | 
			
		||||
 
 | 
			
		||||
@@ -227,11 +227,12 @@ static void processorstart(struct logdir *ld)
 | 
			
		||||
		int fd;
 | 
			
		||||
 | 
			
		||||
		/* child */
 | 
			
		||||
		bb_signals(0
 | 
			
		||||
		/* Non-ignored signals revert to SIG_DFL on exec anyway */
 | 
			
		||||
		/*bb_signals(0
 | 
			
		||||
			+ (1 << SIGTERM)
 | 
			
		||||
			+ (1 << SIGALRM)
 | 
			
		||||
			+ (1 << SIGHUP)
 | 
			
		||||
			, SIG_DFL);
 | 
			
		||||
			, SIG_DFL);*/
 | 
			
		||||
		sig_unblock(SIGTERM);
 | 
			
		||||
		sig_unblock(SIGALRM);
 | 
			
		||||
		sig_unblock(SIGHUP);
 | 
			
		||||
 
 | 
			
		||||
@@ -179,7 +179,8 @@ int script_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
	setsid();
 | 
			
		||||
	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);
 | 
			
		||||
	bb_simple_perror_msg_and_die(shell);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user