Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
bpo-34412: Make signal.strsignal() work on HP-UX (GH-8786)
Introduce a configure check for strsignal(3) which defines HAVE_STRSIGNAL for
signalmodule.c. Add some common signals on HP-UX. This change applies for
Windows and HP-UX.
  • Loading branch information
michael-o authored and berkerpeksag committed Aug 23, 2018
1 parent 89487f5 commit 48ce489
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 4 deletions.
1 change: 1 addition & 0 deletions Lib/test/test_signal.py
Expand Up @@ -60,6 +60,7 @@ def test_getsignal(self):
def test_strsignal(self):
self.assertIn("Interrupt", signal.strsignal(signal.SIGINT))
self.assertIn("Terminated", signal.strsignal(signal.SIGTERM))
self.assertIn("Hangup", signal.strsignal(signal.SIGHUP))

# Issue 3864, unknown if this affects earlier versions of freebsd also
def test_interprocess_signal(self):
Expand Down
@@ -0,0 +1 @@
Make :func:`signal.strsignal` work on HP-UX. Patch by Michael Osipov.
22 changes: 20 additions & 2 deletions Modules/signalmodule.c
Expand Up @@ -530,9 +530,27 @@ signal_strsignal_impl(PyObject *module, int signalnum)
return NULL;
}

#ifdef MS_WINDOWS
/* Custom redefinition of POSIX signals allowed on Windows */
#ifndef HAVE_STRSIGNAL
switch (signalnum) {
/* Though being a UNIX, HP-UX does not provide strsignal(3). */
#ifndef MS_WINDOWS
case SIGHUP:
res = "Hangup";
break;
case SIGALRM:
res = "Alarm clock";
break;
case SIGPIPE:
res = "Broken pipe";
break;
case SIGQUIT:
res = "Quit";
break;
case SIGCHLD:
res = "Child exited";
break;
#endif
/* Custom redefinition of POSIX signals allowed on Windows. */
case SIGINT:
res = "Interrupt";
break;
Expand Down
2 changes: 1 addition & 1 deletion configure
Expand Up @@ -11256,7 +11256,7 @@ for ac_func in alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
sched_rr_get_interval \
sigaction sigaltstack sigfillset siginterrupt sigpending sigrelse \
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy strsignal symlinkat sync \
sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
wcscoll wcsftime wcsxfrm wmemcmp writev _getpty
Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Expand Up @@ -3448,7 +3448,7 @@ AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
sched_rr_get_interval \
sigaction sigaltstack sigfillset siginterrupt sigpending sigrelse \
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy strsignal symlinkat sync \
sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)
Expand Down
3 changes: 3 additions & 0 deletions pyconfig.h.in
Expand Up @@ -984,6 +984,9 @@
/* Define to 1 if you have the <stropts.h> header file. */
#undef HAVE_STROPTS_H

/* Define to 1 if you have the `strsignal' function. */
#undef HAVE_STRSIGNAL

/* Define to 1 if `pw_gecos' is a member of `struct passwd'. */
#undef HAVE_STRUCT_PASSWD_PW_GECOS

Expand Down

0 comments on commit 48ce489

Please sign in to comment.