home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume32 / gaps / part01 / get < prev    next >
Text File  |  1992-09-20  |  2KB  |  63 lines

  1. #!/bin/sh
  2. # GAPS version 4.0
  3. # get and put system - by Nadav Har'El
  4. # get: extract file from history
  5.  
  6. VERSION=0
  7. INPUT=
  8. OUTPUT=
  9. FILEFLG=
  10. USAGE="Usage: get [-<number version> or -v<named version>] [-o outfile] file"
  11.  
  12. while test "$1" != ""
  13. do
  14.     case "$1" in
  15.     -o)     OUTPUT=$2; shift ;;
  16.     -[0-9]|-[0-9][0-9]|-[0-9][0-9][0-9])    VERSION=$1 ;; # 1-999 versions
  17.     -v*)    VERSION=$1;;
  18.     -*)     echo "get: unknown argument $i" 1>&2; exit 1 ;;
  19.     *.H)    case "$FILEFLG" in
  20.         y)    echo "$USAGE" 1>&2
  21.             exit 1;;
  22.         esac
  23.         FILEFLG=y
  24.         case "$OUTPUT" in
  25.         "")    OUTPUT=`expr "$1" : '\(.*\)\.H'`
  26.         esac
  27.         INPUT=$1;;
  28.     *)    case "$FILEFLG" in
  29.         y)    echo "$USAGE" 1>&2
  30.             exit 1;;
  31.         esac
  32.         FILEFLG=y
  33.         case "$OUTPUT" in
  34.         "")    OUTPUT=$1
  35.         esac
  36.         INPUT=$1.H
  37.     esac
  38.     shift
  39. done
  40. case $FILEFLG in
  41. "")    echo "$USAGE" 1>&2
  42.     exit 1;;
  43. esac
  44. test -r $INPUT -a -f $INPUT ||
  45.     { echo "Get: Cannot open $INPUT for input" 1>&2; exit 1; }
  46. test -w $OUTPUT -a ! -d $OUTPUT -o ! -f $OUTPUT -a ! -d $OUTPUT -a \
  47.     ! -c $OUTPUT -a ! -b $OUTPUT ||
  48.     { echo "Get: Cannot open $OUTPUT for writing" 1>&2; exit 1; }
  49. case $VERSION in
  50. -v*)    VERSION=`ver "\`expr \"$VERSION\" : '^-v\(.*\)'\`" $INPUT` || exit 1;;
  51. esac
  52. trap 'rm -f /tmp/get.[ab]$$;exit 1' 1 2 3 15
  53. # split into current version and editing command
  54. sed <$INPUT '/^@@\^/q' >/tmp/get.a$$
  55. sed <$INPUT -n '/^@@\^/,$w /tmp/get.b'$$
  56. # preform the edits
  57. awk </tmp/get.b$$ '
  58.     /^@@\^/ { count++ }
  59.     !/^@@\^/ && count > 0 && count <= - '$VERSION'
  60.     END { print "$d"; print "w", "'$OUTPUT'" }
  61. ' | ed - /tmp/get.a$$
  62. rm -f /tmp/get.[ab]$$
  63.