diff options
author | des <des@FreeBSD.org> | 2011-09-27 15:57:13 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2011-09-27 15:57:13 +0000 |
commit | 0a0c98d37666027f8182714200e454406c6dd282 (patch) | |
tree | 9de46c1d714dddee2122b98b6290dd6b9b706a02 /usr.bin/fetch | |
parent | 42f9fc1b3f7f58b22e97447de2612dea4d1caae3 (diff) | |
download | FreeBSD-src-0a0c98d37666027f8182714200e454406c6dd282.zip FreeBSD-src-0a0c98d37666027f8182714200e454406c6dd282.tar.gz |
Followup to r225599: the fseek() was a no-op since the file was opened
in append mode. Open it in read-write mode instead. Also move the
fseek up one level to cover the (unlikely but not impossible) case where
the server accepts ranges but does not send a Content-Size header.
PR: bin/117277
MFC after: 3 weeks
Diffstat (limited to 'usr.bin/fetch')
-rw-r--r-- | usr.bin/fetch/fetch.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/usr.bin/fetch/fetch.c b/usr.bin/fetch/fetch.c index d0e97ec..267deac 100644 --- a/usr.bin/fetch/fetch.c +++ b/usr.bin/fetch/fetch.c @@ -540,7 +540,7 @@ fetch(char *URL, const char *path) goto failure; } /* we got it, open local file */ - if ((of = fopen(path, "a")) == NULL) { + if ((of = fopen(path, "r+")) == NULL) { warn("%s: fopen()", path); goto failure; } @@ -559,13 +559,13 @@ fetch(char *URL, const char *path) 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 */ - } + } + /* 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) { /* mirror mode, local file exists */ |