summaryrefslogtreecommitdiff
path: root/libguile/posix.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-07-11 22:17:09 +0200
committerAndy Wingo <wingo@pobox.com>2016-07-25 11:24:33 +0200
commita1cb59c47e04a7c135d4a75401c351da8df4eb8f (patch)
tree62b30e1063c6f581a51d99bb18b60f0ff39a35ba /libguile/posix.c
parenta9e726eda73b8f08ce64b201471b46789a105a7a (diff)
downloadguile-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.c21
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,