#!/bin/bash VERBOSE=0 if [ "$1" = "-v" ] ; then VERBOSE=1 shift fi cd $1 if [ "$2"x != ""x ] ; then EXT="$2" fi if [ "$CHECKSUMS"x = ""x ] ; then CHECKSUMS="sha1 md5 sha512 sha256" fi for SUM in $CHECKSUMS; do UPSUM=$(echo $SUM | tr 'a-z' 'A-Z') FILE=$UPSUM"SUMS"$EXT if [ $VERBOSE -eq 1 ] ; then echo "Clearing $PWD/$FILE" fi :> $FILE done # Ordering is important in the "find" call here - we *really* want to # get the jigdo files before the iso files, so we can use the # checksums there first instead of re-calculating them for file in $(find * \ -name '*.jigdo' -o -name '*.template' \ -o -name '*.iso' -o -name '*.torrent'); do iso="" case $file in *.jigdo) iso=${file%%.jigdo}.iso JIGDO=1 ;; *.iso) iso=$file JIGDO=0 ;; *.template|*.torrent) ;; *) 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 if [ "$iso"x != ""x ]; then 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 grep $iso $FILE else echo "No Jigdo help for $SUM, doing it the long way with $CMD" $CMD $iso >> $FILE grep $iso $FILE fi fi fi # Also add the template, jigdo and torrent files to the SUMS, # if they exist case $file in *.template|*.jigdo|*.torrent) $CMD $file >> $FILE grep $file $FILE ;; esac done done