From b097a59b438675bcafbf85002064af5aec4ee07a Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 21 Feb 2008 00:18:35 +0000 Subject: [PATCH] * setpgid() is not supposed to return the group ID. It shall return 0 on success. * setpgrp() is not supposed to fail (could happen, if the calling process was a session leader). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24040 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/libroot/posix/unistd/process.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/system/libroot/posix/unistd/process.c b/src/system/libroot/posix/unistd/process.c index c119be38c4..271bd0c669 100644 --- a/src/system/libroot/posix/unistd/process.c +++ b/src/system/libroot/posix/unistd/process.c @@ -67,16 +67,21 @@ getpgid(pid_t process) int setpgid(pid_t process, pid_t group) { - status_t status = _kern_setpgid(process, group); + pid_t result = _kern_setpgid(process, group); + if (result >= 0) + return 0; - RETURN_AND_SET_ERRNO(status); + RETURN_AND_SET_ERRNO(result); } pid_t setpgrp(void) { - return setpgid(0, 0); + // setpgrp() never fails -- setpgid() fails when the process is a session + // leader, though. + pid_t result = _kern_setpgid(0, 0); + return result >= 0 ? result : getpgrp(); }