mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-09 13:29:59 -05:00
Rename pa_strsignal() to pa_sig2str(), since we return the symbolical signal name, not a human readable string. This follows the Solaris API of sig2str() a bit. Also, add all remaining signals to the list of signal names.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1843 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
d3b898513c
commit
26a1ae7bbb
7 changed files with 129 additions and 21 deletions
|
|
@ -291,7 +291,7 @@ AC_CHECK_FUNCS([lstat])
|
||||||
|
|
||||||
# Non-standard
|
# Non-standard
|
||||||
|
|
||||||
AC_CHECK_FUNCS([setresuid setresgid setreuid setregid seteuid setegid ppoll])
|
AC_CHECK_FUNCS([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str])
|
||||||
|
|
||||||
#### POSIX threads ####
|
#### POSIX threads ####
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -235,7 +235,8 @@ noinst_PROGRAMS = \
|
||||||
asyncq-test \
|
asyncq-test \
|
||||||
asyncmsgq-test \
|
asyncmsgq-test \
|
||||||
queue-test \
|
queue-test \
|
||||||
rtpoll-test
|
rtpoll-test \
|
||||||
|
sig2str-test
|
||||||
|
|
||||||
if HAVE_SIGXCPU
|
if HAVE_SIGXCPU
|
||||||
noinst_PROGRAMS += \
|
noinst_PROGRAMS += \
|
||||||
|
|
@ -375,6 +376,11 @@ interpol_test_LDADD = $(AM_LDADD) libpulse.la
|
||||||
interpol_test_CFLAGS = $(AM_CFLAGS)
|
interpol_test_CFLAGS = $(AM_CFLAGS)
|
||||||
interpol_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
|
interpol_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
|
||||||
|
|
||||||
|
sig2str_test_SOURCES = tests/sig2str-test.c
|
||||||
|
sig2str_test_LDADD = $(AM_LDADD) libpulsecore.la
|
||||||
|
sig2str_test_CFLAGS = $(AM_CFLAGS)
|
||||||
|
sig2str_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
# Client library #
|
# Client library #
|
||||||
###################################
|
###################################
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ static void message_cb(pa_mainloop_api*a, pa_time_event*e, PA_GCC_UNUSED const s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void signal_callback(pa_mainloop_api*m, PA_GCC_UNUSED pa_signal_event *e, int sig, void *userdata) {
|
static void signal_callback(pa_mainloop_api*m, PA_GCC_UNUSED pa_signal_event *e, int sig, void *userdata) {
|
||||||
pa_log_info("Got signal %s.", pa_strsignal(sig));
|
pa_log_info("Got signal %s.", pa_sig2str(sig));
|
||||||
|
|
||||||
switch (sig) {
|
switch (sig) {
|
||||||
#ifdef SIGUSR1
|
#ifdef SIGUSR1
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,7 @@
|
||||||
#include <pulsecore/winsock.h>
|
#include <pulsecore/winsock.h>
|
||||||
#include <pulsecore/log.h>
|
#include <pulsecore/log.h>
|
||||||
#include <pulsecore/macro.h>
|
#include <pulsecore/macro.h>
|
||||||
|
#include <pulsecore/thread.h>
|
||||||
|
|
||||||
#include "core-util.h"
|
#include "core-util.h"
|
||||||
|
|
||||||
|
|
@ -411,9 +412,9 @@ void pa_check_signal_is_blocked(int sig) {
|
||||||
if (sa.sa_handler != SIG_DFL)
|
if (sa.sa_handler != SIG_DFL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pa_log_warn("%s is not trapped. This might cause malfunction!", pa_strsignal(sig));
|
pa_log_warn("%s is not trapped. This might cause malfunction!", pa_sig2str(sig));
|
||||||
#else /* HAVE_SIGACTION */
|
#else /* HAVE_SIGACTION */
|
||||||
pa_log_warn("%s might not be trapped. This might cause malfunction!", pa_strsignal(sig));
|
pa_log_warn("%s might not be trapped. This might cause malfunction!", pa_sig2str(sig));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -616,31 +617,93 @@ char *pa_split_spaces(const char *c, const char **state) {
|
||||||
return pa_xstrndup(current, l);
|
return pa_xstrndup(current, l);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the name of an UNIX signal. Similar to GNU's strsignal() */
|
PA_STATIC_TLS_DECLARE(signame, pa_xfree);
|
||||||
const char *pa_strsignal(int sig) {
|
|
||||||
|
/* Return the name of an UNIX signal. Similar to Solaris sig2str() */
|
||||||
|
const char *pa_sig2str(int sig) {
|
||||||
|
char *t;
|
||||||
|
|
||||||
|
if (sig <= 0 || sig >= _NSIG)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
#ifdef HAVE_SIG2STR
|
||||||
|
{
|
||||||
|
char buf[SIG2STR_MAX];
|
||||||
|
|
||||||
|
if (str2sig(sig, buf) == 0) {
|
||||||
|
pa_xfree(PA_STATIC_TLS_GET(signame));
|
||||||
|
t = pa_sprintf_malloc("SIG%s", buf);
|
||||||
|
PA_STATIC_TLS_SET(signame, t);
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
|
||||||
switch(sig) {
|
switch(sig) {
|
||||||
|
#ifdef SIGHUP
|
||||||
|
case SIGHUP: return "SIGHUP";
|
||||||
|
#endif
|
||||||
case SIGINT: return "SIGINT";
|
case SIGINT: return "SIGINT";
|
||||||
case SIGTERM: return "SIGTERM";
|
case SIGQUIT: return "SIGQUIT";
|
||||||
|
case SIGILL: return "SIGULL";
|
||||||
|
case SIGTRAP: return "SIGTRAP";
|
||||||
|
case SIGABRT: return "SIGABRT";
|
||||||
|
case SIGBUS: return "SIGBUS";
|
||||||
|
case SIGFPE: return "SIGFPE";
|
||||||
|
case SIGKILL: return "SIGKILL";
|
||||||
#ifdef SIGUSR1
|
#ifdef SIGUSR1
|
||||||
case SIGUSR1: return "SIGUSR1";
|
case SIGUSR1: return "SIGUSR1";
|
||||||
#endif
|
#endif
|
||||||
|
case SIGSEGV: return "SIGSEGV";
|
||||||
#ifdef SIGUSR2
|
#ifdef SIGUSR2
|
||||||
case SIGUSR2: return "SIGUSR2";
|
case SIGUSR2: return "SIGUSR2";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SIGXCPU
|
|
||||||
case SIGXCPU: return "SIGXCPU";
|
|
||||||
#endif
|
|
||||||
#ifdef SIGPIPE
|
#ifdef SIGPIPE
|
||||||
case SIGPIPE: return "SIGPIPE";
|
case SIGPIPE: return "SIGPIPE";
|
||||||
#endif
|
#endif
|
||||||
|
case SIGALRM: return "SIGALRM";
|
||||||
|
case SIGTERM: return "SIGTERM";
|
||||||
|
case SIGSTKFLT: return "SIGSTKFLT";
|
||||||
#ifdef SIGCHLD
|
#ifdef SIGCHLD
|
||||||
case SIGCHLD: return "SIGCHLD";
|
case SIGCHLD: return "SIGCHLD";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SIGHUP
|
case SIGCONT: return "SIGCONT";
|
||||||
case SIGHUP: return "SIGHUP";
|
case SIGSTOP: return "SIGSTOP";
|
||||||
|
case SIGTSTP: return "SIGTSTP";
|
||||||
|
case SIGTTIN: return "SIGTTIN";
|
||||||
|
case SIGTTOU: return "SIGTTOU";
|
||||||
|
case SIGURG: return "SIGURG";
|
||||||
|
#ifdef SIGXCPU
|
||||||
|
case SIGXCPU: return "SIGXCPU";
|
||||||
#endif
|
#endif
|
||||||
default: return "UNKNOWN SIGNAL";
|
#ifdef SIGXFSZ
|
||||||
|
case SIGXFSZ: return "SIGXFSZ";
|
||||||
|
#endif
|
||||||
|
case SIGVTALRM: return "SIGVTALRM";
|
||||||
|
case SIGPROF: return "SIGPROF";
|
||||||
|
case SIGWINCH: return "SIGWINCH";
|
||||||
|
case SIGIO: return "SIGIO";
|
||||||
|
case SIGPWR: return "SIGPWR";
|
||||||
|
case SIGSYS: return "SIGSYS";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef SIGRTMIN
|
||||||
|
if (sig >= SIGRTMIN && sig <= SIGRTMAX) {
|
||||||
|
pa_xfree(PA_STATIC_TLS_GET(signame));
|
||||||
|
t = pa_sprintf_malloc("SIGRTMIN+%i", sig - SIGRTMIN);
|
||||||
|
PA_STATIC_TLS_SET(signame, t);
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fail:
|
||||||
|
|
||||||
|
pa_xfree(PA_STATIC_TLS_GET(signame));
|
||||||
|
t = pa_sprintf_malloc("SIG%i", sig);
|
||||||
|
PA_STATIC_TLS_SET(signame, t);
|
||||||
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_GRP_H
|
#ifdef HAVE_GRP_H
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ char *pa_split_spaces(const char *c, const char **state);
|
||||||
|
|
||||||
char *pa_strip_nl(char *s);
|
char *pa_strip_nl(char *s);
|
||||||
|
|
||||||
const char *pa_strsignal(int sig) PA_GCC_PURE;
|
const char *pa_sig2str(int sig) PA_GCC_PURE;
|
||||||
|
|
||||||
int pa_own_uid_in_group(const char *name, gid_t *gid);
|
int pa_own_uid_in_group(const char *name, gid_t *gid);
|
||||||
int pa_uid_in_group(uid_t uid, const char *name);
|
int pa_uid_in_group(uid_t uid, const char *name);
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ void pa_rtpoll_install(pa_rtpoll *p) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pa_log_debug("Acquired POSIX realtime signal SIGRTMIN+%i", p->rtsig - SIGRTMIN);
|
pa_log_debug("Acquired POSIX realtime signal %s", pa_sig2str(p->rtsig));
|
||||||
|
|
||||||
{
|
{
|
||||||
sigset_t ss;
|
sigset_t ss;
|
||||||
|
|
|
||||||
39
src/tests/sig2str-test.c
Normal file
39
src/tests/sig2str-test.c
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/***
|
||||||
|
This file is part of PulseAudio.
|
||||||
|
|
||||||
|
PulseAudio is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published
|
||||||
|
by the Free Software Foundation; either version 2 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
PulseAudio is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with PulseAudio; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
USA.
|
||||||
|
***/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <pulsecore/macro.h>
|
||||||
|
#include <pulsecore/core-util.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
int sig;
|
||||||
|
|
||||||
|
for (sig = -1; sig < _NSIG+1; sig++)
|
||||||
|
printf("%i = %s\n", sig, pa_sig2str(sig));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue