exportfs.sh revision 7c478bd95313f5f23a4c958a745db2134aa03244
#!/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 $?