#!/bin/bash cd $1 if [ "$2"x != ""x ] ; then EXT="$2" fi CHECKSUMS="sha512 sha256 sha1 md5" 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 CMD="$SUM"sum grep -q $iso $FILE if [ $? -ne 0 ] ; then CKSUM="" if [ "$JIGDO" == 1 ] ; then CKSUM=`zcat -f $file | grep -i "Image Hex $CMD" | \ awk '{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