+2009-10-18 Bruno Haible <bruno@clisp.org>
+
+ Implement nproc for IRIX.
+ * lib/nproc.c: Include <sys/sysmp.h>.
+ (num_processors): On IRIX systems, try sysmp.
+ * m4/nproc.m4 (gl_PREREQ_NPROC): Check for sys/sysmp.h and sysmp.
+
+2009-10-18 Bruno Haible <bruno@clisp.org>
+
+ Implement nproc for HP-UX.
+ * lib/nproc.c: Include <sys/pstat.h>
+ (num_processors): On HP-UX systems, try pstat_getdynamic.
+ * m4/nproc.m4 (gl_PREREQ_NPROC): Check for sys/pstat.h and
+ pstat_getdynamic.
+
+2009-10-18 Giuseppe Scrivano <gscrivano@gnu.org>
+ Bruno Haible <bruno@clisp.org>
+
+ Implement nproc for NetBSD, OpenBSD.
+ * lib/nproc.c: Include <sys/types.h>, <sys/param.h>, <sys/sysctl.h>.
+ (ARRAY_SIZE): New macro.
+ (num_processors): On BSD systems, try sysctl of HW_NCPU.
+ * m4/nproc.m4: New file.
+ * modules/nproc (Files): Add m4/nproc.m4.
+ (configure.ac): Invoke gl_NPROC. Remove AC_LIBOBJ invocation.
+ (Makefile.am): Instead, augment lib_SOURCES.
+
+2009-10-18 Bruno Haible <bruno@clisp.org>
+
+ Fix recognition of sys/sysctl.h on OpenBSD 4.0.
+ * m4/physmem.m4 (gl_PHYSMEM): Before including sys/sysctl.h, include
+ sys/param.h.
+
+2009-10-16 Eric Blake <ebb9@byu.net>
+
+ utimensat: new module
+ * modules/utimensat: New file.
+ * lib/utimensat.c (utimensat): Likewise.
+ * m4/utimensat.m4 (gl_FUNC_UTIMENSAT): Likewise.
+ * lib/utimens.c (utimensat): Avoid recursion into rpl_utimensat,
+ 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 (utimensat): Declare it.
+ * MODULES.html.sh (systems lacking POSIX:2008): Mention module.
+ * doc/posix-functions/utimensat.texi (utimensat): Likewise.
+ * modules/utimensat-tests: New test.
+ * tests/test-utimensat.c: Likewise.
+
+ utimens: let lutimens work on non-symlinks
+ * lib/utimens.c (lutimens): Fall back to utimens rather than
+ failing with ENOSYS, when file is not a symlink.
+ (utimens): Reduce redirection.
+ * tests/test-lutimens.h (test_lutimens): Update test to cover
+ non-symlinks.
+ * tests/test-utimens.h (test_utimens): Update test to cover
+ symlinks.
+ * tests/test-utimens.c (main): Update caller.
+
+ utimens: cache whether utimensat syscall works
+ * lib/utimens.c (utimensat_works_really): New cache variable.
+ (fdutimens, lutimens): Use it to avoid failing syscall.
+
+ test-stat-time, test-utimens: improve portability
+ * tests/test-stat-time.c (nap): Lengthen delay to 20ms, for
+ ext4 on alpha, and for cygwin.
+ * tests/test-utimens-common.h: New file.
+ (nap): Factor delays into single function.
+ * tests/test-lutimens.h (test_lutimens): Use new header.
+ * tests/test-futimens.h (test_futimens): Likewise.
+ * tests/test-utimens.h (test_utimens): Likewise. Also, force NFS
+ timestamps to occur from same machine, as was done previously for
+ test_utimens.
+ * modules/utimens-tests (Files): Ship new file.
+ * modules/futimens-tests (Files): Likewise.
+ Reported in part by Jim Meyering.
+
+ sys_stat: sort replacement declarations
+ * lib/sys_stat.in.h: Sort declarations.
+ * lib/futimens.c (futimens): Fix typo.
+
+2009-10-15 Jim Meyering <meyering@redhat.com>
+
+ don't let environment settings perturb build
+ Setting the envvars, LIB_CLOCK_GETTIME, LIB_EACCESS or LIB_NANOSLEEP
+ could cause a configure-time and/or build-time malfunction.
+ Typically, a configure-time function-in-library test is performed
+ via code like this:
+
+ LIB_VAR=
+ AC_SUBST([LIB_VAR])
+ prefix_saved_LIBS=$LIBS
+ AC_SEARCH_LIBS([FUNC], [LIB_NAME],
+ [test "$ac_cv_search_FUNC" = "none required" ||
+ LIB_VAR=$ac_cv_search_FUNC])
+ LIBS=$prefix_saved_LIBS
+
+ However, in each of the files affected by this change, the LIB_VAR=
+ initialization was omitted. Thus, when set in the environment, its
+ value would propagate into generated Makefiles when FUNC is not found
+ in LIB_NAME.
+ * m4/clock_time.m4 (gl_CLOCK_TIME): Initialize AC_SUBST'd var.
+ * m4/euidaccess.m4 (gl_PREREQ_EUIDACCESS): Likewise.
+ * m4/nanosleep.m4 (gl_FUNC_NANOSLEEP): Likewise.
+
+2009-10-14 Eric Blake <ebb9@byu.net>
+
+ fchdir: avoid infinite recursion in mingw
+ * lib/fchdir.c (rpl_fstat): Call system fstat, rather than
+ recursing.
+
+ test-stat-time: port to mingw
+ * tests/test-stat-time.c (force_unlink): Return a value.
+ (test_ctime) [W32]: Fix compilation error.
+ (nap): Don't call usleep with too large an argument. Use
+ force_unlink.
+ * doc/pastposix-functions/usleep.texi (usleep): Document the
+ portability issue.
+
+2009-10-13 Jim Meyering <meyering@redhat.com>
+
+ use AC_CHECK_FUNCS_ONCE, not AC_CHECK_FUNCS in modules/*
+ * modules/pipe-filter-gi: Use AC_CHECK_FUNCS_ONCE, not AC_CHECK_FUNCS.
+ * modules/pipe-filter-ii: Likewise.
+ * modules/sys_socket-tests: Likewise.
+ * modules/tsearch-tests: Likewise.
+ * Makefile (sc_prefer_ac_check_funcs_once): New rule.
+ (check): Depend on it.
+
+2009-10-12 Eric Blake <ebb9@byu.net>
+
+ utimens-tests: port to NFS file systems
+ * tests/test-utimens.h (test_utimens): Refactor utimecmp
+ comparisons to avoid spurious failures from timestamp drift
+ between NFS machines.
+
+2009-10-12 Eric Blake <ebb9@byu.net>
+
+ stat-time-tests: minor cleanups
+ * modules/stat-time-tests (configure.ac): Use AC_CHECK_FUNCS_ONCE.
+ * tests/test-stat-time.c (nap): Separate assignment from call.
+ Suggested by Paolo Bonzini and Bruno Haible.
+
+ 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
+ mingw.
+ * modules/utimens (Depends-on): Add dup2.
+
+ utimens: add test
+ * modules/utimens-tests: New test.
+ * tests/test-utimens.h: New file.
+ * tests/test-futimens.h: Likewise.
+ * tests/test-utimens.c: Likewise.
+
+ doc: mention timestamp portability issues
+ * doc/glibc-functions/lutimes.texi (lutimes): Refer to utimensat
+ instead.
+ * doc/posix-functions/utime.texi (utime): Likewise.
+ * doc/posix-functions/utimes.texi (utimes): Likewise.
+ * doc/glibc-functions/futimes.texi (futimes): Refer to futimens
+ instead.
+ * doc/posix-functions/futimens.texi (futimens): Mention utimens
+ module.
+ * doc/posix-functions/utimensat.texi (utimensat): Likewise.
+ Mention weakness with symlink timestamps.
+ * doc/glibc-functions/futimesat.texi (futimesat): New file; refer
+ to utimensat/futimens instead.
+ * doc/gnulib.texi (Glibc sys/time.h): Include new file.
+
+ test-dup2: enhance test
+ * tests/test-dup2.c (main): Also check AT_FDCWD.
+
+ test-stat-time: avoid more spurious failures
+ * tests/test-stat-time.c (nap): Wait for 15ms rather than 2ms, for
+ xfs; and avoid race if the two timestamps cross quantization edge.
+
+ relocatable: prefer 'file system' over 'filesystem'
+ * m4/relocatable-lib.m4 (gl_RELOCATABLE_NOP): Use AS_HELP_STRING.
+ (gl_RELOCATABLE_LIBRARY_BODY): Fix spelling.
+ * doc/relocatable-maint.texi (Supporting Relocation): Likewise.
+ * doc/relocatable.texi (Enabling Relocatability): Likewise.
+ * lib/relocatable.c (compute_curr_prefix): Likewise.
+
+2009-10-10 Jim Meyering <meyering@redhat.com>
+
+ stat-time-tests: check for the usleep function
+ * modules/stat-time-tests (configure.ac): Now that we test HAVE_USLEEP.
+
+2009-10-10 Bruno Haible <bruno@clisp.org>
+
+ * modules/xnanosleep: Put the Link section after the Include section.
+
2009-10-09 Eric Blake <ebb9@byu.net>
dup2: work around FreeBSD 6.1 bug
2009-10-04 Paolo Bonzini <bonzini@gnu.org>
Bruno Haible <bruno@clisp.org>
- * lib/uname.c (uname): Use a table-driver algorithm to compute
+ * lib/uname.c (uname): Use a table-driven algorithm to compute
Windows NT versions.
2009-10-04 Bruno Haible <bruno@clisp.org>