bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gnulib support for st_birthtime (second revision of patch)


From: Eric Blake
Subject: Re: gnulib support for st_birthtime (second revision of patch)
Date: Tue, 27 Mar 2007 20:03:20 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Paul Eggert <eggert <at> CS.UCLA.EDU> writes:

> 
> Eric Blake <ebb9 <at> byu.net> writes:
> 
> > I would recommend getting rid of any test for st_spare1 or st_spare4 
> > in m4/stat-time.m4.
> 
> Thanks for mentioning this; I've always thought that using those
> "spare" fields was asking for trouble.  I installed the following;
> can you please check it?

Looks fine here.

> 
> > you should add a check for st_birthtim.tv_nsec,
> 
> That's also done in the patch below.  (Wasn't it already done?
> Anyway, it should be done now.)

Nope, still not done.  I'm checking in this:

2007-03-27  Eric Blake  <address@hidden>

        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.

Index: lib/stat-time.h
===================================================================
RCS file: /sources/gnulib/gnulib/lib/stat-time.h,v
retrieving revision 1.6
diff -u -r1.6 stat-time.h
--- lib/stat-time.h     27 Mar 2007 18:51:18 -0000      1.6
+++ lib/stat-time.h     27 Mar 2007 20:01:28 -0000
@@ -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 @@
 {
   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;
Index: m4/stat-time.m4
===================================================================
RCS file: /sources/gnulib/gnulib/m4/stat-time.m4,v
retrieving revision 1.6
diff -u -r1.6 stat-time.m4
--- m4/stat-time.m4     27 Mar 2007 18:51:18 -0000      1.6
+++ m4/stat-time.m4     27 Mar 2007 20:01:28 -0000
@@ -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],
 [
@@ -59,7 +60,8 @@
      #include <sys/stat.h>])
 ])
 
-# 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_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 <sys/types.h>
+         #include <sys/stat.h>])],
        [#include <sys/types.h>
        #include <sys/stat.h>])],
     [#include <sys/types.h>






reply via email to

[Prev in Thread] Current Thread [Next in Thread]