From owner-svn-src-all@FreeBSD.ORG Sat Mar 7 00:52:02 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9D4DD106564A; Sat, 7 Mar 2009 00:52:02 +0000 (UTC) (envelope-from kientzle@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8A8B18FC0A; Sat, 7 Mar 2009 00:52:02 +0000 (UTC) (envelope-from kientzle@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n270q2Ik033474; Sat, 7 Mar 2009 00:52:02 GMT (envelope-from kientzle@svn.freebsd.org) Received: (from kientzle@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n270q20w033470; Sat, 7 Mar 2009 00:52:02 GMT (envelope-from kientzle@svn.freebsd.org) Message-Id: <200903070052.n270q20w033470@svn.freebsd.org> From: Tim Kientzle Date: Sat, 7 Mar 2009 00:52:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r189466 - head/lib/libarchive X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Mar 2009 00:52:03 -0000 Author: kientzle Date: Sat Mar 7 00:52:02 2009 New Revision: 189466 URL: http://svn.freebsd.org/changeset/base/189466 Log: Merge r552,r559 from libarchive.googlecode.com: Support high-resolution timestamps on Tru64, AIX, and GNU Hurd. Thanks to Björn Jacke. Modified: head/lib/libarchive/archive_entry_copy_stat.c head/lib/libarchive/archive_entry_stat.c head/lib/libarchive/archive_read_support_format_mtree.c head/lib/libarchive/archive_write_disk.c Modified: head/lib/libarchive/archive_entry_copy_stat.c ============================================================================== --- head/lib/libarchive/archive_entry_copy_stat.c Sat Mar 7 00:36:50 2009 (r189465) +++ head/lib/libarchive/archive_entry_copy_stat.c Sat Mar 7 00:52:02 2009 (r189466) @@ -43,6 +43,18 @@ archive_entry_copy_stat(struct archive_e archive_entry_set_atime(entry, st->st_atime, st->st_atim.tv_nsec); archive_entry_set_ctime(entry, st->st_ctime, st->st_ctim.tv_nsec); archive_entry_set_mtime(entry, st->st_mtime, st->st_mtim.tv_nsec); +#elif HAVE_STRUCT_STAT_ST_MTIME_N + archive_entry_set_atime(entry, st->st_atime, st->st_atime_n); + archive_entry_set_ctime(entry, st->st_ctime, st->st_ctime_n); + archive_entry_set_mtime(entry, st->st_mtime, st->st_mtime_n); +#elif HAVE_STRUCT_STAT_ST_UMTIME + archive_entry_set_atime(entry, st->st_atime, st->st_uatime * 1000); + archive_entry_set_ctime(entry, st->st_ctime, st->st_uctime * 1000); + archive_entry_set_mtime(entry, st->st_mtime, st->st_umtime * 1000); +#elif HAVE_STRUCT_STAT_ST_MTIME_USEC + archive_entry_set_atime(entry, st->st_atime, st->st_atime_usec * 1000); + archive_entry_set_ctime(entry, st->st_ctime, st->st_ctime_usec * 1000); + archive_entry_set_mtime(entry, st->st_mtime, st->st_mtime_usec * 1000); #else archive_entry_set_atime(entry, st->st_atime, 0); archive_entry_set_ctime(entry, st->st_ctime, 0); Modified: head/lib/libarchive/archive_entry_stat.c ============================================================================== --- head/lib/libarchive/archive_entry_stat.c Sat Mar 7 00:36:50 2009 (r189465) +++ head/lib/libarchive/archive_entry_stat.c Sat Mar 7 00:52:02 2009 (r189466) @@ -90,6 +90,18 @@ archive_entry_stat(struct archive_entry st->st_atim.tv_nsec = archive_entry_atime_nsec(entry); st->st_ctim.tv_nsec = archive_entry_ctime_nsec(entry); st->st_mtim.tv_nsec = archive_entry_mtime_nsec(entry); +#elif HAVE_STRUCT_STAT_ST_MTIME_N + st->st_atime_n = archive_entry_atime_nsec(entry); + st->st_ctime_n = archive_entry_ctime_nsec(entry); + st->st_mtime_n = archive_entry_mtime_nsec(entry); +#elif HAVE_STRUCT_STAT_ST_UMTIME + st->st_uatime = archive_entry_atime_nsec(entry) / 1000; + st->st_uctime = archive_entry_ctime_nsec(entry) / 1000; + st->st_umtime = archive_entry_mtime_nsec(entry) / 1000; +#elif HAVE_STRUCT_STAT_ST_MTIME_USEC + st->st_atime_usec = archive_entry_atime_nsec(entry) / 1000; + st->st_ctime_usec = archive_entry_ctime_nsec(entry) / 1000; + st->st_mtime_usec = archive_entry_mtime_nsec(entry) / 1000; #endif #if HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC st->st_birthtimespec.tv_nsec = archive_entry_birthtime_nsec(entry); Modified: head/lib/libarchive/archive_read_support_format_mtree.c ============================================================================== --- head/lib/libarchive/archive_read_support_format_mtree.c Sat Mar 7 00:36:50 2009 (r189465) +++ head/lib/libarchive/archive_read_support_format_mtree.c Sat Mar 7 00:52:02 2009 (r189466) @@ -672,6 +672,15 @@ parse_file(struct archive_read *a, struc #elif HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC archive_entry_set_mtime(entry, st->st_mtime, st->st_mtim.tv_nsec); +#elif HAVE_STRUCT_STAT_ST_MTIME_N + archive_entry_set_mtime(entry, st->st_mtime, + st->st_mtime_n); +#elif HAVE_STRUCT_STAT_ST_UMTIME + archive_entry_set_mtime(entry, st->st_mtime, + st->st_umtime*1000); +#elif HAVE_STRUCT_STAT_ST_MTIME_USEC + archive_entry_set_mtime(entry, st->st_mtime, + st->st_mtime_usec*1000); #else archive_entry_set_mtime(entry, st->st_mtime, 0); #endif Modified: head/lib/libarchive/archive_write_disk.c ============================================================================== --- head/lib/libarchive/archive_write_disk.c Sat Mar 7 00:36:50 2009 (r189465) +++ head/lib/libarchive/archive_write_disk.c Sat Mar 7 00:52:02 2009 (r189466) @@ -2535,19 +2535,25 @@ older(struct stat *st, struct archive_en /* Definitely older. */ if (st->st_mtimespec.tv_nsec < archive_entry_mtime_nsec(entry)) return (1); - /* Definitely younger. */ - if (st->st_mtimespec.tv_nsec > archive_entry_mtime_nsec(entry)) - return (0); #elif HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC /* Definitely older. */ if (st->st_mtim.tv_nsec < archive_entry_mtime_nsec(entry)) return (1); - /* Definitely older. */ - if (st->st_mtim.tv_nsec > archive_entry_mtime_nsec(entry)) - return (0); +#elif HAVE_STRUCT_STAT_ST_MTIME_N + /* older. */ + if (st->st_mtime_n < archive_entry_mtime_nsec(entry)) + return (1); +#elif HAVE_STRUCT_STAT_ST_UMTIME + /* older. */ + if (st->st_umtime * 1000 < archive_entry_mtime_nsec(entry)) + return (1); +#elif HAVE_STRUCT_STAT_ST_MTIME_USEC + /* older. */ + if (st->st_mtime_usec * 1000 < archive_entry_mtime_nsec(entry)) + return (1); #else /* This system doesn't have high-res timestamps. */ #endif - /* Same age, so not older. */ + /* Same age or newer, so not older. */ return (0); }