diff options
Diffstat (limited to 'include/get.sh')
| -rw-r--r-- | include/get.sh | 26 | 
1 files changed, 17 insertions, 9 deletions
| diff --git a/include/get.sh b/include/get.sh index 74adb6be..4bcccceb 100644 --- a/include/get.sh +++ b/include/get.sh @@ -84,8 +84,11 @@ xbmkget()  	[ "$1" = "curl" ] || [ "$1" = "copy" ] || [ "$1" = "git" ] || \  	    err "Bad dlop (arg 1): xbmkget $*" +	echk="f" && [ "$1" = "git" ] && echk="d" +  	for url in "$2" "$3"; do -		[ -n "$url" ] && try_file "$url" "$@" && return 0 +		[ -n "$url" ] && try_file "$url" "$@" && \ +		    eval "[ -$echk \"$4\" ] && return 0"  	done && err "$1 $2 $3 $4: not downloaded"; :  } @@ -100,11 +103,10 @@ try_file()  	echk="d" && [ "$2" != "git" ] && echk="f" && \  	    bad_checksum "$6" "$cached" 2>/dev/null && x_ rm -f "$cached" -	e "$cached" $echk || try_$2 "$cached" "$@" || return 1 -	if e "$5" $echk && [ "$2" != "git" ]; then -		bad_checksum "$6" "$5" 2>/dev/null && x_ cp "$cached" "$5" -	fi -	e "$cached" $echk missing && return 1 +	eval "[ -$echk \"$cached\" ] || try_$2 \"\$cached\" \"\$@\" || return 1" +	[ "$2" != "git" ] && [ -f "$5" ] && \ +	    bad_checksum "$6" "$5" 2>/dev/null && x_ cp "$cached" "$5" +	eval "[ -$echk \"$cached\" ] || return 1"  	if [ "$2" = "git" ]; then  		tmpclone "$cached" "$5" "$6" "$7" || return 1 @@ -113,6 +115,8 @@ try_file()  		[ "$cached" != "$5" ] && x_ cp "$cached" "$5"  		bad_checksum "$6" "$5" && x_ rm -f "$5" && return 1; :  	fi + +	eval "[ -$echk \"$5\" ] || return 1"  }  try_curl() @@ -146,9 +150,13 @@ try_git()  bad_checksum()  { -	[ ! -f "$2" ] || [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] \ -	    || return 1 -	printf "Bad checksum for file: %s\n" "$2" 1>&2 +	[ ! -f "$2" ] && printf "File '%s' missing (sha512sum '%s')\n" \ +	    "$2" "$1" 1>&2 && return 0 +	fchksum="$(x_ sha512sum "$2" | awk '{print $1}')" || \ +	    err "Can't get sha512sum on '$2' (checking for sha512sum '$1')" +	[ "$fchksum" != "$1" ] || return 1 +	printf "WARNING: BAD checksum for '%s' - expected '%s', got '%s'\n" \ +	    "$2" "$1" "$fchksum" 1>&2  	x_ rm -f "$2"  } | 
