+2009-09-23 Eric Blake <ebb9@byu.net>
+
+ linkat: new module
+ * modules/linkat: New file.
+ * lib/at-func2.c (at_func2): Likewise.
+ * lib/linkat.c (linkat): Likewise.
+ * m4/linkat.m4 (gl_FUNC_LINKAT): Likewise.
+ * lib/openat-priv.h (at_func2): Add declaration.
+ * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Add witnesses.
+ * modules/unistd (Makefile.am): Substitute them.
+ * lib/unistd.in.h (linkat): Declare it.
+ * MODULES.html.sh (systems lacking POSIX:2008): Mention module.
+ * doc/posix-functions/linkat.texi (linkat): Likewise.
+ * doc/posix-functions/link.texi (link): Tweak wording.
+ * tests/test-link.c (main): Move guts...
+ * tests/test-link.h (test_link): ...into new file.
+ * modules/linkat-tests: New test.
+ * tests/test-linkat.c: Likewise.
+ * modules/link-tests (Files): Ship new file.
+ (Depends-on): Add stdbool.
+
+ dirname: add library-safe mdir_name
+ * lib/dirname.h (mdir_name): New prototype.
+ * lib/dirname.c (dir_name): Move guts...
+ (mdir_name): ...to new function that avoids xalloc_die.
+
+ fchdir: another mingw fix
+ * modules/fchdir (Depends-on): Drop canonicalize-lgpl.
+ * lib/fchdir.c (get_name): New helper method; skips canonicalize
+ on mingw (where it has not yet been ported), and make it optional
+ elsewhere.
+ (_gl_register_fd): Use it.
+
+ same-inode: make SAME_INODE tri-state, to port to mingw
+ * NEWS: Mention this change.
+ * lib/same-inode.h (same-inode.h): Recognize mingw limitation of
+ st_ino always being 0.
+ * lib/cycle-check.h (CYCLE_CHECK_REFLECT_CHDIR_UP): Update caller.
+ * lib/cycle-check.c (cycle_check): Likewise.
+ * lib/same.c (same_name): Likewise.
+
+ lstat: avoid mingw compilation error
+ * m4/lstat.m4 (gl_FUNC_LSTAT): Avoid duplicate calls to
+ AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK, and deal with missing
+ lstat ourselves.
+ * lib/lstat.c [!HAVE_LSTAT]: Do nothing if <sys/stat.h> override
+ was adequate.
+ * m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Let lstat module handle
+ the checks for lstat.
+ (gl_SYS_STAT_H_DEFAULTS): Set default for HAVE_LSTAT.
+
+ link: fix test failure on Solaris 9
+ * lib/link.c (rpl_link): Don't assume link will catch bogus
+ trailing slash on source.
+
+ test-symlinkat: enhance test
+ * tests/test-readlink.c (main): Move guts...
+ * tests/test-readlink.h (test_readlink): ...into new file.
+ * tests/test-symlink.c (main): Move guts...
+ * tests/test-symlink.h (test_symlink): ...into new file.
+ * tests/test-symlinkat.c (main): Use new files for further
+ coverage.
+ (do_symlink, do_readlink): New helper functions.
+ * modules/symlink-tests (Files): Ship new file.
+ (Depends-on): Add stdbool.
+ * modules/readlink-tests (Files): Ship new file.
+ (Depends-on): Add stdbool.
+ * modules/symlinkat-tests (Files): Use new files.
+
+2009-09-23 Eric Blake <ebb9@byu.net>
+
+ readlink: document portability issue with symlink length
+ * doc/posix-functions/lstat.texi (lstat): Mention that some file
+ systems have bogus st_size on symlinks, and mention the
+ areadlink-with-size module.
+ * doc/posix-functions/fstatat.texi (fstatat): Likewise.
+ * doc/posix-functions/readlink.texi (readlink): Mention the
+ areadlink module, and ERANGE failure.
+ * doc/posix-functions/readlinkat.texi (readlinkat): Likewise.
+ * tests/test-readlink.c (main): Relax test for AIX, HP-UX.
+
+ readlink: fix Solaris 9 bug with trailing slash
+ * lib/readlink.c (rpl_readlink): Work around trailing slash bug.
+ * m4/readlink.m4 (gl_FUNC_READLINK): Detect the bug.
+ * doc/posix-functions/readlink.texi (readlink): Document this.
+ * modules/readlink-tests: New test.
+ * tests/test-readlink.c: Likewise.
+
+ readlink: fix cygwin 1.5.x bug with return type
+ * m4/readlink.m4 (gl_FUNC_READLINK): Require correct signature.
+ * lib/unistd.in.h (readlink): Use ssize_t.
+ * lib/readlink.c (readlink): Likewise.
+ * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Add witness.
+ * modules/unistd (Makefile.am): Substitute it.
+ * lib/unistd.in.h (readlink): Declare replacement.
+ * doc/posix-functions/readlink.texi (readlink): Document this.
+
+ symlink: use throughout gnulib
+ * m4/symlinkat.m4 (gl_FUNC_SYMLINKAT): Omit symlink check.
+ * lib/symlinkat.c (symlinkat) [!HAVE_SYMLINK]: Document why
+ symlink is not used.
+ * modules/symlinkat (Depends-on): Add symlink.
+ * modules/canonicalize-lgpl-tests (Depends-on): Likewise.
+ * modules/canonicalize-tests (Depends-on): Likewise.
+ * modules/lstat-tests (Depends-on): Likewise.
+ * modules/openat-tests (Depends-on): Likewise.
+ * modules/remove-tests (Depends-on): Likewise.
+ * modules/rmdir-tests (Depends-on): Likewise.
+ * modules/unlink-tests (Depends-on): Likewise.
+ * tests/test-canonicalize-lgpl.c (symlink): Delete stub.
+ * tests/test-canonicalize.c (symlink): Likewise.
+ * tests/test-fstatat.c (symlink): Likewise.
+ * tests/test-lstat.c (symlink): Likewise.
+ * tests/test-remove.c (symlink): Likewise.
+ * tests/test-rmdir.c (symlink): Likewise.
+ * tests/test-unlink.c (symlink): Likewise.
+ * tests/test-unlinkat.c (symlink): Likewise.
+
+ symlink: new module, for Solaris 9 bug
+ * modules/symlink: New file.
+ * m4/symlink.m4 (gl_FUNC_SYMLINK): Likewise.
+ * lib/symlink.c: Likewise.
+ * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Add defaults.
+ * modules/unistd (Makefile.am): Substitute them.
+ * lib/unistd.in.h (symlink): Declare replacement.
+ * MODULES.html.sh (File system functions): Mention it.
+ * doc/posix-functions/symlink.texi (symlink): Likewise.
+ * modules/symlink-tests: New test.
+ * tests/test-symlink.c: Likewise.
+
+2009-09-23 Bruno Haible <bruno@clisp.org>
+
+ * gnulib-tool (func_import): Add 'link-warning' to testsrelated_modules
+ when needed.
+ Test case: gnulib-tool --import --with-tests atexit inttypes.
+ Reported by Pauli Miettinen <pauli.miettinen@cs.helsinki.fi>.
+
+2009-09-23 Bruno Haible <bruno@clisp.org>
+
+ * gnulib-tool (func_emit_tests_Makefile_am): Set uses_subdirs in a
+ subcommand, not in a subshell.
+
2009-09-22 Eric Blake <ebb9@byu.net>
+ unistd: sort replacement declarations
+ * lib/unistd.in.h: Sort declarations.
+
open, openat: minor optimization
* lib/open.c (open): If open succeeded, len is non-zero.
* lib/openat.c (rpl_openat): Likewise.