From a5837f2c265afb7d9ec64df6246f2194d61b8f69 Mon Sep 17 00:00:00 2001 From: Nathan Whitehorn Date: Tue, 2 Jan 2018 05:22:54 +0000 Subject: [PATCH] Skip errors from being unable to set modification and creation times. If one of the directories in the filesystem hierarchy is a FAT mountpoint, settings its times will fail, which would cause installation to abort. Instead, make this a best-effort thing. Handling this error is a hack and a better internal scheme for handling this should be added to libarchive. --- usr.sbin/bsdinstall/distextract/distextract.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/usr.sbin/bsdinstall/distextract/distextract.c b/usr.sbin/bsdinstall/distextract/distextract.c index 95287a516401..81d83f982e30 100644 --- a/usr.sbin/bsdinstall/distextract/distextract.c +++ b/usr.sbin/bsdinstall/distextract/distextract.c @@ -310,7 +310,15 @@ extract_files(struct dpv_file_node *file, int out __unused) archive = NULL; file->status = DPV_STATUS_DONE; return (100); - } else if (retval != ARCHIVE_OK) { + } else if (retval != ARCHIVE_OK && + !(retval == ARCHIVE_WARN && + strcmp(archive_error_string(archive), "Can't restore time") == 0)) { + /* + * Print any warning/error messages except inability to set + * ctime/mtime, which is not fatal, or even interesting, + * for our purposes. Would be nice if this were a libarchive + * option. + */ snprintf(errormsg, sizeof(errormsg), "Error while extracting %s: %s\n", file->name, archive_error_string(archive));