]> git.saurik.com Git - apple/launchd.git/blobdiff - launchd/src/launchd_runtime_kill.c
launchd-258.19.tar.gz
[apple/launchd.git] / launchd / src / launchd_runtime_kill.c
index 0907748d4a094dda7629257ac73a3de21cd7a2f0..ebed8f05ada28f14f4b12b9c8c7f7320ff3e6ab6 100644 (file)
  * @APPLE_APACHE_LICENSE_HEADER_END@
  */
 
-#if !defined(__LP64__) && !defined(__arm__)
-#define _NONSTD_SOURCE 1
-#define old_kill(x, y) kill(x, y)
-#define old_killpg(x, y) killpg(x, y)
-#else
-/* ??? No blessed way to get the old behavior */
-extern int __kill(int, int, int);
-#define old_kill(x, y) __kill(x, y, 0)
-#define old_killpg(x, y) __kill(-(x), y, 0)
-#endif
+#include <sys/syscall.h>
+#include <unistd.h>
 #include <signal.h>
 
 #include "launchd_runtime_kill.h"
 
-/*
- * POSIX defines consistency over correctness, and consequently kill/killpg now
- * returns EPERM instead of ESRCH.
- *
- * I've filed 5487498 to get a non-portable kill() variant, but for now,
- * defining _NONSTD_SOURCE gets us the old behavior.
- */
-
 int
 runtime_kill(pid_t pid, int sig)
 {
-       return old_kill(pid, sig);
+       /*
+        * POSIX defines consistency over correctness, and consequently
+        * kill/killpg now returns EPERM instead of ESRCH.
+        *
+        * I've filed 5487498 to get a non-portable kill().
+        * We'll regretfully take advantage of implementation details for now.
+        */
+       return syscall(SYS_kill, pid, sig, 0);
 }
 
 int
 runtime_killpg(pid_t pgrp, int sig)
 {
-       return old_killpg(pgrp, sig);
+       return runtime_kill(-pgrp, sig);
 }