summaryrefslogtreecommitdiffstats
path: root/ztest.in
diff options
context:
space:
mode:
Diffstat (limited to 'ztest.in')
-rw-r--r--ztest.in102
1 files changed, 102 insertions, 0 deletions
diff --git a/ztest.in b/ztest.in
new file mode 100644
index 0000000..f56c853
--- /dev/null
+++ b/ztest.in
@@ -0,0 +1,102 @@
+#! /bin/sh
+# Ztest - Test integrity of compressed files.
+# Copyright (C) 2009 Antonio Diaz Diaz.
+#
+# This script is free software: you have unlimited permission
+# to copy, distribute and modify it.
+
+LC_ALL=C
+export LC_ALL
+args=
+recursive=0
+two_hyphens=0
+
+# Loop over args until a filename is found
+while [ x"$1" != x ] ; do
+
+ case "$1" in
+ --help | --he* | -h)
+ echo "Ztest - Test integrity of compressed files."
+ echo
+ echo "Ztest verifies the integrity of the specified compressed files."
+ echo "Non-compressed files are ignored. If no files are specified, the"
+ echo "integrity of compressed data read from standard input is verified. Data"
+ echo "read from standard input must be all compressed with the same compressor."
+ echo "The supported compressors are bzip2, gzip, lzip and xz."
+ echo
+ echo "Usage: $0 [OPTIONS] [FILES]"
+ echo
+ echo "The exit status is 1 if any compressed file is corrupt, 0 otherwise."
+ echo
+ echo "Options:"
+ echo " -h, --help display this help and exit"
+ echo " -V, --version output version information and exit"
+ echo " -q, --quiet suppress all messages"
+ echo " -r, --recursive operate recursively on directories"
+ echo " -v, --verbose be verbose (a 2nd -v gives more)"
+ echo
+ 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 "Ztest VERSION"
+ echo "Copyright (C) 2009 Antonio Diaz Diaz."
+ echo "This script is free software: you have unlimited permission"
+ echo "to copy, distribute and modify it."
+ exit 0 ;;
+ -r | --re*)
+ recursive=1 ;;
+ -v | -vv | -vvv | --ve* | -q | --qu*)
+ args="${args} $1" ;;
+ --)
+ shift ; two_hyphens=1 ; break ;;
+ - | -?*)
+ ;;
+ *)
+ break ;;
+ esac
+ shift
+done
+
+if [ $# = 0 ] ; then
+ bindir=`echo "$0" | sed -e 's,[^/]*$,,'`
+ prog=`"${bindir}"zutils -t`
+ case "${prog}" in
+ bzip2 | gzip | lzip | xz)
+ ;;
+ *) echo "$0: Unknown data format read from stdin" 1>&2
+ exit 1 ;;
+ esac
+ { "${bindir}"zutils -m ${prog} ; cat ; } | ${prog} -t ${args}
+ exit $?
+fi
+
+retval=0
+for i in "$@" ; do
+ if [ "$i" = "--" ] && [ ${two_hyphens} = 0 ] ; then two_hyphens=1
+ else
+ if [ ! -f "$i" ] ; then
+ if [ ${recursive} = 1 ] && [ -d "$i" ] ; then
+ bad_files=`find "$i" -type f \( -exec "$0" ${args} '{}' ';' -o -print \)`
+ if [ ${retval} = 0 ] && [ -n "${bad_files}" ] ; then retval=1 ; fi
+ continue
+ else
+ echo "$0: File \"$i\" not found or not a regular file" 1>&2
+ if [ ${retval} = 0 ] ; then retval=1 ; fi
+ continue
+ fi
+ fi
+ bindir=`echo "$0" | sed -e 's,[^/]*$,,'`
+ prog=`"${bindir}"zutils -t -- "$i"`
+ case "${prog}" in
+ bzip2 | gzip | lzip | xz)
+ ;;
+ *) continue ;;
+ esac
+ ${prog} -t ${args} -- "$i"
+ r=$?
+ if [ $r != 0 ] ; then retval=$r ; fi
+ fi
+done
+
+exit ${retval}