Back to index

glibc  2.9
Functions
getresuid.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 __getresuid (uid_t *ruid, uid_t *euid, uid_t *suid)

Function Documentation

int __getresuid ( uid_t ruid,
uid_t euid,
uid_t suid 
)

Definition at line 28 of file getresuid.c.

{
  error_t err;
  uid_t real, eff, saved;

  HURD_CRITICAL_BEGIN;
  __mutex_lock (&_hurd_id.lock);

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

  __mutex_unlock (&_hurd_id.lock);
  HURD_CRITICAL_END;

  if (err)
    return __hurd_fail (err);

  *ruid = real;
  *euid = eff;
  *suid = saved;
  return 0;
}

Here is the call graph for this function: