From 89a70fbeb32b353fab713125f4f0d3e947594026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dag-Erling=20Sm=C3=B8rgrav?= Date: Fri, 22 Dec 2000 18:23:19 +0000 Subject: [PATCH] Warn if the size of the remote file isn't known. If the -R option was specified, don't truncate the local file even if its mtime is incorrect. PR: bin/23719 --- usr.bin/fetch/fetch.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/usr.bin/fetch/fetch.c b/usr.bin/fetch/fetch.c index 024d71e806d..a0796a76eb6 100644 --- a/usr.bin/fetch/fetch.c +++ b/usr.bin/fetch/fetch.c @@ -305,12 +305,15 @@ fetch(char *URL, char *path) goto success; } + if (us.size == -1) + warnx("%s: size of remote file is not known", path); if (v_level > 1) { if (sb.st_size != -1) fprintf(stderr, "local size / mtime: %lld / %ld\n", sb.st_size, sb.st_mtime); - fprintf(stderr, "remote size / mtime: %lld / %ld\n", - us.size, us.mtime); + if (us.size != -1) + fprintf(stderr, "remote size / mtime: %lld / %ld\n", + us.size, us.mtime); } /* open output file */ @@ -322,6 +325,12 @@ fetch(char *URL, char *path) if (!F_flag && us.mtime && sb.st_mtime != us.mtime) { /* no match! have to refetch */ fclose(f); + /* if precious, warn the user and give up */ + if (R_flag) { + warnx("%s: local modification time does not match remote", + path); + goto failure_keep; + } url->offset = 0; if ((f = fetchXGet(url, &us, flags)) == NULL) { warnx("%s: %s", path, fetchLastErrString);