diff options
Diffstat (limited to 'libtreefs/rights.c')
-rw-r--r-- | libtreefs/rights.c | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/libtreefs/rights.c b/libtreefs/rights.c deleted file mode 100644 index f803b029..00000000 --- a/libtreefs/rights.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Functions for making send rights in various ways - - 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. */ - -/* Return in PORT a send right for a new protid, pointing at the peropen PO, - with rights initialized from AUTH. */ -error_t -treefs_peropen_create_right (struct treefs_peropen *po, - struct treefs_auth *auth, - mach_port_t *port) -{ - struct treefs_node *node = po->node; - struct treefs_fsys *fsys = node->fsys; - struct treefs_handle *handle = - ports_allocate_port (fsys->port_bucket, - sizeof (struct treefs_handle), - fsys->handle_port_class); - - if (handle == NULL) - return MACH_PORT_NULL; - - handle->po = po; - po->refs++; - handle->auth = auth; - auth->refs++; - - err = treefs_node_init_handle (node, handle); - if (err) - { - po->refs--; - auth->refs--; - } - - *port = ports_get_right (handle); - - return 0; -} - -/* Return in PORT a send right for a new handle and a new peropen, pointing - at NODE, with rights initialized from AUTH. FLAGS and PARENT_PORT are used - to initialize the corresponding fields in the new peropen. */ -error_t -treefs_node_create_right (struct treefs_node *node, int flags, - mach_port_t parent_port, struct treefs_auth *auth, - mach_port_t *port) -{ - struct treefs_peropen *po = malloc (sizeof (struct treefs_peropen)); - - if (po == NULL) - return ENOMEM; - - /* Initialize the peropen structure. */ - po->refs = 0; - po->node = node; - po->open_flags = flags; - po->user_lock_state = LOCK_UN; - po->parent_port = parent_port; - if (parent_port != MACH_PORT_NULL) - mach_port_mod_refs (mach_task_self (), - parent_port, MACH_PORT_RIGHT_SEND, 1); - - treefs_node_ref (node); - - err = treefs_node_init_peropen (node, po, flags, auth); - if (err) - goto puke; - - err = treefs_peropen_create_right (po, auth, port); - if (err) - goto puke; - - return 0; - - puke: - treefs_node_unref (node); - free (po); - return err; -} |