OpenSolaris_b135/cmd/fs.d/nfs/exportfs/exportfs.sh

#!/sbin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License").  You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
#	  All Rights Reserved


#ident	"%Z%%M%	%I%	%E% SMI"
#!/bin/sh
#
#  exportfs: compatibility script for SunOs command.  
#

USAGE="Usage: exportfs [-aviu] [-o options] directory"
DFSTAB=/etc/dfs/dfstab
OPTS="rw"

#
# Translate from exportfs opts to share opts
#

fixopts() {
	IFS=, ; set - $OPTS ; IFS=" "
	for i
		do case $i in *access=* ) eval $i ;; esac ; done
	if [ ! "$access" ] ; then return ; fi

	OPTS=""
	for i
	do
		case $i in
		rw=*     ) OPTS="$OPTS$i," ;;
		ro | rw  ) OPTS="${OPTS}$i=$access," ; ropt="true" ;;
		access=* ) ;;
		*        ) OPTS="$OPTS$i," ;;
		esac
	done
	if [ ! "$ropt" ] ; then OPTS="ro=$access,$OPTS" ; fi
	OPTS=`echo $OPTS | sed 's/,$//'`
}

bad() {
	echo $USAGE >&2
	exit 1
}

PATH=/usr/sbin:/usr/bin:$PATH
export PATH

if set -- `getopt aviuo: $*` ; then : ; else bad ; fi

for i in $*
do
	case $i in
	-a ) aflg="true" ; shift ;;	# share all nfs
	-v ) vflg="true" ; shift ;;	# verbose
	-i ) iflg="true" ; shift ;;	# ignore dfstab opts
	-u ) uflg="true" ; shift ;;	# unshare
	-o ) oflg="true" ; OPTS=$2 ; shift 2 ;;	# option string
	-- ) shift ; break ;;
	esac
done

if [ $aflg ] ; then
	if [ "$DIR" -o "$iflg" -o "$oflg"  ] ; then bad ; fi
	if [ $uflg ] ; then
		if [ $vflg ] ; then echo unshareall -F nfs ; fi
		/usr/sbin/unshareall -F nfs
	else
		if [ $vflg ] ; then echo shareall -F nfs ; fi
		/usr/sbin/shareall -F nfs
	fi
	exit $?
fi

case $# in
	0 ) if [ "$iflg" -o "$uflg" -o "$oflg" ] ; then bad ; fi
	    if [ "$vflg" ] ; then echo share -F nfs ; fi
	    /usr/sbin/share -F nfs
	    exit $? ;;

	1 ) DIR=$1 ;;
	* ) bad ;;
esac

if [ $uflg ] ; then
	if [ "$iflg" -o "$oflg" ] ; then bad ; fi
	if [ $vflg ] ; then echo unshare -F nfs $DIR ; fi
	/usr/sbin/unshare -F nfs $DIR
	exit $?
fi

if [ $iflg ] ; then
	fixopts
	if [ $vflg ] ; then echo share -F nfs -o $OPTS $DIR ; fi
	/usr/sbin/share -F nfs -o $OPTS $DIR
else
	CMD=`grep $DIR'[ 	]*$' $DFSTAB`
	if [ "$CMD" = "" ] ; then
		echo "exportfs: no entry for $DIR in $DFSTAB" >&2
		exit 1
	fi
	if [ $oflg ] ; then
		echo "exportfs: supplied options ignored" >&2
		vflg="true"
	fi
	if [ $vflg ] ; then echo $CMD ; fi
	eval $CMD
fi
exit $?