Formerly mach/hurd/__setgid.c.~5~
[kopensolaris-gnu/glibc.git] / sysdeps / mach / hurd / setgid.c
index 1d69ce6..3163249 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -33,7 +33,8 @@ DEFUN(__setgid, (gid), gid_t gid)
   __mutex_lock (&_hurd_idlock);
   if (!_hurd_id_valid)
     {
-      error_t err = __auth_getids (_hurd_auth, &_hurd_id);
+      error_t err = _HURD_PORT_USE (&_hurd_auth,
+                                   __auth_getids (port, &_hurd_id));
       if (err)
        {
          __mutex_unlock (&_hurd_idlock);
@@ -46,7 +47,7 @@ DEFUN(__setgid, (gid), gid_t gid)
     if (_hurd_id.gids[i] == gid)
       {
        /* We already have this gid.  Swap it with gids[0]
-          so getgid will return it.  */
+          so getegid will return it.  */
        _hurd_id.gids[i] = _hurd_id.gids[0];
        break;
       }
@@ -57,7 +58,7 @@ DEFUN(__setgid, (gid), gid_t gid)
                               sizeof (_hurd_id.gids[0])))
        {
          __mutex_unlock (&_hurd_idlock);
-         errno = ENOMEM;       /* ? */
+         errno = ENOMEM;       /* XXX ? */
          return -1;
        }
       else
@@ -69,16 +70,15 @@ DEFUN(__setgid, (gid), gid_t gid)
 
   _hurd_id.rgid = _hurd_id.gids[0];
 
-  if (err = auth_makeauth (_hurd_auth, &_hurd_id, &newauth))
-    {
-      _hurd_id_valid = 0;
-      __mutex_unlock (&_hurd_idlock);
-      return __hurd_fail (err);
-    }
-  else
-    {
-      int err = __setauth (newauth);
-      __mach_port_deallocate (__mach_task_self (), newauth);
-      return err;
-    }
+  err = _HURD_PORT_USE (&_hurd_auth,
+                       __auth_makeauth (port, &_hurd_id, &newauth));
+  _hurd_id_valid = 0;
+  __mutex_unlock (&_hurd_idlock);
+
+  if (err)
+    return __hurd_fail (err);
+
+  err = __setauth (newauth);
+  __mach_port_deallocate (__mach_task_self (), newauth);
+  return err;
 }