Skip to content

Commit e35e799

Browse files
committed
bpo-34412: strsignal(3) does not exist on HP-UX
Introduce a configure check for strsignal(3) which defines HAVE_STRSIGNAL for signalmodule.c. This change applies for Windows and HP-UX. Patch by Michael Osipov.
1 parent ccd9975 commit e35e799

File tree

6 files changed

+27
-4
lines changed

6 files changed

+27
-4
lines changed

Lib/test/test_signal.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ def test_getsignal(self):
6060
def test_strsignal(self):
6161
self.assertIn("Interrupt", signal.strsignal(signal.SIGINT))
6262
self.assertIn("Terminated", signal.strsignal(signal.SIGTERM))
63+
self.assertIn("Hangup", signal.strsignal(signal.SIGHUP))
6364

6465
# Issue 3864, unknown if this affects earlier versions of freebsd also
6566
def test_interprocess_signal(self):
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Make :func:`signal.strsignal` work on HP-UX. Patch by Michael Osipov.

Modules/signalmodule.c

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,9 +530,27 @@ signal_strsignal_impl(PyObject *module, int signalnum)
530530
return NULL;
531531
}
532532

533-
#ifdef MS_WINDOWS
534-
/* Custom redefinition of POSIX signals allowed on Windows */
533+
#ifndef HAVE_STRSIGNAL
535534
switch (signalnum) {
535+
/* Though being a UNIX, HP-UX does not provide strsignal(3). */
536+
#ifndef MS_WINDOWS
537+
case SIGHUP:
538+
res = "Hangup";
539+
break;
540+
case SIGALRM:
541+
res = "Alarm clock";
542+
break;
543+
case SIGPIPE:
544+
res = "Broken pipe";
545+
break;
546+
case SIGQUIT:
547+
res = "Quit";
548+
break;
549+
case SIGCHLD:
550+
res = "Child exited";
551+
break;
552+
#endif
553+
/* Custom redefinition of POSIX signals allowed on Windows. */
536554
case SIGINT:
537555
res = "Interrupt";
538556
break;

configure

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11256,7 +11256,7 @@ for ac_func in alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
1125611256
sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
1125711257
sched_rr_get_interval \
1125811258
sigaction sigaltstack sigfillset siginterrupt sigpending sigrelse \
11259-
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
11259+
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy strsignal symlinkat sync \
1126011260
sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
1126111261
truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
1126211262
wcscoll wcsftime wcsxfrm wmemcmp writev _getpty

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3448,7 +3448,7 @@ AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
34483448
sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
34493449
sched_rr_get_interval \
34503450
sigaction sigaltstack sigfillset siginterrupt sigpending sigrelse \
3451-
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
3451+
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy strsignal symlinkat sync \
34523452
sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
34533453
truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
34543454
wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)

pyconfig.h.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,9 @@
984984
/* Define to 1 if you have the <stropts.h> header file. */
985985
#undef HAVE_STROPTS_H
986986

987+
/* Define to 1 if you have the `strsignal' function. */
988+
#undef HAVE_STRSIGNAL
989+
987990
/* Define to 1 if `pw_gecos' is a member of `struct passwd'. */
988991
#undef HAVE_STRUCT_PASSWD_PW_GECOS
989992

0 commit comments

Comments
 (0)