|
Packit |
dd8086 |
#!/bin/sh
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# check_iso_read.sh
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# Author: Leo Baschy
|
|
Packit |
dd8086 |
# Some small adaptions made to make it work in libcdio's test suite by
|
|
Packit |
dd8086 |
# rocky.
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# takes zero, one, or two optional parameters in any order
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# ONE optional parameter:
|
|
Packit |
dd8086 |
# an integer number for approximate size of .iso file in megabytes,
|
|
Packit |
dd8086 |
# default is 1, for 1 megabyte,
|
|
Packit |
dd8086 |
# to test approximately 5 gigabytes pass 5000
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# OTHER optional parameter:
|
|
Packit |
dd8086 |
# the iso-read command you want to test,
|
|
Packit |
dd8086 |
# default is iso-read,
|
|
Packit |
dd8086 |
# has to be named iso-read to be recognized,
|
|
Packit |
dd8086 |
# could be for example src/iso-read
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# Set environment variable VERBOSE=1 for more verbose output
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
RM='@RM@'
|
|
Packit |
dd8086 |
VERBOSE=${VERBOSE:-0}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# Run $@ capturing output. Show output on an error or if VERBOSE is
|
|
Packit |
dd8086 |
# set.
|
|
Packit |
dd8086 |
run_cmd() {
|
|
Packit |
dd8086 |
output=`$@ 2>&1`
|
|
Packit |
dd8086 |
if [ $? -ne 0 -o $VERBOSE -ne 0 ]; then
|
|
Packit |
dd8086 |
echo >&2 -- $output
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# Remove file $1 if that file exists
|
|
Packit |
dd8086 |
rm_if_exists() {
|
|
Packit |
dd8086 |
file=$1
|
|
Packit |
dd8086 |
[ -f $file ] && $RM $file
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# Remove driectory $1 if that directory exists
|
|
Packit |
dd8086 |
rmdir_if_exists() {
|
|
Packit |
dd8086 |
dir=$1
|
|
Packit |
dd8086 |
[ -d $dir ] && $RM -r $dir
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
cleanup() {
|
|
Packit |
dd8086 |
for i in 0 1 2 3 4 5 6 7 8 9 ; do
|
|
Packit |
dd8086 |
rm_if_exists 1Mfile${i}s-read.txt
|
|
Packit |
dd8086 |
done
|
|
Packit |
dd8086 |
for file in exampleIso1M.iso exampleIso1M.iso.tar.gz; do
|
|
Packit |
dd8086 |
rm_if_exists $file
|
|
Packit |
dd8086 |
done
|
|
Packit |
dd8086 |
rmdir_if_exists exampleIso1M.iso.prep
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# in $1 or $2 accept integer number as total .iso size in megabytes
|
|
Packit |
dd8086 |
case "$1" in
|
|
Packit |
dd8086 |
[0-9]* )
|
|
Packit |
dd8086 |
size="$1" ;;
|
|
Packit |
dd8086 |
*)
|
|
Packit |
dd8086 |
case "$2" in
|
|
Packit |
dd8086 |
[0-9]* )
|
|
Packit |
dd8086 |
size="$2" ;;
|
|
Packit |
dd8086 |
*)
|
|
Packit |
dd8086 |
size="1" ;; # default
|
|
Packit |
dd8086 |
esac
|
|
Packit |
dd8086 |
;;
|
|
Packit |
dd8086 |
esac
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# in $1 or $2 accept a different location for iso-read,
|
|
Packit |
dd8086 |
# e.g. ~/libcdio/src/iso-read
|
|
Packit |
dd8086 |
case "$1" in
|
|
Packit |
dd8086 |
iso-read )
|
|
Packit |
dd8086 |
ISO_READ="$1" ;;
|
|
Packit |
dd8086 |
*)
|
|
Packit |
dd8086 |
case "$2" in
|
|
Packit |
dd8086 |
iso-read )
|
|
Packit |
dd8086 |
ISO_READ="$2" ;;
|
|
Packit |
dd8086 |
*)
|
|
Packit |
dd8086 |
ISO_READ="../src/iso-read" ;;
|
|
Packit |
dd8086 |
esac
|
|
Packit |
dd8086 |
;;
|
|
Packit |
dd8086 |
esac
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
if [ ! -x ${ISO_READ} ]; then
|
|
Packit |
dd8086 |
echo "-- $0: No ${ISO_READ}. Skipping."
|
|
Packit |
dd8086 |
exit 77
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
echo "-- Going to use ${ISO_READ}."
|
|
Packit |
dd8086 |
echo "-- " `$ISO_READ --version`
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# pick for your system,
|
|
Packit |
dd8086 |
# on a Mac mkisofs, otherwise people use newer genisoimage
|
|
Packit |
dd8086 |
isomakingcommand="@ISO_MAKING_COMMAND@"
|
|
Packit |
dd8086 |
if [ -z "$isomakingcommand" ]
|
|
Packit |
dd8086 |
then
|
|
Packit |
dd8086 |
echo "-- $0: Neither mkisofs nor genisoimage found. Skipping."
|
|
Packit |
dd8086 |
exit 77
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
echo "-- Working with a $size megabyte large .iso file in $datadir ."
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
isoname="exampleIso"$size"M.iso"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
prepdir="prep"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
if [ ! -f "$isoname" ]
|
|
Packit |
dd8086 |
then
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
echo "-- Going to use " `which "$isomakingcommand"` " to prepare $isoname in $isoname.$prepdir ."
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
mkdir "$isoname.$prepdir"
|
|
Packit |
dd8086 |
mkdir "$isoname.$prepdir"/mixed
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# a large file with many of the same characters that will compress well
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\060' > "$isoname.$prepdir/mixed/file0l.txt"
|
|
Packit |
dd8086 |
# a small file we will want to iso-read
|
|
Packit |
dd8086 |
echo "content of short text file #0 we are looking for" > "$isoname.$prepdir/mixed/file0s.txt"
|
|
Packit |
dd8086 |
# a few times over now
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\061' > "$isoname.$prepdir/mixed/file1l.txt"
|
|
Packit |
dd8086 |
echo "content of short text file #1 we are looking for" > "$isoname.$prepdir/mixed/fileOneSmall.txt"
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\062' > "$isoname.$prepdir/mixed/file2l.txt"
|
|
Packit |
dd8086 |
echo "content of short text file #2 we are looking for" > "$isoname.$prepdir/mixed/file2small.txt"
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\063' > "$isoname.$prepdir/mixed/file3l.txt"
|
|
Packit |
dd8086 |
echo "content of short text file #3 we are looking for" > "$isoname.$prepdir/mixed/file3ThreeSmall.txt"
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\064' > "$isoname.$prepdir/mixed/file4l.txt"
|
|
Packit |
dd8086 |
echo "content of short text file #4 we are looking for" > "$isoname.$prepdir/mixed/fileFourS.txt"
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\065' > "$isoname.$prepdir/mixed/file5l.txt"
|
|
Packit |
dd8086 |
echo "content of short text file #5 we are looking for" > "$isoname.$prepdir/mixed/file5small.txt"
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\066' > "$isoname.$prepdir/mixed/file6l.txt"
|
|
Packit |
dd8086 |
echo "content of short text file #6 we are looking for" > "$isoname.$prepdir/mixed/file6s.txt"
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\067' > "$isoname.$prepdir/mixed/file7l.txt"
|
|
Packit |
dd8086 |
echo "content of short text file #7 we are looking for" > "$isoname.$prepdir/mixed/fileSevenSmall.txt"
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\068' > "$isoname.$prepdir/mixed/file8l.txt"
|
|
Packit |
dd8086 |
echo "content of short text file #8 we are looking for" > "$isoname.$prepdir/mixed/file8s.txt"
|
|
Packit |
dd8086 |
run_cmd dd if=/dev/zero bs=1024 count=$size"00" | tr '\0' '\069' > "$isoname.$prepdir/mixed/file9l.txt"
|
|
Packit |
dd8086 |
echo "content of short text file #9 we are looking for" > "$isoname.$prepdir/mixed/file9s.txt"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# a potentially huge .iso file, whatever you wrote above
|
|
Packit |
dd8086 |
run_cmd "$isomakingcommand" -r -J -T -f -V "EXAMPLEISO"$size"M" -o "$isoname" "$isoname.$prepdir"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# if you want to archive a test file, this compressed one is much smaller,
|
|
Packit |
dd8086 |
# seen 4KB instead of 1MB, seen 5MB instead of 5GB
|
|
Packit |
dd8086 |
v_opt=''
|
|
Packit |
dd8086 |
[ $VERBOSE -ne 0 ] && v_opt='-v'
|
|
Packit |
dd8086 |
tar $v_opt -cf "$isoname.tar" "$isoname"
|
|
Packit |
dd8086 |
gzip $v_opt -9 "$isoname.tar"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
echo "-- Using existing $isoname ."
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# remind of disk space use
|
|
Packit |
dd8086 |
# ls -al
|
|
Packit |
dd8086 |
# du -h .
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
echo "
|
|
Packit |
dd8086 |
-- ----------------------------------------
|
|
Packit |
dd8086 |
-- Size $size megabyte .iso file read back:
|
|
Packit |
dd8086 |
-- ----------------------------------------
|
|
Packit |
dd8086 |
"
|
|
Packit |
dd8086 |
for i in 0 1 2 3 4 5 6 7 8 9
|
|
Packit |
dd8086 |
do
|
|
Packit |
dd8086 |
echo "didn't read file #$i" > $size"Mfile"$i"s-read.txt"
|
|
Packit |
dd8086 |
done
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/file0s.txt" -o $size"Mfile0s-read.txt"
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/fileOneSmall.txt" -o $size"Mfile1s-read.txt"
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/file2small.txt" -o $size"Mfile2s-read.txt"
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/file3ThreeSmall.txt" -o $size"Mfile3s-read.txt"
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/fileFourS.txt" -o $size"Mfile4s-read.txt"
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/file5small.txt" -o $size"Mfile5s-read.txt"
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/file6s.txt" -o $size"Mfile6s-read.txt"
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/fileSevenSmall.txt" -o $size"Mfile7s-read.txt"
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/file8s.txt" -o $size"Mfile8s-read.txt"
|
|
Packit |
dd8086 |
"$ISO_READ" -i "$isoname" -e "mixed/file9s.txt" -o $size"Mfile9s-read.txt"
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
anybad=0
|
|
Packit |
dd8086 |
for i in 0 1 2 3 4 5 6 7 8 9
|
|
Packit |
dd8086 |
do
|
|
Packit |
dd8086 |
readback=`cat $size"Mfile"$i"s-read.txt"`
|
|
Packit |
dd8086 |
if [ "$readback" = "content of short text file #$i we are looking for" ]
|
|
Packit |
dd8086 |
then
|
|
Packit |
dd8086 |
echo "-- file #$i read back OK: $readback"
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
anybad=1
|
|
Packit |
dd8086 |
echo "file #$i read DEFECT : $readback"
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
done
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
cleanup
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
if [ $anybad -eq 0 ]
|
|
Packit |
dd8086 |
then
|
|
Packit |
dd8086 |
echo "-- $0: Overall success of $0 :)"
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
echo "$0: Overall FAILURE of $0 :("
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
exit $anybad
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# if it worked correctly you should see the lines we wrote into the short files:
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# content of short text file #i we are looking for
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# IF however defect https://savannah.gnu.org/bugs/?39373 is still
|
|
Packit |
dd8086 |
# in effect you might see lines such as:
|
|
Packit |
dd8086 |
# 111111111111111111111111111111111111
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# furthermore, IF however defect https://savannah.gnu.org/bugs/?39354 is still
|
|
Packit |
dd8086 |
# in effect you might see lines such as:
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# iso-read: Could not get ISO-9660 file information out of $isoname for file mixed/file2small.txt.
|
|
Packit |
dd8086 |
# iso-read: iso-info may be able to show the contents of $isoname.
|