Changeset 23615
- Timestamp:
- 2008-05-02 15:53:47 (4 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/SULeopard/launchd/src/launchd_runtime_kill.c
r23492 r23615 19 19 */ 20 20 21 #if !defined(__LP64__) && !defined(__arm__) 22 #define _NONSTD_SOURCE 1 23 #define old_kill(x, y) kill(x, y) 24 #define old_killpg(x, y) killpg(x, y) 25 #else 26 /* ??? No blessed way to get the old behavior */ 27 extern int __kill(int, int, int); 28 #define old_kill(x, y) __kill(x, y, 0) 29 #define old_killpg(x, y) __kill(-(x), y, 0) 30 #endif 21 #include <sys/syscall.h> 22 #include <unistd.h> 31 23 #include <signal.h> 32 24 33 25 #include "launchd_runtime_kill.h" 34 26 35 /*36 * POSIX defines consistency over correctness, and consequently kill/killpg now37 * returns EPERM instead of ESRCH.38 *39 * I've filed 5487498 to get a non-portable kill() variant, but for now,40 * defining _NONSTD_SOURCE gets us the old behavior.41 */42 43 27 int 44 28 runtime_kill(pid_t pid, int sig) 45 29 { 46 return old_kill(pid, sig); 30 /* 31 * POSIX defines consistency over correctness, and consequently 32 * kill/killpg now returns EPERM instead of ESRCH. 33 * 34 * I've filed 5487498 to get a non-portable kill(). 35 * We'll regretfully take advantage of implementation details for now. 36 */ 37 return syscall(SYS_kill, pid, sig, 0); 47 38 } 48 39 … … 50 41 runtime_killpg(pid_t pgrp, int sig) 51 42 { 52 return old_killpg(pgrp, sig);43 return runtime_kill(-pgrp, sig); 53 44 }

