1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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}
|