diff options
author | kientzle <kientzle@FreeBSD.org> | 2008-08-28 06:40:22 +0000 |
---|---|---|
committer | kientzle <kientzle@FreeBSD.org> | 2008-08-28 06:40:22 +0000 |
commit | 76addb3012d6a9cd997f9b0d7f5be30a45a935e3 (patch) | |
tree | 8f17c4b0f44efc889c7941f6f05a012310fe2f95 /lib/libarchive/archive_write_disk.c | |
parent | a2f8dd04c45222a306295bfed8802375da4073b0 (diff) | |
download | FreeBSD-src-76addb3012d6a9cd997f9b0d7f5be30a45a935e3.zip FreeBSD-src-76addb3012d6a9cd997f9b0d7f5be30a45a935e3.tar.gz |
If no atime was specified (for example, when extracting from ustar
archives), set atime == mtime. Before this, atime would get restored
to 0.
Diffstat (limited to 'lib/libarchive/archive_write_disk.c')
-rw-r--r-- | lib/libarchive/archive_write_disk.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/libarchive/archive_write_disk.c b/lib/libarchive/archive_write_disk.c index ba0f49b..0d02e0d 100644 --- a/lib/libarchive/archive_write_disk.c +++ b/lib/libarchive/archive_write_disk.c @@ -1625,6 +1625,11 @@ set_time(struct archive_write_disk *a) times[0].tv_sec = archive_entry_atime(a->entry); times[0].tv_usec = archive_entry_atime_nsec(a->entry) / 1000; + /* If no atime was specified, use mtime instead. */ + if (times[0].tv_sec == 0 && times[0].tv_usec == 0) { + times[0].tv_sec = times[1].tv_sec; + times[0].tv_usec = times[1].tv_usec; + } #ifdef HAVE_FUTIMES if (a->fd >= 0 && futimes(a->fd, times) == 0) { return (ARCHIVE_OK); |