From c70c80d362d937273d5496837a02924f3d876c2b Mon Sep 17 00:00:00 2001 From: Stefan Fiedler Date: Thu, 2 Feb 2006 12:41:14 +0000 Subject: [PATCH] Stefan Fiedler: scripts/Download: avoid unnecessary bunzip operations for cksum tests [2005122913283116318] (https://www.rocklinux.net/submaster) git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@7000 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- scripts/Download | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/scripts/Download b/scripts/Download index b8134f2a0..6f4fa729d 100755 --- a/scripts/Download +++ b/scripts/Download @@ -273,17 +273,29 @@ descparser() { # Not doing anything if checksum is '0' or a text of 'X'. # cksum_chk() { - y="`echo $2 | sed 's,^0*,,;'`" - [ $nocheck = 1 -o -z "$y" -o -z "${2//X/}" ] && return 0 - x="`cksum "$1" | cut -f1 -d' ' | sed 's,^0*,,;'`" + local file="$1" cksum="$2" orig="$3" + + do_cksum_chk $cksum || return 0 + + x="`cksum "$file" | cut -f1 -d' ' | sed 's,^0*,,;'`" + y="`echo $cksum | sed 's,^0*,,;'`" if [ "$x" != "$y" ] ; then # Add .cksum-err extension to filename: - echo "Cksum ERROR: $3.cksum-err ($x)" - mv "$3" "$3.cksum-err" ; return 1 + echo "Cksum ERROR: $orig.cksum-err ($x)" + mv "$orig" "$orig.cksum-err" ; return 1 fi return 0 } +# Determine if a check should be done on files with the given cksum. +# +do_cksum_chk() { + local cksum="$1", y="`echo $cksum | sed 's,^0*,,;'`"; + + [ $nocheck = 1 -o -z "$y" -o -z "${cksum//X/}" ] && return 1 + return 0 +} + # Autodetect best Mirror and safe url in $mirror # detect_mirror() { @@ -513,7 +525,9 @@ download_file() { # Convert a .gz to .bz2 and test checksum # if [ "$gzfile" != "$bzfile" ] ; then - echo "bzip'ing + cksum-test: $gzfile" + do_cksum_chk $cksum \ + && echo "bzip'ing + cksum-test: $gzfile" \ + || echo "bzip'ing: $gzfile" gunzip < "$gzfile" > src/down.$$.dat if cksum_chk src/down.$$.dat $cksum "$gzfile" ; then bzip2 < src/down.$$.dat > "$bzfile" ; rm -f "$gzfile" @@ -525,12 +539,12 @@ download_file() { elif [ "${gzfile%.bz2}" != "$gzfile" -o \ "${gzfile%.tbz2}" != "$gzfile" ] then - echo "cksum-test (bzip2): $bzfile" - if [ $nocheck = 0 ] ; then + if [ $nocheck = 0 ] && do_cksum_chk $cksum ; then + echo "cksum-test (bzip2): $bzfile" bunzip2 < "$bzfile" > src/down.$$.dat cksum_chk src/down.$$.dat $cksum "$bzfile" + rm -f src/down.$$.dat fi - rm -f src/down.$$.dat # Execute a cksum test on a raw data file #