Mercurial > octave
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