home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nfs / root / usr / sbin / exportfs / exportfs~
Text File  |  1998-08-19  |  4KB  |  145 lines

  1. #!/sbin/sh
  2.  
  3. # Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  4. #                                                                         
  5. #        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  6. #                   SANTA CRUZ OPERATION INC.                             
  7. #                                                                         
  8. #   The copyright notice above does not evidence any actual or intended   
  9. #   publication of such source code.                                      
  10.  
  11. #
  12. #    Copyright (c) 1982, 1986, 1988
  13. #    The Regents of the University of California
  14. #    All Rights Reserved.
  15. #    Portions of this document are derived from
  16. #    software developed by the University of
  17. #    California, Berkeley, and its contributors.
  18. #
  19.  
  20. #ident    "@(#)exportfs.sh    1.3"
  21. #ident    "$Header: $"
  22. #
  23. #  exportfs: compatibility script for SunOs command.  
  24. #
  25. #
  26. #          PROPRIETARY NOTICE (Combined)
  27. #  
  28. #  This source code is unpublished proprietary information
  29. #  constituting, or derived under license from AT&T's Unix(r) System V.
  30. #  In addition, portions of such source code were derived from Berkeley
  31. #  4.3 BSD under license from the Regents of the University of
  32. #  California.
  33. #  
  34. #  
  35. #  
  36. #          Copyright Notice 
  37. #  
  38. #  Notice of copyright on this source code product does not indicate 
  39. #  publication.
  40. #  
  41. #      (c) 1986,1987,1988,1989  Sun Microsystems, Inc.
  42. #      (c) 1983,1984,1985,1986,1987,1988,1989  AT&T.
  43. #            All rights reserved.
  44. #
  45.  
  46. LABEL="UX:exportfs"
  47. CATALOG="uxnfscmds"
  48.  
  49. USAGE="Usage: exportfs [-aviu] [-o options] directory\n"
  50. DFSTAB=/etc/dfs/dfstab
  51. OPTS="rw"
  52.  
  53. #
  54. # Translate from exportfs opts to share opts
  55. #
  56.  
  57. fixopts() {
  58.     IFS=, ; set - $OPTS ; IFS=" "
  59.     for i
  60.         do case $i in *access=* ) eval $i ;; esac ; done
  61.     if [ ! "$access" ] ; then return ; fi
  62.  
  63.     OPTS=""
  64.     for i
  65.     do
  66.         case $i in
  67.         rw=*     ) OPTS="$OPTS$i," ;;
  68.         ro | rw  ) OPTS="${OPTS}$i=$access," ; ropt="true" ;;
  69.         access=* ) ;;
  70.         *        ) OPTS="$OPTS$i," ;;
  71.         esac
  72.     done
  73.     if [ ! "$ropt" ] ; then OPTS="ro=$access,$OPTS" ; fi
  74.     OPTS=`echo $OPTS | sed 's/,$//'`
  75. }
  76.  
  77. bad() {
  78.     pfmt -l $LABEL -s action -g $CATALOG:52 "$USAGE" >&2
  79.     exit 1
  80. }
  81.  
  82. if set -- `getopt aviuo: $*` ; then : ; else bad ; fi
  83.  
  84. for i in $*
  85. do
  86.     case $i in
  87.     -a ) aflg="true" ; shift ;;    # share all nfs
  88.     -v ) vflg="true" ; shift ;;    # verbose
  89.     -i ) iflg="true" ; shift ;;    # ignore dfstab opts
  90.     -u ) uflg="true" ; shift ;;    # unshare
  91.     -o ) oflg="true" ; OPTS=$2 ; shift 2 ;;    # option string
  92.     -- ) shift ; break ;;
  93.     esac
  94. done
  95.  
  96. if [ $aflg ] ; then
  97.     if [ "$DIR" -o "$iflg" -o "$oflg"  ] ; then bad ; fi
  98.     if [ $uflg ] ; then
  99.         if [ $vflg ] ; then echo unshareall -F nfs ; fi
  100.         /usr/sbin/unshareall -F nfs
  101.     else
  102.         if [ $vflg ] ; then echo shareall -F nfs ; fi
  103.         /usr/sbin/shareall -F nfs
  104.     fi
  105.     exit $?
  106. fi
  107.  
  108. case $# in
  109.     0 ) if [ "$iflg" -o "$uflg" -o "$oflg" ] ; then bad ; fi
  110.         if [ "$vflg" ] ; then echo share -F nfs ; fi
  111.         /usr/sbin/share -F nfs
  112.         exit $? ;;
  113.  
  114.     1 ) DIR=$1 ;;
  115.     * ) bad ;;
  116. esac
  117.  
  118. if [ $uflg ] ; then
  119.     if [ "$iflg" -o "$oflg" ] ; then bad ; fi
  120.     if [ $vflg ] ; then echo unshare -F nfs $DIR ; fi
  121.     /usr/sbin/unshare -F nfs $DIR
  122.     exit $?
  123. fi
  124.  
  125. if [ $iflg ] ; then
  126.     if [ ! "$oflg" ] ; then bad ; fi
  127.     fixopts
  128.     if [ $vflg ] ; then echo share -F nfs -o $OPTS $DIR ; fi
  129.     /usr/sbin/share -F nfs -o $OPTS $DIR
  130. else
  131.     CMD=`grep $DIR'[     ]*$' $DFSTAB`
  132.     if [ "$CMD" = "" ] ; then
  133.         pfmt -l $LABEL -s error -g $CATALOG:53 "no entry for %s in %s\n" $DIR $DFSTAB >&2
  134.         exit 1
  135.     fi
  136.     if [ $oflg ] ; then
  137.         pfmt -l $LABEL -s warn -g $CATALOG:54 "supplied options ignored\n" >&2
  138.         vflg="true"
  139.     fi
  140.     if [ $vflg ] ; then echo $CMD ; fi
  141.     $CMD
  142. fi
  143. exit $?
  144.  
  145.