summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2005-12-30 23:36:26 +0000
committerdes <des@FreeBSD.org>2005-12-30 23:36:26 +0000
commit60d5ca94464dd0d9e583b7aad5369ee1d653bc67 (patch)
tree7e4b503d5019179785ddd332ec549f20bebf0e5d /usr.bin
parent1ac616cdd4d9854e7304dc1af29769327ff6bb0c (diff)
downloadFreeBSD-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')
-rw-r--r--usr.bin/fetch/fetch.c10
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;
}
}
OpenPOWER on IntegriCloud