Back to index

glibc  2.9
Functions
setgid.c File Reference
#include <errno.h>
#include <unistd.h>
#include <setxid.h>
#include <linux/posix_types.h>
#include <kernel-features.h>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int __setgid (gid_t gid)

Function Documentation

int __setgid ( gid_t  gid)

Definition at line 35 of file setgid.c.

{
  int result;

#if __ASSUME_32BITUIDS > 0
  result = INLINE_SETXID_SYSCALL (setgid32, 1, gid);
#else
# ifdef __NR_setgid32
  if (__libc_missing_32bit_uids <= 0)
    {
      int saved_errno = errno;

      result = INLINE_SETXID_SYSCALL (setgid32, 1, gid);

      if (result == 0)
       goto out;
      if (errno != ENOSYS)
       return result;

      __set_errno (saved_errno);
      __libc_missing_32bit_uids = 1;
    }
# endif /* __NR_setgid32 */

  if (gid == (gid_t) ~0
      || gid != (gid_t) ((__kernel_gid_t) gid))
    {
      __set_errno (EINVAL);
      return -1;
    }

  result = INLINE_SETXID_SYSCALL (setgid, 1, gid);
# ifdef __NR_setgid32
 out:
# endif
#endif

  return result;
}

Here is the call graph for this function: