diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | sysdeps/mach/hurd/bits/stat.h | 59 | ||||
-rw-r--r-- | sysdeps/mach/hurd/xstatconv.c | 11 |
3 files changed, 58 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog index 768fecd874..31c33622f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2012-05-10 Thomas Schwinge <thomas@schwinge.name> + * sysdeps/mach/hurd/bits/stat.h (struct stat): Align to what is done + for Linux: use nsec instead of usec, as well as: + [__USE_MISC || __USE_XOPEN2K8] (st_atim, st_mtim, st_ctim): New + members of type struct timespec. + [__USE_MISC || __USE_XOPEN2K8] (st_atime, st_mtime, st_ctime): + New macros. + (struct stat64): Likewise. + (_STATBUF_ST_NSEC): New macro. + * sysdeps/mach/hurd/xstatconv.c (xstat64_conv): Adapt to that. + * hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Use __strtoul_internal rather than strtoul. diff --git a/sysdeps/mach/hurd/bits/stat.h b/sysdeps/mach/hurd/bits/stat.h index 15fcda117b..e6ffda8921 100644 --- a/sysdeps/mach/hurd/bits/stat.h +++ b/sysdeps/mach/hurd/bits/stat.h @@ -1,5 +1,4 @@ -/* Copyright (C) 1992-1994,1996,1997,1999,2000,2005,2010 - Free Software Foundation, Inc. +/* Copyright (C) 1992-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -58,12 +57,27 @@ struct stat __off64_t st_size; /* Size in bytes. */ #endif - __time_t st_atime; /* Access time, seconds */ - unsigned long int st_atime_usec; /* and microseconds. */ - __time_t st_mtime; /* Modification time, seconds */ - unsigned long int st_mtime_usec; /* and microseconds. */ - __time_t st_ctime; /* Status change time, seconds */ - unsigned long int st_ctime_usec; /* and microseconds. */ +#if defined __USE_MISC || defined __USE_XOPEN2K8 + /* 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 __blksize_t st_blksize; /* Optimal size for I/O. */ @@ -107,12 +121,24 @@ struct stat64 __off64_t st_size; /* Size in bytes. */ - __time_t st_atime; /* Access time, seconds */ - unsigned long int st_atime_usec; /* and microseconds. */ - __time_t st_mtime; /* Modification time, seconds */ - unsigned long int st_mtime_usec; /* and microseconds. */ - __time_t st_ctime; /* Status change time, seconds */ - unsigned long int st_ctime_usec; /* and microseconds. */ +#if defined __USE_MISC || defined __USE_XOPEN2K8 + /* 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. */ +#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 __blksize_t st_blksize; /* Optimal size for I/O. */ @@ -130,7 +156,10 @@ struct stat64 }; #endif -#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */ +/* Tell code we have these members. */ +#define _STATBUF_ST_BLKSIZE +/* Nanosecond resolution time values are supported. */ +#define _STATBUF_ST_NSEC /* Encoding of the file mode. */ diff --git a/sysdeps/mach/hurd/xstatconv.c b/sysdeps/mach/hurd/xstatconv.c index db704c6f30..ebe6471ac5 100644 --- a/sysdeps/mach/hurd/xstatconv.c +++ b/sysdeps/mach/hurd/xstatconv.c @@ -1,5 +1,5 @@ /* Convert between `struct stat' format, and `struct stat64' format. - Copyright (C) 2000,01,02 Free Software Foundation, Inc. + Copyright (C) 2000-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -41,12 +41,9 @@ xstat64_conv (struct stat *buf, const struct stat64 *buf64) buf->st_uid = buf64->st_uid; buf->st_gid = buf64->st_gid; buf->st_size = buf64->st_size; - buf->st_atime = buf64->st_atime; - buf->st_atime_usec = buf64->st_atime_usec; - buf->st_mtime = buf64->st_mtime; - buf->st_mtime_usec = buf64->st_mtime_usec; - buf->st_ctime = buf64->st_ctime; - buf->st_ctime_usec = buf64->st_ctime_usec; + buf->st_atim = buf64->st_atim; + buf->st_mtim = buf64->st_mtim; + buf->st_ctim = buf64->st_ctim; buf->st_blksize = buf64->st_blksize; buf->st_blocks = buf64->st_blocks; buf->st_author = buf64->st_author; |