diff options
author | Michael I. Bushnell <mib@gnu.org> | 1994-09-06 19:25:33 +0000 |
---|---|---|
committer | Michael I. Bushnell <mib@gnu.org> | 1994-09-06 19:25:33 +0000 |
commit | ce415d0a078bf4cc69ada749a890c30f41dc52de (patch) | |
tree | af84ff52cb50e208106e98f070b2ee0bad29a2d2 /libfshelp | |
parent | 5dd126835e98ff4ae19003a8a654d63455f77a4c (diff) |
Initial revision
Diffstat (limited to 'libfshelp')
-rw-r--r-- | libfshelp/fetch-root.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libfshelp/fetch-root.c b/libfshelp/fetch-root.c new file mode 100644 index 00000000..6fb3db8e --- /dev/null +++ b/libfshelp/fetch-root.c @@ -0,0 +1,53 @@ +/* + Copyright (C) 1994 Free Software Foundation, Inc. + Written by Michael I. Bushnell. + + This file is part of the GNU Hurd. + + The GNU Hurd is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + The GNU Hurd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include "trans.h" + +/* Implement fshelp_fetch_root; see <hurd/fshelp.h> for the description. */ +error_t +fshelp_fetch_root (struct trans_link *link, mach_port_t *cntl, + int passive, error_t (*passive_fn) (char **, u_int *), + void *dirpt, void *nodept, + mach_port_t (*genpt_fn) (mach_port_t), + struct mutex *unlock) +{ + mach_port_t cwdirpt, nodept; + char buf[1000]; + char *bufp = buf; + u_int buflen = 1000; + mutex_lock (&link->lock); + if (!passive && link->control == MACH_PORT_NULL) + { + mutex_unlock (&link->lock); + return 0; + } + + cwdirpt = (*genpt_fn)(dirpt); + + if (link->control == MACH_PORT_NULL) + { + /* Start passive translator */ + nodept = (*genpt_fn)(nodept); + + mutex_unlock (unlock); + + error = fshelp_start_translator (link, + + |