strsignal() isn't thread-safety but sys_siglist[] is. Also, according to the glibc manual, BSD has sys_siglist[] but not strsignal().
Signed-off-by: Ben Pfaff <b...@nicira.com> --- configure.ac | 3 ++- lib/signals.c | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 7af8afb..8364ea5 100644 --- a/configure.ac +++ b/configure.ac @@ -58,9 +58,10 @@ OVS_CHECK_DOT OVS_CHECK_IF_PACKET OVS_CHECK_IF_DL OVS_CHECK_STRTOK_R +AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>]]) AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec, struct stat.st_mtimensec], [], [], [[#include <sys/stat.h>]]) -AC_CHECK_FUNCS([mlockall strnlen strsignal getloadavg statvfs setmntent]) +AC_CHECK_FUNCS([mlockall strnlen getloadavg statvfs setmntent]) AC_CHECK_HEADERS([mntent.h sys/statvfs.h linux/types.h linux/if_ether.h]) OVS_CHECK_PKIDIR diff --git a/lib/signals.c b/lib/signals.c index 06c2e75..09e0e09 100644 --- a/lib/signals.c +++ b/lib/signals.c @@ -147,9 +147,13 @@ const char * signal_name(int signum) { const char *name = NULL; -#ifdef HAVE_STRSIGNAL - name = strsignal(signum); + +#if HAVE_DECL_SYS_SIGLIST + if (signum >= 0 && signum < ARRAY_SIZE(sys_siglist)) { + name = sys_siglist[signum]; + } #endif + if (!name) { static char buffer[7 + INT_STRLEN(int) + 1]; sprintf(buffer, "signal %d", signum); -- 1.7.2.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev