From: Pierre Ossman Date: Thu, 5 Jan 2006 18:09:46 +0000 (+0000) Subject: The standard declares some signals as optional. Make sure we handle X-Git-Tag: submit/2.0-panda/20130828.192557~2837^2~3^2~68 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7dcf4e45963b2aff840ea53bde4012e3c6cac9f8;p=profile%2Fivi%2Fpulseaudio-panda.git The standard declares some signals as optional. Make sure we handle this gracefully. git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/ossman@374 fefdeb5f-60dc-0310-8127-8f9354f1896f --- diff --git a/polyp/core.c b/polyp/core.c index 539c677..6043924 100644 --- a/polyp/core.c +++ b/polyp/core.c @@ -89,7 +89,9 @@ struct pa_core* pa_core_new(struct pa_mainloop_api *m) { pa_random(&c->cookie, sizeof(c->cookie)); +#ifdef SIGPIPE pa_check_signal_is_blocked(SIGPIPE); +#endif return c; } diff --git a/polyp/main.c b/polyp/main.c index 26fa4a8..2e97e5c 100644 --- a/polyp/main.c +++ b/polyp/main.c @@ -70,20 +70,26 @@ static void signal_callback(struct pa_mainloop_api*m, struct pa_signal_event *e, pa_log_info(__FILE__": Got signal %s.\n", pa_strsignal(sig)); switch (sig) { +#ifdef SIGUSR1 case SIGUSR1: pa_module_load(userdata, "module-cli", NULL); break; +#endif +#ifdef SIGUSR2 case SIGUSR2: pa_module_load(userdata, "module-cli-protocol-unix", NULL); break; +#endif +#ifdef SIGHUP case SIGHUP: { char *c = pa_full_status_string(userdata); pa_log_notice(c); pa_xfree(c); return; } +#endif case SIGINT: case SIGTERM: @@ -263,9 +269,15 @@ int main(int argc, char *argv[]) { open("/dev/null", O_WRONLY); open("/dev/null", O_WRONLY); +#ifdef SIGTTOU signal(SIGTTOU, SIG_IGN); +#endif +#ifdef SIGTTIN signal(SIGTTIN, SIG_IGN); +#endif +#ifdef SIGTSTP signal(SIGTSTP, SIG_IGN); +#endif if ((tty_fd = open("/dev/tty", O_RDWR)) >= 0) { ioctl(tty_fd, TIOCNOTTY, (char*) 0); @@ -292,16 +304,24 @@ int main(int argc, char *argv[]) { assert(r == 0); pa_signal_new(SIGINT, signal_callback, c); pa_signal_new(SIGTERM, signal_callback, c); +#ifdef SIGPIPE signal(SIGPIPE, SIG_IGN); +#endif c = pa_core_new(pa_mainloop_get_api(mainloop)); assert(c); if (conf->daemonize) c->running_as_daemon = 1; +#ifdef SIGUSR1 pa_signal_new(SIGUSR1, signal_callback, c); +#endif +#ifdef SIGUSR2 pa_signal_new(SIGUSR2, signal_callback, c); +#endif +#ifdef SIGHUP pa_signal_new(SIGHUP, signal_callback, c); +#endif r = pa_cpu_limit_init(pa_mainloop_get_api(mainloop)); assert(r == 0); diff --git a/polyp/pacat.c b/polyp/pacat.c index 5910d13..1bba2ee 100644 --- a/polyp/pacat.c +++ b/polyp/pacat.c @@ -480,8 +480,12 @@ int main(int argc, char *argv[]) { assert(r == 0); pa_signal_new(SIGINT, exit_signal_callback, NULL); pa_signal_new(SIGTERM, exit_signal_callback, NULL); +#ifdef SIGUSR1 pa_signal_new(SIGUSR1, sigusr1_signal_callback, NULL); +#endif +#ifdef SIGPIPE signal(SIGPIPE, SIG_IGN); +#endif if (!(stdio_event = mainloop_api->io_new(mainloop_api, mode == PLAYBACK ? STDIN_FILENO : STDOUT_FILENO, diff --git a/polyp/pactl.c b/polyp/pactl.c index 423cce9..725b546 100644 --- a/polyp/pactl.c +++ b/polyp/pactl.c @@ -739,7 +739,9 @@ int main(int argc, char *argv[]) { r = pa_signal_init(mainloop_api); assert(r == 0); pa_signal_new(SIGINT, exit_signal_callback, NULL); +#ifdef SIGPIPE signal(SIGPIPE, SIG_IGN); +#endif if (!(context = pa_context_new(mainloop_api, client_name))) { fprintf(stderr, "pa_context_new() failed.\n"); diff --git a/polyp/paplay.c b/polyp/paplay.c index 2eaf07c..4ace197 100644 --- a/polyp/paplay.c +++ b/polyp/paplay.c @@ -338,7 +338,9 @@ int main(int argc, char *argv[]) { r = pa_signal_init(mainloop_api); assert(r == 0); pa_signal_new(SIGINT, exit_signal_callback, NULL); +#ifdef SIGPIPE signal(SIGPIPE, SIG_IGN); +#endif /* Create a new connection context */ if (!(context = pa_context_new(mainloop_api, client_name))) { diff --git a/polyp/polyplib-context.c b/polyp/polyplib-context.c index bca7d7e..f54cabb 100644 --- a/polyp/polyplib-context.c +++ b/polyp/polyplib-context.c @@ -110,8 +110,10 @@ struct pa_context *pa_context_new(struct pa_mainloop_api *mainloop, const char * c->autospawn_lock_fd = -1; memset(&c->spawn_api, 0, sizeof(c->spawn_api)); c->do_autospawn = 0; - + +#ifdef SIGPIPE pa_check_signal_is_blocked(SIGPIPE); +#endif c->conf = pa_client_conf_new(); pa_client_conf_load(c->conf, NULL); diff --git a/polyp/util.c b/polyp/util.c index 2c4285f..fdafe25 100644 --- a/polyp/util.c +++ b/polyp/util.c @@ -527,12 +527,24 @@ const char *pa_strsignal(int sig) { switch(sig) { case SIGINT: return "SIGINT"; case SIGTERM: return "SIGTERM"; +#ifdef SIGUSR1 case SIGUSR1: return "SIGUSR1"; +#endif +#ifdef SIGUSR2 case SIGUSR2: return "SIGUSR2"; +#endif +#ifdef SIGXCPU case SIGXCPU: return "SIGXCPU"; +#endif +#ifdef SIGPIPE case SIGPIPE: return "SIGPIPE"; +#endif +#ifdef SIGCHLD case SIGCHLD: return "SIGCHLD"; +#endif +#ifdef SIGHUP case SIGHUP: return "SIGHUP"; +#endif default: return "UNKNOWN SIGNAL"; } }