bug-gnulib
[Top][All Lists]
Advanced

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

Re: stat-time systemology update?


From: Bruno Haible
Subject: Re: stat-time systemology update?
Date: Wed, 17 Oct 2007 12:37:00 +0200
User-agent: KMail/1.5.4

Stepan Kasal wrote:
>   the top of m4/stat-time.m4 says:
> 
> # 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)
> 
> But my GNU libc.info mentiones st_atimensec, but not st_atim.

Please look at the actual header files, not only at the documentation.

Among the bits/stat.h files in glibc,
  - those for Linux have this code:

#ifdef __USE_MISC
    /* Nanosecond resolution timestamps are stored in a format
       equivalent to 'struct timespec'.  This is the type used
       whenever possible but the Unix namespace rules do not allow the
       identifier 'timespec' to appear in the <sys/stat.h> header.
       Therefore we have to handle the use of this header in strictly
       standard-compliant sources special.  */
    struct timespec st_atim;            /* Time of last access.  */
    struct timespec st_mtim;            /* Time of last modification.  */
    struct timespec st_ctim;            /* Time of last status change.  */
# define st_atime st_atim.tv_sec        /* Backward compatibility.  */
# define st_mtime st_mtim.tv_sec
# define st_ctime st_ctim.tv_sec
#else
    __time_t st_atime;                  /* Time of last access.  */
    unsigned long int st_atimensec;     /* Nscecs of last access.  */
    __time_t st_mtime;                  /* Time of last modification.  */
    unsigned long int st_mtimensec;     /* Nsecs of last modification.  */
    __time_t st_ctime;                  /* Time of last status change.  */
    unsigned long int st_ctimensec;     /* Nsecs of last status change.  */
#endif

    And __USE_MISC is normally enabled by _GNU_SOURCE.

  - those for Hurd and BSD have this code:

    __time_t st_atime;          /* Time of last access.  */
    unsigned long int st_atime_usec;
    __time_t st_mtime;          /* Time of last modification.  */
    unsigned long int st_mtime_usec;
    __time_t st_ctime;          /* Time of last status change.  */
    unsigned long int st_ctime_usec;

> So it seems that platforms using GNU libc (GNU/Linux, Cygwin?) are
> converging towards POSIX.

I don't see much convergence here.

> Yes, this is a minor problem, but if this mail makes one of the
> portability wizards to do a rough adjustment of the comment, it might
> helt to the others.

Not only the comment. Also, glibc's st_atime_usec is not handled. But I
don't know whether it's actually filled.

Bruno





reply via email to

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