home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1994 February / psl_9403.zip / psl_9403 / DOS / COMMUNIC / HA221B.ZIP / INSTALL.SH < prev    next >
Text File  |  1991-11-15  |  3KB  |  102 lines

  1. #
  2. # uinstall  2.0a   12/19/90
  3. #           2.0d   01/07/91
  4. #           2.07   08/30/91  name change to uinstall (was install)
  5. #
  6. #  Xenix shell script to install driver
  7. #  (c) 1990-91 Hansco Information Technologies, Inc.
  8. #
  9. tmpdir=/tmp
  10. [ "$1" = "-n" ] && {
  11.    noinput=Y
  12.    shift
  13. }
  14. productname=$1
  15. drivername=$2
  16. version=$3
  17. masterfile=$4
  18. addnfile=$5
  19. [ -z "$6" ] || addnexpr=$6 
  20. #
  21. getyn() {
  22.         while   read resp
  23.         do      case $resp in
  24.                 [yY]*)  return 0                        ;;
  25.                 [nN]*)  return 1                        ;;
  26.                 *)      echo "Please enter Y or N: \c"  ;;
  27.                 esac
  28.         done
  29. }
  30. #
  31. # getcurver     - get the currently installed driver version
  32. #
  33. getcurver() {
  34.         curver=`sed -n "\\;# $productname V; {s;# $productname V;;;p;}" $dvrfile`
  35. }
  36. #
  37. # remove <file> - remove HIT/Ansi additions from <file>
  38. #
  39. remove() {
  40.         remfile=$1
  41.         cp $remfile $remfile.old
  42.         sed -n "\\;# $productname V;,\\;# END $productname; !p" $remfile.old >$remfile
  43. }
  44. #
  45. # install <file> <additions> [<expr>] - add <additions> to <file> before <expr>
  46. #
  47. install() {
  48.         insfile=$1
  49.         insaddn=$2
  50.         insexpr=$3
  51.         cp $insfile $insfile.old
  52.         sed "\\;\$productname; s;\$productname;$productname;g" $tmpdir/$insaddn | \
  53.         sed "\\;\$version; s;\$version;$version;g" >$tmpdir/addn
  54.         [ -z "$insexpr" ] && {
  55.            cat $tmpdir/addn >>$insfile
  56.            return
  57.         }
  58.         sed "\\;$insexpr; r $tmpdir/addn" $insfile.old >$insfile
  59. }       
  60. #
  61. # driver <file> <additions> <name> [<expr>] - install/update specified driver
  62. #       assumes $tmpdir = /tmp directory
  63. #               $version = install driver version
  64. #
  65. driver() {
  66.         dvrfile=$1
  67.         dvraddn=$2
  68.         dvrname=$3
  69.         dvrexpr=$4
  70.         [ -w "$dvrfile" ] || return 4
  71.         getcurver
  72.         installed=UPD
  73.         [ -z "$curver" ] && installed=NO
  74.         [ "$curver" = "$version" ] && installed=YES
  75.         case $installed in
  76.           YES)  echo "$dvrname is already installed."
  77.                 return 3
  78.                 ;;
  79.           UPD)  [ "$noinput" ] && {
  80.                         echo "\n$dvrname version $curver is currently installed." 
  81.                         echo "Please remove the driver and try again." 
  82.                         return 2
  83.                 }
  84.                 echo "\n$dvrname version $curver is currently installed."
  85.                 echo "Would you like to update to version $version? (y/n) \c"
  86.                 getyn && {
  87.                         remove $dvrfile 
  88.                         install $dvrfile $dvraddn $dvrexpr 
  89.                         echo "$dvrname updated." 
  90.                         return 1
  91.                 }
  92.                 ;;
  93.           NO)   install $dvrfile $dvraddn $dvrexpr
  94.                 echo "$dvrname installed."
  95.                 return 0
  96.                 ;;
  97.         esac
  98. }
  99. #
  100. driver $masterfile $addnfile "$productname $drivername" $addnexpr
  101. exit $?
  102.