diff options
author | Pierre Ossman <ossman@cendio.se> | 2006-01-05 18:09:46 +0000 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2006-01-05 18:09:46 +0000 |
commit | 7dcf4e45963b2aff840ea53bde4012e3c6cac9f8 (patch) | |
tree | fe1a7053b879607c652cc9b6f4a38c72b1aa9439 | |
parent | eacffc3e4d581f0fe57536e7ccfba7293623586c (diff) |
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
-rw-r--r-- | polyp/core.c | 2 | ||||
-rw-r--r-- | polyp/main.c | 20 | ||||
-rw-r--r-- | polyp/pacat.c | 4 | ||||
-rw-r--r-- | polyp/pactl.c | 2 | ||||
-rw-r--r-- | polyp/paplay.c | 2 | ||||
-rw-r--r-- | polyp/polyplib-context.c | 4 | ||||
-rw-r--r-- | polyp/util.c | 12 |
7 files changed, 45 insertions, 1 deletions
diff --git a/polyp/core.c b/polyp/core.c index 539c6775..60439243 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 26fa4a87..2e97e5cc 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 5910d13f..1bba2ee4 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 423cce95..725b5460 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 2eaf07c1..4ace1973 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 bca7d7ea..f54cabbe 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 2c4285fb..fdafe252 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"; } } |