home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / etc / pcmcia / shared < prev   
Text File  |  1999-10-31  |  3KB  |  145 lines

  1. #
  2. # shared 1.13 1999/10/16 01:19:34 (David Hinds)
  3. #
  4.  
  5. umask 022
  6.  
  7. usage ()
  8. {
  9.     echo "usage: $0 [action] [device name]"
  10.     echo "  actions: start check stop suspend resume"
  11.     exit 1
  12. }
  13.  
  14. is_true ()
  15. {
  16.     [ "$1" = "y" -o "$1" = "Y" -o "$1" = "yes" -o "$1" = "YES" ]
  17. }
  18.  
  19. add_blkdev ()
  20. {
  21.     # usage: add_blkdev [device]
  22.     if is_true $DO_FSTAB ; then
  23.     echo "$1 $MOUNTPT ${FSTYPE:-auto} ${OPTS:-defaults} 0 0" >> /etc/fstab
  24.     fi
  25.     if is_true $DO_FSCK ; then
  26.     /sbin/fsck -Ta $1 || return 1
  27.     fi
  28.     if is_true $DO_MOUNT ; then
  29.     O=${OPTS:+-o $OPTS} ; FS=${FSTYPE:+-t $FSTYPE}
  30.     mount -v $O $FS $1 $MOUNTPT || return 1
  31.     fi
  32.     return 0
  33. }
  34.  
  35. add_parts ()
  36. {
  37.     # usage: add_parts [address] [parts]
  38.     RET=0
  39.     for PART in ${2:-""} ; do
  40.     # Get mount options for particular partitions
  41.     if [ "$PART" ] ; then
  42.         ADDRESS="$1,$PART"
  43.         unset DO_FSTAB DO_FSCK DO_MOUNT
  44.         . $0.opts
  45.     fi
  46.     add_blkdev /dev/$DEVICE$PART || RET=1
  47.     done
  48.     return $RET
  49. }
  50.  
  51. rm_blkdev ()
  52. {
  53.     # usage: rm_blkdev [device]
  54.     test -b $1 || return 1
  55.     fuser -s -k -m $1
  56.     if mount | fgrep "$1 on" ; then
  57.     umount -v $1 || return 1
  58.     fi
  59.     if is_true $DO_FSTAB ; then
  60.     fgrep -v $1 /etc/fstab > /etc/fstab.N
  61.     mv /etc/fstab.N /etc/fstab
  62.     fi
  63. }
  64.  
  65. rm_parts ()
  66. {
  67.     # usage: rm_parts [address] [parts]
  68.     BLK=/dev/$DEVICE
  69.     test -b $BLK || return 1
  70.     for PART in ${2:-""} ; do
  71.     if [ "$PART" ] ; then
  72.         ADDRESS="$1,$PART"
  73.         unset DO_FSTAB DO_FSCK DO_MOUNT
  74.         . $0.opts
  75.     fi
  76.     if is_true $DO_FSTAB ; then
  77.         fgrep -v "$BLK$PART " /etc/fstab > /etc/fstab.N
  78.         mv /etc/fstab.N /etc/fstab
  79.     fi
  80.     done
  81.     fuser -s -k -m /dev/${DEVICE}*
  82.     LIST=`mount | sed -ne "s+^\($BLK[0-9]*\) .*+\1+p"`
  83.     if [ "$LIST" ] ; then
  84.     for MT in $LIST ; do
  85.         umount -v $MT || return 1
  86.     done
  87.     fi
  88. }
  89.  
  90. chk_simple ()
  91. {
  92.     # usage: chk_simple [new-address]
  93.     ADDRESS=""
  94.     OLD=`set | grep -v '^OLD=' | md5sum`
  95.     ADDRESS=$1
  96.     . $0.opts
  97.     ADDRESS=""
  98.     NEW=`set | grep -v '^OLD=' | md5sum`
  99.     [ "$OLD" = "$NEW" ]
  100. }
  101.  
  102. chk_parts ()
  103. {
  104.     # usage: chk_parts [new-address]
  105.     OLD_ADDR=$ADDRESS
  106.     chk_simple $1 || return 1
  107.     if [ ! "$PARTS" ] ; then return 0 ; fi
  108.     for PART in $PARTS ; do
  109.     ADDRESS="$OLD_ADDR,$PART"
  110.     . $0.opts
  111.     chk_simple "$1,$PART" || return 1
  112.     done
  113. }
  114.  
  115. grep_stab ()
  116. {
  117.     # this should be cheaper than invoking "grep"
  118.     local CLASS DEV
  119.     while read SOCKET CLASS DRIVER INSTANCE DEV MAJOR MINOR ; do
  120.     if [ "$1" = "$DEV" ] ; then return 0 ; fi
  121.     done
  122.     return 1
  123. }
  124.  
  125. get_info ()
  126. {
  127.     if [ -d /var/state/pcmcia ] ; then
  128.     SCHEME=`cat /var/state/pcmcia/scheme`
  129.     STAB=/var/state/pcmcia/stab
  130.     elif [ -d /var/lib/pcmcia ] ; then
  131.     SCHEME=`cat /var/lib/pcmcia/scheme`
  132.     STAB=/var/lib/pcmcia/stab
  133.     else
  134.     SCHEME=`cat /var/lib/misc/pcmcia-scheme`
  135.     STAB=/var/run/stab
  136.     fi
  137.     if [ ! "$SCHEME" ] ; then SCHEME="default" ; fi
  138.     grep_stab $1 < $STAB || usage
  139. }
  140.  
  141. # A bit of stuff to do right away...
  142.  
  143. if [ $# -lt 2 ] ; then usage ; fi
  144. ACTION=$1 ; DEVICE=$2
  145.