Am-Utils Cross Reference
am-utils/amd/amfs_linkx.c

source navigation ]
diff markup ]
identifier search ]
freetext search ]
file search ]
 
Version: 6.0.1 ] [ 6.0.2 ] [ 6.0.3 ] [ 6.0.4 ] [ 6.0.5 ] [ 6.0.6 ] [ 6.0.7 ] [ 6.0.8 ] [ 6.0.9 ] [ 6.0.10 ] [ 6.1 ] [ 6.1.1 ]

  1 /*
  2  * Copyright (c) 1997-2005 Erez Zadok
  3  * Copyright (c) 1990 Jan-Simon Pendry
  4  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
  5  * Copyright (c) 1990 The Regents of the University of California.
  6  * All rights reserved.
  7  *
  8  * This code is derived from software contributed to Berkeley by
  9  * Jan-Simon Pendry at Imperial College, London.
 10  *
 11  * Redistribution and use in source and binary forms, with or without
 12  * modification, are permitted provided that the following conditions
 13  * are met:
 14  * 1. Redistributions of source code must retain the above copyright
 15  *    notice, this list of conditions and the following disclaimer.
 16  * 2. Redistributions in binary form must reproduce the above copyright
 17  *    notice, this list of conditions and the following disclaimer in the
 18  *    documentation and/or other materials provided with the distribution.
 19  * 3. All advertising materials mentioning features or use of this software
 20  *    must display the following acknowledgment:
 21  *      This product includes software developed by the University of
 22  *      California, Berkeley and its contributors.
 23  * 4. Neither the name of the University nor the names of its contributors
 24  *    may be used to endorse or promote products derived from this software
 25  *    without specific prior written permission.
 26  *
 27  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 28  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 30  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 31  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 32  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 33  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 34  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 35  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 36  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 37  * SUCH DAMAGE.
 38  *
 39  *
 40  * File: am-utils/amd/amfs_linkx.c
 41  *
 42  */
 43 
 44 /*
 45  * Symbol-link file system, with test that the target of the link exists.
 46  */
 47 
 48 #ifdef HAVE_CONFIG_H
 49 # include <config.h>
 50 #endif /* HAVE_CONFIG_H */
 51 #include <am_defs.h>
 52 #include <amd.h>
 53 
 54 /* forward declarations */
 55 static int amfs_linkx_mount(am_node *mp, mntfs *mf);
 56 static int amfs_linkx_umount(am_node *mp, mntfs *mf);
 57 
 58 /*
 59  * linkx operations
 60  */
 61 struct am_ops amfs_linkx_ops =
 62 {
 63   "linkx",
 64   amfs_link_match,
 65   0,                            /* amfs_linkx_init */
 66   amfs_linkx_mount,
 67   amfs_linkx_umount,
 68   amfs_error_lookup_child,
 69   amfs_error_mount_child,
 70   amfs_error_readdir,
 71   0,                            /* amfs_linkx_readlink */
 72   0,                            /* amfs_linkx_mounted */
 73   0,                            /* amfs_linkx_umounted */
 74   amfs_generic_find_srvr,
 75   0,                            /* amfs_linkx_get_wchan */
 76   FS_MBACKGROUND,
 77 #ifdef HAVE_FS_AUTOFS
 78   AUTOFS_LINKX_FS_FLAGS,
 79 #endif /* HAVE_FS_AUTOFS */
 80 };
 81 
 82 
 83 static int
 84 amfs_linkx_mount(am_node *mp, mntfs *mf)
 85 {
 86   /*
 87    * Check for existence of target.
 88    */
 89   struct stat stb;
 90   char *ln;
 91 
 92   if (mp->am_link)
 93     ln = mp->am_link;
 94   else                          /* should never occur */
 95     ln = mf->mf_mount;
 96 
 97   /*
 98    * Use lstat, not stat, since we don't
 99    * want to know if the ultimate target of
100    * a symlink chain exists, just the first.
101    */
102   if (lstat(ln, &stb) < 0)
103     return errno;
104 
105   return 0;
106 }
107 
108 
109 static int
110 amfs_linkx_umount(am_node *mp, mntfs *mf)
111 {
112   return 0;
113 }
114 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
This page is hosted at the Filesystems and Storage Lab at Stony Brook.