diff options
author | des <des@FreeBSD.org> | 2005-12-30 23:36:26 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2005-12-30 23:36:26 +0000 |
commit | 60d5ca94464dd0d9e583b7aad5369ee1d653bc67 (patch) | |
tree | 7e4b503d5019179785ddd332ec549f20bebf0e5d /usr.bin/fetch/fetch.c | |
parent | 1ac616cdd4d9854e7304dc1af29769327ff6bb0c (diff) | |
download | FreeBSD-src-60d5ca94464dd0d9e583b7aad5369ee1d653bc67.zip FreeBSD-src-60d5ca94464dd0d9e583b7aad5369ee1d653bc67.tar.gz |
Only clear sb.st_size if it is clearly wrong or meaningless. This fixes
mirror mode.
PR: bin/86940
MFC after: 2 weeks
Diffstat (limited to 'usr.bin/fetch/fetch.c')
-rw-r--r-- | usr.bin/fetch/fetch.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/usr.bin/fetch/fetch.c b/usr.bin/fetch/fetch.c index e37e284..027c6f6 100644 --- a/usr.bin/fetch/fetch.c +++ b/usr.bin/fetch/fetch.c @@ -424,17 +424,17 @@ fetch(char *URL, const char *path) r = stat(path, &sb); if (r == 0 && r_flag && S_ISREG(sb.st_mode)) { url->offset = sb.st_size; - } else { + } else if (r == -1 || !S_ISREG(sb.st_mode)) { /* * Whatever value sb.st_size has now is either * wrong (if stat(2) failed) or irrelevant (if the * path does not refer to a regular file) */ sb.st_size = -1; - if (r == -1 && errno != ENOENT) { - warnx("%s: stat()", path); - goto failure; - } + } + if (r == -1 && errno != ENOENT) { + warnx("%s: stat()", path); + goto failure; } } |