aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/fetch
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2011-09-15 22:50:31 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2011-09-15 22:50:31 +0000
commita17e51c1085e32cd1f292be50393bbfbbd2a3f90 (patch)
tree5d0ccf30260a14251d299921f5b07e4cb0f69525 /usr.bin/fetch
parentab7e59168c9d24ff613c268084d33cc0acd63a7e (diff)
Notes
Diffstat (limited to 'usr.bin/fetch')
-rw-r--r--usr.bin/fetch/fetch.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/usr.bin/fetch/fetch.c b/usr.bin/fetch/fetch.c
index 7553bd8d10282..d0e97ec8b6e3c 100644
--- a/usr.bin/fetch/fetch.c
+++ b/usr.bin/fetch/fetch.c
@@ -522,6 +522,12 @@ fetch(char *URL, const char *path)
"does not match remote", path);
goto failure_keep;
}
+ } else if (url->offset > sb.st_size) {
+ /* gap between what we asked for and what we got */
+ warnx("%s: gap in resume mode", URL);
+ fclose(of);
+ of = NULL;
+ /* picked up again later */
} else if (us.size != -1) {
if (us.size == sb.st_size)
/* nothing to do */
@@ -551,6 +557,14 @@ fetch(char *URL, const char *path)
fclose(of);
of = NULL;
sb = nsb;
+ /* picked up again later */
+ }
+ /* seek to where we left off */
+ if (of != NULL && fseek(of, url->offset, SEEK_SET) != 0) {
+ warn("%s: fseek()", path);
+ fclose(of);
+ of = NULL;
+ /* picked up again later */
}
}
} else if (m_flag && sb.st_size != -1) {