sys_stat: guarantee struct timespec
[gnulib.git] / ChangeLog
index ffbfe70..1768d74 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,67 @@
+2009-10-12  Eric Blake  <ebb9@byu.net>
+
+       sys_stat: guarantee struct timespec
+       * lib/sys_stat.in.h (includes): Always include <time.h>
+       * modules/sys_stat (Depends-on): Add time.
+       * tests/test-sys_stat.c: Guarantee struct timespec, as well as
+       mode_t permission values.
+       * doc/posix-headers/sys_stat.texi (sys/stat.h): Document how to
+       get at subsecond timestamps.
+
 2009-10-10  Eric Blake  <ebb9@byu.net>
 
+       futimens: new module
+       * modules/futimens: New file.
+       * lib/futimens.c (futimens): Likewise.
+       * m4/futimens.m4 (gl_FUNC_FUTIMENS): Likewise.
+       * lib/utimens.c (futimens): Avoid recursion into rpl_futimens, so
+       we can work around Linux bugs.
+       * m4/sys_stat_h.m4 (gl_SYS_STAT_H_DEFAULTS): Add witnesses.
+       * modules/sys_stat (Makefile.am): Substitute them.
+       * lib/sys_stat.in.h (futimens): Declare it.
+       * MODULES.html.sh (systems lacking POSIX:2008): Mention module.
+       * doc/posix-functions/futimens.texi (futimens): Likewise.
+       * modules/futimens-tests: New test.
+       * tests/test-futimens.c: Likewise.
+
+       utimens: introduce fdutimens
+       * lib/utimens.h (fdutimens): New prototype.
+       * lib/utimens.c (gl_futimens): Move guts...
+       (fdutimens): ...to new interface.
+       * tests/test-utimens.c (do_fdutimens): Use it.
+
+       utimens: add UTIME_NOW and UTIME_OMIT support
+       * lib/utimens.c (validate_timespec, update_timespec): New helper
+       functions.
+       (gl_futimens, lutimens): Use them.
+       * modules/utimens (Depends-on): Add gettime, lstat, stat-time,
+       stdbool, sys_stat.
+       (Link): Mention resulting library dependency.
+       * modules/utimecmp (Link): Likewise.
+       * modules/utimens-tests (Depends-on): Drop stat-time, stdbool.
+       (Makefile.am): Pick up library dependency.
+       * lib/sys_stat.in.h (UTIME_NOW, UTIME_OMIT): Guarantee a
+       definition.
+       * tests/test-sys_stat.c: Test the definitions.
+       * doc/posix-headers/sys_stat.texi (sys/stat.h): Document this.
+       * NEWS: Document library dependency.
+
+       utimecmp: support symlink timestamps
+       * lib/utimecmp.c (utimecmp): Use new interface.  Skip effort of
+       hashing when possible.  Use pathconf when available.
+       (SYSCALL_RESOLUTION): Recognize tighter resolution.
+       * modules/utimecmp (Depends-on): Add lstat.
+
+       utimens: add lutimens interface
+       * lib/utimens.c (lutimens): New function.
+       * m4/utimens.m4 (gl_UTIMENS): Check for lutimes.
+       * lib/utimens.h (lutimens): Declare new interface.
+       * tests/test-utimens.c (main): Enhance test.
+       * tests/test-lutimens.h (test_lutimens): New file.
+       * modules/utimens-tests (Files): Distribute it.
+       (Depends-on): Add symlink.
+       (configure.ac): Check for usleep.
+
        utimens: validate futimens usage
        * lib/utimens.c (gl_futimens): Require valid fd up front, using
        fewer syscalls on failure later on.  Avoid compiler warning on