shithub: riscv

Download patch

ref: a13ba7741f35528ea4b8764652101321f089a514
parent: e73ce8475e683c62d0335a18788d86ae92a010f0
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Tue Oct 9 22:45:11 EDT 2018

hget: do a HEAD request to check if the file is already complete (thanks miscief)

when we continue a download, make sure the file isnt already
complete, as otherwise the server might respond with a 416
as the range request will out of range.

--- a/rc/bin/hget
+++ b/rc/bin/hget
@@ -47,13 +47,24 @@
 	if(test -s $o)
 		s=`{ls -l $o | awk '{print $6}'}
 }
-if(! ~ $s 0)
-	r=($r 'Range: bytes='^$s^'-')
 <[3=0] <>/mnt/web/clone {
 	d=/mnt/web/^`{sed 1q}
 	if(~ $#b 1)
 		echo -n baseurl $b >[1=0]
 	echo -n url $1 >[1=0]
+	if(! ~ $s 0 && ~ $#p 0 && ~ $#P 0 && ~ $#m 0){
+		for(i in $r)
+			echo -n headers $i >[1=0]
+		echo -n request HEAD >[1=0]
+		<$d/body {
+			if(~ $s `{cat $d/contentlength >[2]/dev/null})       
+				exit ''
+		}
+		if(~ $#b 1)
+			echo -n baseurl $b >[1=0]
+		echo -n url $1 >[1=0]
+		r=($r 'Range: bytes='^$s^'-')
+	}
 	for(i in $r)
 		echo -n headers $i >[1=0]
 	if(~ $#m 1)