1
0
Fork 0

Merging upstream version 0.3.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-24 04:51:19 +01:00
parent bcca16d621
commit 7777e97ea4
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
11 changed files with 181 additions and 270 deletions

View file

@ -7,12 +7,11 @@
LC_ALL=C
export LC_ALL
invocation_name=$0
args=
default_ext=.lz
diff_prog=diff
file1=
file2=
two_hyphens=0
# Loop over args
while [ x"$1" != x ] ; do
@ -28,25 +27,24 @@ while [ x"$1" != x ] ; do
echo
echo "Zcmp is a shortcut for \"zdiff --cmp\""
echo
echo "Usage: ${invocation_name} [OPTIONS] [DIFF_OPTIONS] FILE1 [FILE2]"
echo "Usage: $0 [OPTIONS] [DIFF_OPTIONS] FILE1 [FILE2]"
echo
echo "Compares FILE1 to FILE2. If FILE2 is omitted, compares FILE1 to the"
echo "uncompressed contents of FILE1.[gz|bz2|lz] (depending on the default"
echo "compressor selected). DIFF_OPTIONS are passed directly to diff or cmp."
echo "Compares FILE1 to FILE2. If FILE2 is omitted and FILE1 is compressed,"
echo "compares FILE1 to the file with the corresponding decompressed file"
echo "name (removes the extension from FILE1). If FILE2 is omitted and FILE1"
echo "is not compressed, compares FILE1 to the uncompressed contents of"
echo "FILE1.[gz|bz2|lz|xz] (the first one that is found)."
echo "DIFF_OPTIONS are passed directly to diff or cmp."
echo "The exit status from diff or cmp is preserved."
echo
echo "Options:"
echo " -h, --help display this help and exit"
echo " -V, --version output version information and exit"
echo " --gzip use gzip as default decompressor"
echo " --bzip2 use bzip2 as default decompressor"
echo " --lzip use lzip as default decompressor (default)"
echo " --xz use xz as default decompressor"
echo " --diff use diff to compare files (default)"
echo " --cmp use cmp to compare files"
echo
echo "Report bugs to lzip-bug@nongnu.org"
echo "Lzip home page: http://www.nongnu.org/lzip/lzip.html"
echo "Report bugs to zutils-bug@nongnu.org"
echo "Zutils home page: http://www.nongnu.org/zutils/zutils.html"
exit 0 ;;
--version | --ve* | -V)
echo "Zdiff VERSION"
@ -54,23 +52,15 @@ while [ x"$1" != x ] ; do
echo "This script is free software: you have unlimited permission"
echo "to copy, distribute and modify it."
exit 0 ;;
--gz*)
default_ext=.gz ;;
--bz*)
default_ext=.bz2 ;;
--lz*)
default_ext=.lz ;;
--xz*)
default_prog=xz ;;
--diff)
diff_prog=diff ;;
--cmp)
diff_prog=cmp ;;
-)
echo "${invocation_name}: reading from stdin not supported"
echo "$0: reading from stdin not supported"
exit 1 ;;
--)
shift; break ;;
shift; two_hyphens=1 ; break ;;
-?*)
args="${args} $1" ;;
*)
@ -80,30 +70,30 @@ while [ x"$1" != x ] ; do
done
# Loop over files
while [ x"$1" != x ] ; do
if [ "$1" != "--" ] ; then
if test -f "$1"; then
if test -z "${file1}"; then file1="$1"
for i in "$@" ; do
if [ "$i" = "--" ] && [ ${two_hyphens} = 0 ] ; then two_hyphens=1
else
if [ -f "$i" ]; then
if [ -z "${file1}" ]; then file1="$i"
else
if test -z "${file2}"; then file2="$1"
if [ -z "${file2}" ]; then file2="$i"
else
echo "${invocation_name}: Too many files; use --help for usage." 1>&2
echo "$0: Too many files; use --help for usage." 1>&2
fi
fi
else
echo "${invocation_name}: File \"$1\" not found or not a regular file" 1>&2
echo "$0: File \"$i\" not found or not a regular file" 1>&2
exit 1
fi
fi
shift
done
if test -z "${file1}"; then
echo "${invocation_name}: No files given; use --help for usage." 1>&2
if [ -z "${file1}" ]; then
echo "$0: No files given; use --help for usage." 1>&2
exit 1
fi
if test -z "${file2}"; then
if [ -z "${file2}" ]; then
case "${file1}" in
*.gz)
file2=`printf "%s" "${file1}" | sed 's/.gz$//'` ;;
@ -124,7 +114,14 @@ if test -z "${file2}"; then
*.txz)
file2=`printf "%s" "${file1}" | sed 's/txz$/tar/'` ;;
*)
file2="${file1}${default_ext}" ;;
if [ -f "${file1}.gz" ]; then file2="${file1}.gz"
elif [ -f "${file1}.bz2" ]; then file2="${file1}.bz2"
elif [ -f "${file1}.lz" ]; then file2="${file1}.lz"
elif [ -f "${file1}.xz" ]; then file2="${file1}.xz"
else
echo "$0: Compressed version of ${file1} not found; use --help for usage." 1>&2
exit 1
fi ;;
esac
fi
@ -144,8 +141,8 @@ case "${file2}" in
esac
retval=0
if test -n "${prog1}"; then
if test -n "${prog2}"; then
if [ -n "${prog1}" ]; then
if [ -n "${prog2}" ]; then
tmp_file=`mktemp "${TMPDIR:-/tmp}"/zdiff.XXXXXXXXXX` || {
echo 'cannot create a temporary file' 1>&2
exit 1
@ -159,7 +156,7 @@ if test -n "${prog1}"; then
retval=$?
fi
else
if test -n "${prog2}"; then
if [ -n "${prog2}" ]; then
${prog2} -cdfq -- "${file2}" | ${diff_prog} ${args} -- "${file1}" -
retval=$?
else