1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
#!/bin/sh -e
. /usr/share/debconf/confmodule
TRY_CONTINUE=
TRY_REPEAT=
while true; do
case "$1" in
-c)
TRY_CONTINUE=1
shift
;;
-r)
TRY_REPEAT=1
shift
;;
-*)
echo "$0: unrecognized or invalid option $1" >&2
exit 1
;;
*)
break
;;
esac
done
url="$1"
dst="$2"
checksum="$3" # optional parameter
tmpdst="${dst:-/tmp/.test}.fetch-url.$$"
trap 'rm -f "$tmpdst"' EXIT HUP INT QUIT TERM
proto=${url%%://*}
. /usr/lib/fetch-url/$proto
protocol_fetch "$url" "$tmpdst" || exit $?
if [ "$checksum" ]; then
filesum=$(md5sum "$tmpdst" | cut -d' ' -f1)
if [ "$filesum" != "$checksum" ]; then
echo "ERROR: checksum mismatch on '$url' (sum is '$filesum', rather than the expected '$checksum')" >&2
exit 2
fi
fi
[ -z "$dst" ] || mv -f "$tmpdst" "$dst"
# the trap above discards $tmpdst at this point
|