home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / bin / zdiff < prev    next >
Text File  |  1999-01-22  |  2KB  |  74 lines

  1. #!/bin/sh
  2. # sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
  3.  
  4. # Zcmp and zdiff are used to invoke the cmp or the  diff  pro-
  5. # gram  on compressed files.  All options specified are passed
  6. # directly to cmp or diff.  If only 1 file is specified,  then
  7. # the  files  compared  are file1 and an uncompressed file1.gz.
  8. # If two files are specified, then they are  uncompressed  (if
  9. # necessary) and fed to cmp or diff.  The exit status from cmp
  10. # or diff is preserved.
  11.  
  12. PATH="/usr/bin:$PATH"; export PATH
  13. prog=`echo $0 | sed 's|.*/||'`
  14. case "$prog" in
  15.   *cmp) comp=${CMP-cmp}   ;;
  16.   *)    comp=${DIFF-diff} ;;
  17. esac
  18.  
  19. OPTIONS=
  20. FILES=
  21. for ARG
  22. do
  23.     case "$ARG" in
  24.     -*)    OPTIONS="$OPTIONS $ARG";;
  25.      *)    if test -f "$ARG"; then
  26.             FILES="$FILES $ARG"
  27.         else
  28.             echo "${prog}: $ARG not found or not a regular file"
  29.         exit 1
  30.         fi ;;
  31.     esac
  32. done
  33. if test -z "$FILES"; then
  34.     echo "Usage: $prog [${comp}_options] file [file]"
  35.     exit 1
  36. fi
  37. tmp=`tempfile -d /tmp -p gz` || {
  38.       echo 'cannot create a temporary file' >&2
  39.       exit 1
  40. }
  41. set $FILES
  42. if test $# -eq 1; then
  43.     FILE=`echo "$1" | sed 's/[-.][zZtga]*$//'`
  44.     gzip -cd "$1" | $comp $OPTIONS - "$FILE"
  45.     STAT="$?"
  46.  
  47. elif test $# -eq 2; then
  48.     case "$1" in
  49.         *[-.]gz* | *[-.][zZ] | *.t[ga]z)
  50.                 case "$2" in
  51.             *[-.]gz* | *[-.][zZ] | *.t[ga]z)
  52.             F=`echo "$2" | sed 's|.*/||;s|[-.][zZtga]*||'`
  53.                         gzip -cdfq "$2" > $tmp
  54.                         gzip -cdfq "$1" | $comp $OPTIONS - $tmp
  55.                         STAT="$?"
  56.             /bin/rm -f $tmp;;
  57.  
  58.                 *)      gzip -cdfq "$1" | $comp $OPTIONS - "$2"
  59.                         STAT="$?";;
  60.                 esac;;
  61.         *)      case "$2" in
  62.             *[-.]gz* | *[-.][zZ] | *.t[ga]z)
  63.                         gzip -cdfq "$2" | $comp $OPTIONS "$1" -
  64.                         STAT="$?";;
  65.                 *)      $comp $OPTIONS "$1" "$2"
  66.                         STAT="$?";;
  67.                 esac;;
  68.     esac
  69.         exit "$STAT"
  70. else
  71.     echo "Usage: $prog [${comp}_options] file [file]"
  72.     exit 1
  73. fi
  74.