diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2009-04-13 14:49:48 +0300 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2009-04-13 14:49:48 +0300 |
commit | 2f0bc9cd40f709152a0177c8e585c0757e9af9c9 (patch) | |
tree | 465625f251e5167cc749c004a679f3601f616606 /src/scripts/xzdiff | |
parent | Put the interesting parts of XZ Utils into the public domain. (diff) | |
download | xz-2f0bc9cd40f709152a0177c8e585c0757e9af9c9.tar.xz |
Quick & dirty update to support xz in diff/grep/more scripts.
Diffstat (limited to 'src/scripts/xzdiff')
-rwxr-xr-x | src/scripts/xzdiff | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/scripts/xzdiff b/src/scripts/xzdiff new file mode 100755 index 00000000..50179bb9 --- /dev/null +++ b/src/scripts/xzdiff @@ -0,0 +1,67 @@ +#!/bin/sh +# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh + +# xzcmp and xzdiff are used to invoke the cmp or the diff pro- +# gram on compressed files. All options specified are passed +# directly to cmp or diff. If only 1 file is specified, then +# the files compared are file1 and an uncompressed file1.xz. +# If two files are specified, then they are uncompressed and +# fed to cmp or diff. The exit status from cmp or diff is +# preserved. + +prog=`echo $0 | sed 's|.*/||'` +case "$prog" in + *cmp) comp=${CMP-cmp} ;; + *) comp=${DIFF-diff} ;; +esac + +OPTIONS= +FILES= +for ARG +do + case "$ARG" in + -*) OPTIONS="$OPTIONS $ARG";; + *) if test -f "$ARG"; then + FILES="$FILES $ARG" + else + echo "${prog}: $ARG not found or not a regular file" + exit 2 + fi ;; + esac +done +if test -z "$FILES"; then + echo "Usage: $prog [${comp}_options] file [file]" + exit 2 +fi +set $FILES +if test $# -eq 1; then + FILE=`echo "$1" | sed 's/[-.][almtxz]*$//'` + xz -dc "$1" | $comp $OPTIONS - "$FILE" + +elif test $# -eq 2; then + case "$1" in + *[-.]xz | *.txz | *[-.]lzma | *.tlz) + case "$2" in + *[-.]xz | *.txz | *[-.]lzma | *.tlz) + F=`echo "$2" | sed 's|.*/||;s|[-.][almtxz]*||'` + TF=`/usr/bin/mktemp ${TMPDIR:-/tmp}/"$F".XXXXXXXXXX` || exit 1 + trap 'rm -f "$TF"; exit 2' EXIT HUP INT PIPE TERM + xz -dc -- "$2" > "$TF" || exit + xz -dc -- "$1" | $comp $OPTIONS - "$TF" + STAT="$?" + rm -f "$TF" || STAT=2 + trap EXIT HUP INT PIPE TERM + exit $STAT;; + + *) xz -dc -- "$1" | $comp $OPTIONS - "$2";; + esac;; + *) case "$2" in + *[-.]xz | *.txz | *[-.]lzma | *.tlz) + xz -dc -- "$2" | $comp $OPTIONS "$1" -;; + *) $comp $OPTIONS "$1" "$2";; + esac;; + esac +else + echo "Usage: $prog [${comp}_options] file [file]" + exit 2 +fi |