Back to index

glibc  2.9
Functions
getresgid.c File Reference
#include <errno.h>
#include <unistd.h>
#include <hurd.h>
#include <hurd/id.h>

Go to the source code of this file.

Functions

int __getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid)

Function Documentation

int __getresgid ( gid_t rgid,
gid_t egid,
gid_t sgid 
)

Definition at line 28 of file getresgid.c.

{
  error_t err;
  gid_t real, eff, saved;

  HURD_CRITICAL_BEGIN;
  __mutex_lock (&_hurd_id.lock);

  err = _hurd_check_ids ();
  if (!err)
    {
      if (_hurd_id.aux.ngids < 1)
       /* We do not even have a real GID.  */
       err = EGRATUITOUS;
      else
       {
         real = _hurd_id.aux.gids[0];
         eff = _hurd_id.gen.ngids < 1 ? real : _hurd_id.gen.gids[0];
         saved = _hurd_id.aux.ngids < 2 ? real : _hurd_id.aux.gids[1];
       }
    }

  __mutex_unlock (&_hurd_id.lock);
  HURD_CRITICAL_END;

  if (err)
    return __hurd_fail (err);

  *rgid = real;
  *egid = eff;
  *sgid = saved;
  return 0;
}

Here is the call graph for this function: