From: Michihiro NAKAJIMA Date: Wed, 18 Jan 2012 02:49:56 +0000 (-0500) Subject: For testing ctime at archive_matching, use mtime if ctime is not set. X-Git-Tag: v3.0.4~2^2~179 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=14c88dd28ec76d2f628429a5f61916f1c838ffe2;p=thirdparty%2Flibarchive.git For testing ctime at archive_matching, use mtime if ctime is not set. SVN-Revision: 4166 --- diff --git a/libarchive/archive_matching.c b/libarchive/archive_matching.c index 315a1e31d..8d49ddab2 100644 --- a/libarchive/archive_matching.c +++ b/libarchive/archive_matching.c @@ -1337,19 +1337,33 @@ time_excluded(struct archive_matching *a, struct archive_entry *entry) * If this file/dir is excluded by a time comparison, skip it. */ if (a->newer_ctime_filter) { - sec = archive_entry_ctime(entry); + /* If ctime is not set, use mtime instead. */ + if (archive_entry_ctime_is_set(entry)) + sec = archive_entry_ctime(entry); + else + sec = archive_entry_mtime(entry); if (sec < a->newer_ctime_sec) return (1); /* Too old, skip it. */ - nsec = archive_entry_ctime_nsec(entry); + if (archive_entry_ctime_is_set(entry)) + nsec = archive_entry_ctime_nsec(entry); + else + nsec = archive_entry_mtime_nsec(entry); if (sec == a->newer_ctime_sec && nsec <= a->newer_ctime_nsec) return (1); /* Too old, skip it. */ } if (a->older_ctime_filter) { - sec = archive_entry_ctime(entry); + /* If ctime is not set, use mtime instead. */ + if (archive_entry_ctime_is_set(entry)) + sec = archive_entry_ctime(entry); + else + sec = archive_entry_mtime(entry); if (sec > a->older_ctime_sec) return (1); /* Too new, skip it. */ - nsec = archive_entry_ctime_nsec(entry); + if (archive_entry_ctime_is_set(entry)) + nsec = archive_entry_ctime_nsec(entry); + else + nsec = archive_entry_mtime_nsec(entry); if (sec == a->older_ctime_sec && nsec >= a->older_ctime_nsec) return (1); /* Too new, skip it. */