On Friday 07 March 2008, Philip Hands wrote:
> Frans Pop wrote:
> > Or maybe use a switch to toggle between "continuation" and "full"
> > retries. Continuation retries probably make sense for larger files
> > (Packages comes to mind) for which the integrity can be checked
> > (md5sum).
> > Given the caveats in the wget manpage for -c, it may be safer to not do
> > continuation retries at all, but just do a full retry in other cases
> > (like fetching preseed files).
>
> OK, I've done -c as an option to fetch-url that adds a -c option to wget
> for the 3 retries that it tries if the initial wget fails.  I've also
> made preseed_fetch accept options and pass them onto fetch-url, so you
> can use -c in preseed scripts (for downloading udebs or debs, say)
Hmm. That is not what I had in mind. Also, you now *always* run with -c if 
it is passed (even on the first try) and I don't think that is desirable 
(and even very dangerous).
Let me show what I'm thinking in plain text^Wcode.
This supports two separate options -c and -r that probably should not be 
used at the same time.
I've thrown in preservation of the return code for free :-)
protocol_fetch() {
	local i j RET
	[other initial stuff and proxy]
	RET=0
	for i in 1 2; do
		wget -q "$url" -O "$file" || RET=$?
		[ $RET != 0 ] || return 0
		if [ "$ALLOW_CONTINUES" = yes ]; then
			for j in 1 2 3; do
				wget -c -q "$url" -O "$file" || RET=$?
				[ $RET != 0 ] || return 0
			done
		fi
		[ "$DO_REPEAT" = yes ] || break
	done
	return $RET
}
> Here's the patch, split in two as you suggested so that the first half
> is just the moving of fetch-url into di-utils:
>   http://hands.com/~phil/d-i/fetch-url.diff
Looks good. Some comments.
+++ b/packages/debian-installer-utils/fetch-url
+while true ; do
We normally don't do spaces before ;
+	case "$1" in
+		-c)
+			ALLOW_CONTINUES=yes
Current coding style prefers 4 spaces before options and then a single tab 
for the code (saves an indentation level and in most cases also bytes):
+	case "$1" in
+	    -c)
+		ALLOW_CONTINUES=yes
+++ b/packages/debian-installer-utils/fetch-url-methods/floppy
+	mountfloppy || true
+	touch /var/run/preseed-usedfloppy
+        
Trailing spaces on the last line (also in original, but still :-).
+++ b/packages/debian-installer-utils/fetch-url-methods/http
+	[ "$ALLOW_CONTINUES" = "yes" ] && local WGET_C="-c"
This breaks when run with 'set -e'.
+++ b/packages/preseed/preseed_fetch
+# eat options starting with a -, so we can pass them on
+while expr "$1" : "-" >/dev/null ; do
Doesn't this test for -'s anywhere in $1, not only at the start?
And space before ; again.
> and the second bit is the wget404 stuff:
>   http://hands.com/~phil/d-i/wget404.diff
Similar minor coding style issues and main patch will need rewrite depending 
on final version of protocol_fetch.
Cheers,
FJP
Attachment:
signature.asc
Description: This is a digitally signed message part.