aboutsummaryrefslogtreecommitdiff
path: root/networking
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-03-12 23:19:35 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-03-12 23:19:35 +0000
commit8e2cfec1cdf34068f2378aae9fe8f5ec0f821e21 (patch)
treecf328e6b8bbdc608228da528f661124e364edb85 /networking
parent4cf1d08fc2e50f9abda999d468c5e972ff4995c2 (diff)
downloadbusybox-w32-8e2cfec1cdf34068f2378aae9fe8f5ec0f821e21.tar.gz
busybox-w32-8e2cfec1cdf34068f2378aae9fe8f5ec0f821e21.tar.bz2
busybox-w32-8e2cfec1cdf34068f2378aae9fe8f5ec0f821e21.zip
libbb: introduse and use signal_[no_]SA_RESTART_empty_mask and sigaction_set
signal_SA_RESTART_empty_mask - 65 +65 signal_no_SA_RESTART_empty_mask - 54 +54 dd_main 1325 1369 +44 sigaction_set - 19 +19 dname_enc 373 377 +4 UNSPEC_print 64 66 +2 setsignal 296 294 -2 bb_signals_recursive 95 92 -3 bb_askpass 367 361 -6 inetd_main 1810 1797 -13 rx_main 912 883 -29 sigdelset 32 - -32 __sigdelset 32 - -32 __GI_sigdelset 32 - -32 sighup_handler 84 37 -47 arping_main 1844 1797 -47 fsck_main 1869 1807 -62 run_list 1917 1844 -73 vlock_main 492 409 -83 progressmeter 883 798 -85 handle_incoming_and_exit 2737 2651 -86 ------------------------------------------------------------------------------ (add/remove: 3/3 grow/shrink: 3/12 up/down: 188/-632) Total: -444 bytes
Diffstat (limited to 'networking')
-rw-r--r--networking/arping.c14
-rw-r--r--networking/httpd.c15
-rw-r--r--networking/inetd.c12
-rw-r--r--networking/wget.c9
4 files changed, 12 insertions, 38 deletions
diff --git a/networking/arping.c b/networking/arping.c
index c89b97567..2277ec55e 100644
--- a/networking/arping.c
+++ b/networking/arping.c
@@ -377,18 +377,8 @@ int arping_main(int argc, char **argv)
377 printf(" from %s via %s\n", inet_ntoa(src), device); 377 printf(" from %s via %s\n", inet_ntoa(src), device);
378 } 378 }
379 379
380 { 380 signal_SA_RESTART_empty_mask(SIGINT, (void (*)(int))finish);
381 struct sigaction sa; 381 signal_SA_RESTART_empty_mask(SIGALRM, (void (*)(int))catcher);
382
383 memset(&sa, 0, sizeof(sa));
384 sa.sa_flags = SA_RESTART;
385
386 sa.sa_handler = (void (*)(int)) finish;
387 sigaction(SIGINT, &sa, NULL);
388
389 sa.sa_handler = (void (*)(int)) catcher;
390 sigaction(SIGALRM, &sa, NULL);
391 }
392 382
393 catcher(); 383 catcher();
394 384
diff --git a/networking/httpd.c b/networking/httpd.c
index e9137287c..7b7446ed9 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1788,7 +1788,6 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
1788 char *header_ptr = header_ptr; 1788 char *header_ptr = header_ptr;
1789 Htaccess_Proxy *proxy_entry; 1789 Htaccess_Proxy *proxy_entry;
1790#endif 1790#endif
1791 struct sigaction sa;
1792#if ENABLE_FEATURE_HTTPD_BASIC_AUTH 1791#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
1793 int credentials = -1; /* if not required this is Ok */ 1792 int credentials = -1; /* if not required this is Ok */
1794#endif 1793#endif
@@ -1819,11 +1818,7 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
1819 } 1818 }
1820 1819
1821 /* Install timeout handler */ 1820 /* Install timeout handler */
1822 memset(&sa, 0, sizeof(sa)); 1821 signal_no_SA_RESTART_empty_mask(SIGALRM, exit_on_signal);
1823 sa.sa_handler = exit_on_signal;
1824 /* sigemptyset(&sa.sa_mask); - memset should be enough */
1825 /*sa.sa_flags = 0; - no SA_RESTART */
1826 sigaction(SIGALRM, &sa, NULL);
1827 alarm(HEADER_READ_TIMEOUT); 1822 alarm(HEADER_READ_TIMEOUT);
1828 1823
1829 if (!get_line()) /* EOF or error or empty line */ 1824 if (!get_line()) /* EOF or error or empty line */
@@ -2247,15 +2242,9 @@ static void mini_httpd_inetd(void)
2247#if ENABLE_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP 2242#if ENABLE_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
2248static void sighup_handler(int sig) 2243static void sighup_handler(int sig)
2249{ 2244{
2250 struct sigaction sa;
2251
2252 parse_conf(default_path_httpd_conf, sig == SIGHUP ? SIGNALED_PARSE : FIRST_PARSE); 2245 parse_conf(default_path_httpd_conf, sig == SIGHUP ? SIGNALED_PARSE : FIRST_PARSE);
2253 2246
2254 memset(&sa, 0, sizeof(sa)); 2247 signal_SA_RESTART_empty_mask(SIGHUP, sighup_handler);
2255 sa.sa_handler = sighup_handler;
2256 /*sigemptyset(&sa.sa_mask); - memset should be enough */
2257 sa.sa_flags = SA_RESTART;
2258 sigaction(SIGHUP, &sa, NULL);
2259} 2248}
2260#endif 2249#endif
2261 2250
diff --git a/networking/inetd.c b/networking/inetd.c
index 463c7cfcf..196f6d29d 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -1179,15 +1179,15 @@ int inetd_main(int argc, char **argv)
1179 sigaddset(&sa.sa_mask, SIGCHLD); 1179 sigaddset(&sa.sa_mask, SIGCHLD);
1180 sigaddset(&sa.sa_mask, SIGHUP); 1180 sigaddset(&sa.sa_mask, SIGHUP);
1181 sa.sa_handler = retry_network_setup; 1181 sa.sa_handler = retry_network_setup;
1182 sigaction(SIGALRM, &sa, NULL); 1182 sigaction_set(SIGALRM, &sa);
1183 sa.sa_handler = reread_config_file; 1183 sa.sa_handler = reread_config_file;
1184 sigaction(SIGHUP, &sa, NULL); 1184 sigaction_set(SIGHUP, &sa);
1185 sa.sa_handler = reap_child; 1185 sa.sa_handler = reap_child;
1186 sigaction(SIGCHLD, &sa, NULL); 1186 sigaction_set(SIGCHLD, &sa);
1187 sa.sa_handler = clean_up_and_exit; 1187 sa.sa_handler = clean_up_and_exit;
1188 sigaction(SIGTERM, &sa, NULL); 1188 sigaction_set(SIGTERM, &sa);
1189 sa.sa_handler = clean_up_and_exit; 1189 sa.sa_handler = clean_up_and_exit;
1190 sigaction(SIGINT, &sa, NULL); 1190 sigaction_set(SIGINT, &sa);
1191 sa.sa_handler = SIG_IGN; 1191 sa.sa_handler = SIG_IGN;
1192 sigaction(SIGPIPE, &sa, &saved_pipe_handler); 1192 sigaction(SIGPIPE, &sa, &saved_pipe_handler);
1193 1193
@@ -1382,7 +1382,7 @@ int inetd_main(int argc, char **argv)
1382 * for nowait stream children */ 1382 * for nowait stream children */
1383 for (sep2 = serv_list; sep2; sep2 = sep2->se_next) 1383 for (sep2 = serv_list; sep2; sep2 = sep2->se_next)
1384 maybe_close(sep2->se_fd); 1384 maybe_close(sep2->se_fd);
1385 sigaction(SIGPIPE, &saved_pipe_handler, NULL); 1385 sigaction_set(SIGPIPE, &saved_pipe_handler);
1386 unblock_sigs(&omask); 1386 unblock_sigs(&omask);
1387 BB_EXECVP(sep->se_program, sep->se_argv); 1387 BB_EXECVP(sep->se_program, sep->se_argv);
1388 bb_perror_msg("exec %s", sep->se_program); 1388 bb_perror_msg("exec %s", sep->se_program);
diff --git a/networking/wget.c b/networking/wget.c
index 36a83560a..a77a2add7 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -144,13 +144,8 @@ static void progressmeter(int flag)
144 transferred = 0; 144 transferred = 0;
145 fputc('\n', stderr); 145 fputc('\n', stderr);
146 } else { 146 } else {
147 if (flag == -1) { 147 if (flag == -1) { /* first call to progressmeter */
148 /* first call to progressmeter */ 148 signal_SA_RESTART_empty_mask(SIGALRM, progressmeter);
149 struct sigaction sa;
150 sa.sa_handler = progressmeter;
151 sigemptyset(&sa.sa_mask);
152 sa.sa_flags = SA_RESTART;
153 sigaction(SIGALRM, &sa, NULL);
154 } 149 }
155 alarm(1); 150 alarm(1);
156 } 151 }