diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2021-10-13 00:54:55 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2021-10-13 00:55:20 +0200 |
commit | 5eac2a9ffd7629fcba1c4800c63f90f8ea32ad17 (patch) | |
tree | aa03a8cc5951ab35e4486bf7ab8809e9997867c2 /libtreefs/fsys-getroot.c | |
parent | 96a673a4b0b7da004b7ffe6460894e94f57cd14a (diff) | |
download | hurd-5eac2a9ffd7629fcba1c4800c63f90f8ea32ad17.tar.gz hurd-5eac2a9ffd7629fcba1c4800c63f90f8ea32ad17.tar.bz2 hurd-5eac2a9ffd7629fcba1c4800c63f90f8ea32ad17.zip |
libtreefs: remove unfinished and unused code
* libtreefs: Remove directory.
Diffstat (limited to 'libtreefs/fsys-getroot.c')
-rw-r--r-- | libtreefs/fsys-getroot.c | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/libtreefs/fsys-getroot.c b/libtreefs/fsys-getroot.c deleted file mode 100644 index cd735bfe..00000000 --- a/libtreefs/fsys-getroot.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - - Copyright (C) 1995 Free Software Foundation, Inc. - - Written by Miles Bader <miles@gnu.ai.mit.edu> - - 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 <fcntl.h> - -#include <hurd/fsys.h> - -#include "treefs.h" - -error_t -_treefs_s_fsys_getroot (struct treefs_fsys *fsys, - mach_port_t dotdot, - uid_t *uids, unsigned nuids, - uid_t *gids, unsigned ngids, - int flags, retry_type *retry, char *retry_name, - file_t *result, mach_msg_type_name_t *result_type) -{ - error_t err; - mode_t type; - struct treefs_node *root; - struct treefs_auth *auth; - - flags &= O_HURD; - - err = treefs_fsys_get_root (fsys, &root); - if (err) - return err; - - if (!(flags & O_NOTRANS)) - /* Try starting up any translator on the root node. */ - { - fsys_t child_fsys; - - do - { - err = - treefs_node_get_active_trans (root, 0, 0, &dotdot, &child_fsys); - if (err == 0 && child_fsys != MACH_PORT_NULL) - /* We think there's an active translator; try contacting it. */ - { - err = - fsys_getroot (child_fsys, dotdot, MACH_MSG_TYPE_COPY_SEND, - uids, nuids, gids, ngids, - flags, retry, retry_name, result); - /* If we got MACH_SEND_INVALID_DEST or MIG_SERVER_DIED, then - the server is dead. Zero out the old control port and try - everything again. */ - if (err == MACH_SEND_INVALID_DEST || err == EMIG_SERVER_DIED) - treefs_node_drop_active_trans (root, control_port); - } - } - while (err == MACH_SEND_INVALID_DEST || err == MIG_SERVER_DIED); - - /* If we got a translator, or an error trying, return immediately. */ - if (err || child_fsys) - { - if (!err && *result != MACH_PORT_NULL) - *result_type = MACH_MSG_TYPE_MOVE_SEND; - else - *result_type = MACH_MSG_TYPE_COPY_SEND; - - if (!err) - mach_port_deallocate (mach_task_self (), dotdot); - treefs_node_unref (root); - - return err; - } - } - - pthread_mutex_lock (&root->lock); - - type = treefs_node_type (root); - if (type == S_IFLNK && !(flags & (O_NOLINK | O_NOTRANS))) - /* Handle symlink interpretation */ - { - int sym_len = 1000; - char path_buf[sym_len + 1], *path = path_buf; - - err = treefs_node_get_symlink (root, path, &sym_len); - if (err == E2BIG) - /* Symlink contents won't fit in our buffer, so - reallocate it and try again. */ - { - path = alloca (sym_len + 1); - err = treefs_node_get_symlink (node, path, &sym_len); - } - - if (err) - goto out; - - if (*path == '/') - { - *retry = FS_RETRY_MAGICAL; - *result = MACH_PORT_NULL; - *result_type = MACH_MSG_TYPE_COPY_SEND; - mach_port_deallocate (mach_task_self (), dotdot); - } - else - { - *retry = FS_RETRY_REAUTH; - *result = dotdot; - *result_type = MACH_MSG_TYPE_COPY_SEND; - } - - strcpy (retry_name, path); - goto out; - } - - err = treefs_node_create_auth (root, uids, nuids, gids, ngids, &auth); - if (err) - goto out; - - *retry = FS_RETRY_NORMAL; - *retry_name = '\0'; - *result_type = MACH_MSG_TYPE_MAKE_SEND; - - err = treefs_node_create_right (root, dotdot, flags, auth, result); - - treefs_node_auth_unref (root, auth); - - out: - treefs_node_release (root); - - return err; -} |