#!/sbin/runscript # Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 description="Mounts network shares according to /etc/fstab." have_nfs() { local IFS=\n x= set -- $(fstabinfo --fstype nfs,nfs4) for x in "$@" ; do ! fstabinfo --opts "${x}" | grep -q noauto && return 0 done return 1 } depend() { local myneed= myuse= pmap="portmap" nfsmounts= x [ -x /etc/init.d/rpcbind ] && pmap="rpcbind" # Only have Portmap as a dependency if there is a nfs mount in fstab that # is set to mount at boot if have_nfs ; then myneed="${myneed} ${pmap}" else myuse="${myuse} ${pmap}" fi need net ${myneed} use afc-client amd autofs dns nfs nfsmount ${myuse} } start() { local myneed= myuse= pmap="portmap" nfsmounts= [ -x /etc/init.d/rpcbind ] && pmap="rpcbind" local x= fs= for x in ${RC_NET_FS_LIST} ; do case "${x}" in nfs|nfs4) # If the nfsmount script took care of the nfs filesystems, # then there's no point in trying them twice service_started nfsmount && continue # Only try to mount NFS filesystems if portmap was started. # This is to fix "hang" problems for new users who do not # add portmap to the default runlevel. if have_nfs && ! service_started "${pmap}" ; then continue fi ;; esac fs="${fs}${fs:+,}${x}" done ebegin "Mounting network filesystems" mount -at ${fs} ewend $? "Could not mount all network filesystems!" return 0 } stop() { local x= fs= for x in ${RC_NET_FS_LIST} ; do fs="${fs}${fs:+,}${x}" done ebegin "Unmounting network filesystems" umount -at ${fs} local retval=$? eend ${retval} "Failed to simply unmount filesystems" if [ ${retval} -ne 0 ] ; then . "${RC_LIBDIR}/sh/rc-mount.sh" eindent fs= for x in ${RC_NET_FS_LIST} ; do fs="${fs:+|}${x}" done do_unmount "umount" "" "" "^(${fs})$" retval=$? eoutdent fi return ${retval} } # vim: set ts=4 :