changeset 21940:70824a0dd009

provide wrapper for kill * signal-wrappers.c, signal-wrappers.h (octave_kill_wrapper, octave_have_kill): New functions. * oct-syscalls.cc: Include signal-wrappers.h instead of signal.h. (octave::sys::kill): Use new wrapper functions.
author John W. Eaton <jwe@octave.org>
date Fri, 17 Jun 2016 06:51:43 -0400
parents 034b15e9c262
children 1d23b75cbcd1
files liboctave/system/oct-syscalls.cc liboctave/wrappers/signal-wrappers.c liboctave/wrappers/signal-wrappers.h
diffstat 3 files changed, 35 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/system/oct-syscalls.cc	Fri Jun 17 06:41:08 2016 -0400
+++ b/liboctave/system/oct-syscalls.cc	Fri Jun 17 06:51:43 2016 -0400
@@ -28,16 +28,12 @@
 #include <cstdlib>
 #include <cstring>
 
-// We can't use csignal as kill is not in the std namespace, and picky
-// compiler runtimes will also exclude it from global scope as well.
-
-#include <signal.h>
-
 #include "fcntl-wrappers.h"
 #include "lo-utils.h"
 #include "lo-sysdep.h"
 #include "oct-syscalls.h"
 #include "octave-popen2.h"
+#include "signal-wrappers.h"
 #include "str-vec.h"
 #include "unistd-wrappers.h"
 #include "wait-wrappers.h"
@@ -306,14 +302,15 @@
 
       int status = -1;
 
-#if defined (HAVE_KILL)
-      status = ::kill (pid, sig);
+      if (octave_have_kill ())
+        {
+          status = octave_kill_wrapper (pid, sig);
 
-      if (status < 0)
-        msg = gnulib::strerror (errno);
-#else
-      msg = NOT_SUPPORTED ("kill");
-#endif
+          if (status < 0)
+            msg = gnulib::strerror (errno);
+        }
+      else
+        msg = NOT_SUPPORTED ("kill");
 
       return status;
     }
--- a/liboctave/wrappers/signal-wrappers.c	Fri Jun 17 06:41:08 2016 -0400
+++ b/liboctave/wrappers/signal-wrappers.c	Fri Jun 17 06:51:43 2016 -0400
@@ -35,8 +35,24 @@
 
 #include "signal-wrappers.h"
 
+int
+octave_kill_wrapper (pid_t pid, int signum)
+{
+  return kill (pid, signum);
+}
+
 char *
 octave_strsignal_wrapper (int signum)
 {
   return strsignal (signum);
 }
+
+bool
+octave_have_kill (void)
+{
+#if defined (HAVE_KILL)
+  return true;
+#else
+  return false;
+#endif
+}
--- a/liboctave/wrappers/signal-wrappers.h	Fri Jun 17 06:41:08 2016 -0400
+++ b/liboctave/wrappers/signal-wrappers.h	Fri Jun 17 06:51:43 2016 -0400
@@ -23,12 +23,22 @@
 #if ! defined (octave_signal_wrappers_h)
 #define octave_signal_wrappers_h 1
 
+#include <sys/types.h>
+
+#if ! defined (__cplusplus)
+#  include <stdbool.h>
+#endif
+
 #if defined __cplusplus
 extern "C" {
 #endif
 
+extern int octave_kill_wrapper (pid_t pid, int signum);
+
 extern char *octave_strsignal_wrapper (int signum);
 
+extern bool octave_have_kill (void);
+  
 #if defined __cplusplus
 }
 #endif