59 lines
1.1 KiB
Bash
Executable File
59 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
cd $1
|
|
|
|
if [ "$2"x != ""x ] ; then
|
|
EXT="$2"
|
|
fi
|
|
|
|
CHECKSUMS="sha1 md5" # sha512 sha256
|
|
|
|
for SUM in $CHECKSUMS; do
|
|
UPSUM=`echo $SUM | tr 'a-z' 'A-Z'`
|
|
FILE=$UPSUM"SUMS"$EXT
|
|
echo "Clearing $FILE"
|
|
:> $FILE
|
|
done
|
|
|
|
# 2 calls to find here to get the ordering right - we *really* want to
|
|
# get the jigdo files first
|
|
for file in `find * -name \*.jigdo` `find * -name \*.iso`; do
|
|
case $file in
|
|
*.jigdo)
|
|
iso=${file%%.jigdo}.iso
|
|
JIGDO=1
|
|
;;
|
|
*.iso)
|
|
iso=$file
|
|
JIGDO=0
|
|
;;
|
|
*)
|
|
echo "Found unexpected file $file!"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
for SUM in $CHECKSUMS; do
|
|
UPSUM=`echo $SUM | tr 'a-z' 'A-Z'`
|
|
FILE=$UPSUM"SUMS"$EXT
|
|
SEARCH="$UPSUM"Sum
|
|
CMD="$SUM"sum
|
|
|
|
grep -q $iso $FILE
|
|
if [ $? -ne 0 ] ; then
|
|
CKSUM=""
|
|
if [ "$JIGDO" == 1 ] ; then
|
|
CKSUM=`zcat -f $file | awk "/Image Hex $SEARCH/ {print \\$5}"`
|
|
fi
|
|
if [ "$CKSUM"x != ""x ] ; then
|
|
echo "$CKSUM $iso" >> $FILE
|
|
else
|
|
echo "No Jigdo help for $SUM, doing it the long way with $CMD"
|
|
$CMD $iso >> $FILE
|
|
grep $iso $FILE
|
|
fi
|
|
fi
|
|
|
|
done
|
|
done
|