diff options
Diffstat (limited to '')
-rw-r--r-- | ztest.in | 102 |
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} |