killpg.c.patch   [plain text]


--- killpg.c.orig	2009-11-06 10:36:38.000000000 -0800
+++ killpg.c	2009-11-06 10:41:47.000000000 -0800
@@ -37,6 +37,16 @@ __FBSDID("$FreeBSD: src/lib/libc/compat-
 #include <signal.h>
 #include <errno.h>
 
+int __kill(pid_t pid, int sig, int posix);
+
+#if __DARWIN_UNIX03
+#define	_PID1ERR	EPERM
+#define	_POSIXKILL	1
+#else	/* !__DARWIN_UNIX03 */
+#define	_PID1ERR	ESRCH
+#define	_POSIXKILL	0
+#endif	/* !__DARWIN_UNIX03 */
+
 /*
  * Backwards-compatible killpg().
  */
@@ -44,8 +54,8 @@ int
 killpg(pid_t pgid, int sig)
 {
 	if (pgid == 1) {
-		errno = ESRCH;
+		errno = _PID1ERR;
 		return (-1);
 	}
-	return (kill(-pgid, sig));
+	return (__kill(-pgid, sig, _POSIXKILL));
 }