/*
* call-seq:
* Process.gid= fixnum => fixnum
*
* Sets the group ID for this process.
*/
static VALUE
proc_setgid(obj, id)
VALUE obj, id;
{
int gid = NUM2INT(id);
check_gid_switch();
#if defined(HAVE_SETRESGID) && !defined(__CHECKER__)
if (setresgid(gid, -1, -1) < 0) rb_sys_fail(0);
#elif defined HAVE_SETREGID
if (setregid(gid, -1) < 0) rb_sys_fail(0);
#elif defined HAVE_SETRGID
if (setrgid((GIDTYPE)gid) < 0) rb_sys_fail(0);
#elif defined HAVE_SETGID
{
if (getegid() == gid) {
if (setgid(gid) < 0) rb_sys_fail(0);
}
else {
rb_notimplement();
}
}
#else
rb_notimplement();
#endif
return INT2FIX(gid);
}