diff options
author | Andy Wingo <wingo@pobox.com> | 2016-07-11 22:17:09 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2016-07-25 11:24:33 +0200 |
commit | a1cb59c47e04a7c135d4a75401c351da8df4eb8f (patch) | |
tree | 62b30e1063c6f581a51d99bb18b60f0ff39a35ba /libguile/posix.c | |
parent | a9e726eda73b8f08ce64b201471b46789a105a7a (diff) | |
download | guile-a1cb59c47e04a7c135d4a75401c351da8df4eb8f.tar.gz |
Provide `kill' only if supported by the host
* libguile/posix.c (scm_kill): Only provide if the host has `kill'. An
incompatible change on MinGW, where this function would work only if
the PID was the current PID, but that will be fixed by the next
process.
Diffstat (limited to 'libguile/posix.c')
-rw-r--r-- | libguile/posix.c | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/libguile/posix.c b/libguile/posix.c index dfb5bf9c9..452b9e37d 100644 --- a/libguile/posix.c +++ b/libguile/posix.c @@ -626,6 +626,7 @@ SCM_DEFINE (scm_setrlimit, "setrlimit", 3, 0, 0, #endif /* HAVE_GETRLIMIT */ +#ifdef HAVE_KILL SCM_DEFINE (scm_kill, "kill", 2, 0, 0, (SCM pid, SCM sig), "Sends a signal to the specified process or group of processes.\n\n" @@ -653,30 +654,12 @@ SCM_DEFINE (scm_kill, "kill", 2, 0, 0, #define FUNC_NAME s_scm_kill { /* Signal values are interned in scm_init_posix(). */ -#ifdef HAVE_KILL if (kill (scm_to_int (pid), scm_to_int (sig)) != 0) SCM_SYSERROR; -#else - /* Mingw has raise(), but not kill(). (Other raw DOS environments might - be similar.) Use raise() when the requested pid is our own process, - otherwise bomb. */ - if (scm_to_int (pid) == getpid ()) - { - if (raise (scm_to_int (sig)) != 0) - { - err: - SCM_SYSERROR; - } - else - { - errno = ENOSYS; - goto err; - } - } -#endif return SCM_UNSPECIFIED; } #undef FUNC_NAME +#endif #ifdef HAVE_WAITPID SCM_DEFINE (scm_waitpid, "waitpid", 1, 1, 0, |