Formerly ../hurd/fchroot.c.~4~
authorroland <roland>
Sat, 21 Mar 1992 04:57:32 +0000 (04:57 +0000)
committerroland <roland>
Sat, 21 Mar 1992 04:57:32 +0000 (04:57 +0000)
hurd/fchroot.c

index 80de1d2..336eb13 100644 (file)
@@ -26,17 +26,16 @@ Cambridge, MA 02139, USA.  */
 int
 DEFUN(fchroot, (fd), int fd)
 {
-  file_t old;
-  io_t port;
-
-  port = __getdport (fd);
-  if (port == MACH_PORT_NULL)
-    return -1;
-
-  __mutex_lock (&_hurd_lock);
-  old = _hurd_crdir;
-  _hurd_crdir = port;
-  __mutex_unlock (&_hurd_lock);
-  __mach_port_deallocate (__mach_task_self (), old);
+  error_t err;
+  file_t crdir;
+
+  if (err = _HURD_DPORT_USE (fd,
+                            __mach_port_mod_refs (__mach_task_self (),
+                                                  (crdir = port),
+                                                  MACH_PORT_RIGHT_SEND, 1)))
+    return err;
+
+  _hurd_port_set (&_hurd_crdir, crdir);
+
   return 0;
 }