From: Eric Blake Date: Tue, 27 Mar 2007 20:03:47 +0000 (+0000) Subject: Support sub-second birthtime on cygwin. X-Git-Tag: cvs-readonly~650 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=4202d97c58ffc744a07a667f4d58d4929ab64677;p=gnulib.git Support sub-second birthtime on cygwin. * m4/stat-time.m4 (gl_STAT_BIRTHTIME): Also check for st_birthtim. * lib/stat-time.h (STAT_TIMESPEC): Adjust comments. (get_stat_birthtime): Also work with st_birthtim. --- diff --git a/ChangeLog b/ChangeLog index b8f5db0aa..b159f5682 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-03-27 Eric Blake + + Support sub-second birthtime on cygwin. + * m4/stat-time.m4 (gl_STAT_BIRTHTIME): Also check for st_birthtim. + * lib/stat-time.h (STAT_TIMESPEC): Adjust comments. + (get_stat_birthtime): Also work with st_birthtim. + 2007-03-27 Paul Eggert * lib/stat-time.h (USE_BIRTHTIME): Remove. diff --git a/lib/stat-time.h b/lib/stat-time.h index e98cee3e9..ffad8a1fc 100644 --- a/lib/stat-time.h +++ b/lib/stat-time.h @@ -27,8 +27,9 @@ /* STAT_TIMESPEC (ST, ST_XTIM) is the ST_XTIM member for *ST of type struct timespec, if available. If not, then STAT_TIMESPEC_NS (ST, ST_XTIM) is the nanosecond component of the ST_XTIM member for *ST, - if available. ST_XTIM can be st_atim, st_ctim, or st_mtim for - access, status change, or data modification time, respectively. + if available. ST_XTIM can be st_atim, st_ctim, st_mtim, or st_birthtim + for access, status change, data modification, or birth (creation) + time respectively. These macros are private to stat-time.h. */ #if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC @@ -146,7 +147,8 @@ get_stat_birthtime (struct stat const *st) { struct timespec t; -#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC +#if defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC \ + || defined HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC t = STAT_TIMESPEC (st, st_birthtim); #elif defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC t.tv_sec = st->st_birthtime; diff --git a/m4/stat-time.m4 b/m4/stat-time.m4 index 1460c82fb..84dc26f4a 100644 --- a/m4/stat-time.m4 +++ b/m4/stat-time.m4 @@ -9,12 +9,13 @@ dnl From Paul Eggert. -# st_atim.tv_nsec - Linux, Solaris +# st_atim.tv_nsec - Linux, Solaris, Cygwin # st_atimespec.tv_nsec - FreeBSD, NetBSD, if ! defined _POSIX_SOURCE # st_atimensec - FreeBSD, NetBSD, if defined _POSIX_SOURCE # st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1) # st_birthtimespec - FreeBSD, NetBSD (hidden on OpenBSD 3.9, anyway) +# st_birthtim - Cygwin 1.7.0+ AC_DEFUN([gl_STAT_TIME], [ @@ -43,7 +44,7 @@ AC_DEFUN([gl_STAT_TIME], [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no])]) if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then AC_DEFINE([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], 1, - [Define to 1 if the type of the st_atim member of a struct stat is + [Define to 1 if the type of the st_atim member of a struct stat is struct timespec.]) fi], [AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [], @@ -59,7 +60,8 @@ AC_DEFUN([gl_STAT_TIME], #include ]) ]) -# Check for st_birthtime, a feature from UFS2 (FreeBSD, NetBSD, OpenBSD, etc.). +# Check for st_birthtime, a feature from UFS2 (FreeBSD, NetBSD, OpenBSD, etc.) +# and NTFS (Cygwin). # There was a time when this field was named st_createtime (21 June # 2002 to 16 July 2002) But that window is very small and applied only # to development code, so systems still using that configuration are @@ -72,7 +74,10 @@ AC_DEFUN([gl_STAT_BIRTHTIME], AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_HEADERS_ONCE([sys/time.h]) AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec], [], - [AC_CHECK_MEMBERS([struct stat.st_birthtimensec], [], [], + [AC_CHECK_MEMBERS([struct stat.st_birthtimensec], [], + [AC_CHECK_MEMBERS([struct stat.st_birthtim.tv_nsec], [], [], + [#include + #include ])], [#include #include ])], [#include