]> granicus.if.org Git - python/commitdiff
bpo-34412: Make signal.strsignal() work on HP-UX (GH-8786)
authorMichael Osipov <1983-01-06@gmx.net>
Thu, 23 Aug 2018 13:27:19 +0000 (15:27 +0200)
committerBerker Peksag <berker.peksag@gmail.com>
Thu, 23 Aug 2018 13:27:19 +0000 (16:27 +0300)
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.

Lib/test/test_signal.py
Misc/NEWS.d/next/Library/2018-08-16-19-07-05.bpo-34412.NF5Jm2.rst [new file with mode: 0644]
Modules/signalmodule.c
configure
configure.ac
pyconfig.h.in

index ecdffa60a65c03ee4d6f18d2ab74dbd26639a170..d30a2d6129053484bd38119bd7e7d2cef12bfcc5 100644 (file)
@@ -60,6 +60,7 @@ class PosixTests(unittest.TestCase):
     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):
diff --git a/Misc/NEWS.d/next/Library/2018-08-16-19-07-05.bpo-34412.NF5Jm2.rst b/Misc/NEWS.d/next/Library/2018-08-16-19-07-05.bpo-34412.NF5Jm2.rst
new file mode 100644 (file)
index 0000000..8d7320f
--- /dev/null
@@ -0,0 +1 @@
+Make :func:`signal.strsignal` work on HP-UX. Patch by Michael Osipov.
index 9de5c2ed181712b143f15fe580e0036e49f8102e..d1209485827331f92c211dc1072ba44140a0ee16 100644 (file)
@@ -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;
index 87f3392fec000779137d16a4d2e95618d7332654..4de68432cbc57bf97deb2279f2d2e768e46a3a44 100755 (executable)
--- a/configure
+++ b/configure
@@ -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
index 749303ee1b5ff527997f4674e2d249cd1b83e841..1e0b7f5e7ba696136e04f22a6973676a876bab73 100644 (file)
@@ -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)
index d80ddc0dc2efadc8d8a913af92f3a627453c3610..a82c3737c3c415f3d086c3ae5036d093645dd199 100644 (file)
 /* 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