readlink: document portability issue with symlink length
[pspp] / ChangeLog
index fde8d07f231dd51ed9ab936aec46f295aac4a9e8..618f1c9ad72194ada3dc2e3c9eaa9776313a7715 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,215 @@
+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.
+
+       link-follow: ensure correct result
+       * m4/fcntl_h.m4 (gl_FCNTL_H): Clean up temporary file.
+       * m4/link-follow.m4 (gl_FUNC_LINK_FOLLOWS_SYMLINK): Likewise, and
+       distinguish between possible failures.
+
+2009-09-21  Eric Blake  <ebb9@byu.net>
+
+       fts: avoid compiler warning
+       * lib/fts.c (dirent_inode_sort_may_be_useful)
+       (leaf_optimization_applies) [!__linux__]: Mark unused parameters.
+
+2009-09-19  Bruno Haible  <bruno@clisp.org>
+
+       * lib/progreloc.c (canonicalize_file_name): New declaration.
+
 2009-09-19  Eric Blake  <ebb9@byu.net>
 
+       link: fix quoting
+       * m4/link.m4 (gl_FUNC_LINK): Fix shell quoting.
+
+       openat: fix openat bugs on Solaris 9
+       * lib/openat.c (rpl_openat): Work around Solaris 9 bug.
+       * m4/openat.m4 (gl_FUNC_OPENAT): Also replace openat on Solaris.
+       * modules/openat (Depends-on): Add open.
+       * m4/fcntl_h.m4 (gl_FCNTL_H_DEFAULTS): Provide new default.
+       * modules/fcntl-h (Makefile.am): Substitute it.
+       * lib/fcntl.in.h (openat): Declare replacement.
+       * doc/posix-functions/openat.texi (openat): Document this.
+
+       openat: move fstatat and unlinkat into correct files
+       * m4/openat.m4 (gl_FUNC_OPENAT): Adjust which files will be
+       compiled.
+       * lib/openat.c (fstatat, unlinkat): Move...
+       * lib/fstatat.c (fstatat): ...into correct files.
+       * lib/unlinkat.c (unlinkat): Likewise.
+
+       openat: fix unlinkat bugs on Solaris 9
+       * lib/unlinkat.c (unlinkat): New file.
+       * modules/openat (Depends-on): Add unlink.
+       (Files): Distribute it.
+       * m4/openat.m4 (gl_FUNC_OPENAT): Mark unlinkat for replacement if
+       trailing slash behavior is broken.
+       * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Add witness.
+       * modules/unistd (Makefile.am): Substitute it.
+       * lib/unistd.in.h (unlinkat): Declare replacement.
+       * doc/posix-functions/unlinkat.texi (unlinkat): Document this.
+
+       openat: fix fstatat bugs on Solaris 9
+       * lib/fstatat.c (rpl_fstatat): Copy recent fixes from lstat and
+       stat.
+       * doc/posix-functions/fstatat.texi (fstatat): Document this.
+
+       test-unlinkat: enhance test, to expose Solaris 9 bug
+       * tests/test-unlink.c (main): Factor guts...
+       * tests/test-unlink.h (test_rmdir_func): ...into new file.
+       * tests/test-rmdir.h (test_rmdir_func): Add parameter.
+       * tests/test-rmdir.c (main): Adjust caller.
+       * tests/test-unlinkat.c (main): Likewise.  Add unlink tests.
+       (unlinker): New helper function.
+       (rmdirat): Enhance check.
+       * modules/rmdir-tests (Depends-on): Add stdbool.
+       * modules/unlink-tests (Depends-on): Likewise.
+       (Files): Add test-unlink.h.
+       * modules/openat-tests (Files): Likewise.
+       (Depends-on): Add unlinkdir.
+
+       test-fstatat: new test, to expose Solaris 9 bugs
+       * tests/test-stat.c (main): Factor guts...
+       * tests/test-stat.h (test_stat_func): ...into new file.
+       * tests/test-lstat.c (main): Factor guts...
+       * tests/test-lstat.h (test_lstat_func): ...into new file.
+       * tests/test-fstatat.c: New file.
+       * modules/stat-tests (Files): Add test-stat.h.
+       * modules/lstat-tests (Files): Add test-lstat.h.
+       (Depends-on): Add stdbool.
+       * modules/openat-tests (Depends-on): Add pathmax.
+       (Files): Add test-lstat.h, test-stat.h, test-fstatat.c.
+       (Makefile.am): Run new test.
+
+       remove: new module, for mingw and Solaris 9 bugs
+       * modules/remove: New file.
+       * lib/remove.c: Likewise.
+       * m4/remove.m4 (gl_FUNC_REMOVE): Likewise.
+       * m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Add witnesses.
+       * modules/stdio (Makefile.am): Use them.
+       * lib/stdio.in.h (remove): Declare replacement.
+       * MODULES.html.sh (systems lacking POSIX:2008): Mention module.
+       * doc/posix-functions/remove.texi (remove): Likewise.
+       * modules/remove-tests: New test.
+       * tests/test-remove.c: Likewise.
+
+       unlink: new module, for Solaris 9 bug
+       * modules/unlink: New file.
+       * lib/unlink.c: Likewise.
+       * m4/unlink.m4 (gl_FUNC_UNLINK): Likewise.
+       * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Add witnesses.
+       * modules/unistd (Makefile.am): Use them.
+       * lib/unistd.in.h (stat): Declare replacement.
+       * MODULES.html.sh (systems lacking POSIX:2008): Mention module.
+       * doc/posix-functions/unlink.texi (unlink): Likewise.
+       * modules/unlink-tests: New test.
+       * tests/test-unlink.c: Likewise.
+
+       lstat: fix Solaris 9 bug
+       * lib/lstat.c (lstat): Also check for trailing slash on
+       non-symlink, non-directories.  Use stat module to simplify logic.
+       * doc/posix-functions/lstat.texi (lstat): Document it.
+       * modules/lstat-tests (Depends-on): Add errno, same-inode.
+       (configure.ac): Check for symlink.
+       * tests/test-lstat.c (main): Add more tests.
+
+       stat: add as dependency to other modules
+       * modules/chown (Depends-on): Add stat.
+       * modules/euidaccess (Depends-on): Likewise.
+       * modules/fchdir (Depends-on): Likewise.
+       * modules/isdir (Depends-on): Likewise.
+       * modules/link (Depends-on): Likewise.
+       * modules/lstat (Depends-on): Likewise.
+       * modules/mkdir-p (Depends-on): Likewise.
+       * modules/modechange (Depends-on): Likewise.
+       * modules/open (Depends-on): Likewise.
+       * modules/readlink (Depends-on): Likewise.
+       * modules/same (Depends-on): Likewise.
+
+       stat: fix Solaris 9 bug
+       * m4/stat.m4 (gl_FUNC_STAT): Detect Solaris 9 bug with trailing
+       slash.
+       * lib/stat.c (rpl_stat): Work around it.
+       * doc/posix-functions/stat.texi (stat): Update documentation.
+
        stat: new module, for mingw bug
        * modules/stat: New file.
        * lib/stat.c: Likewise.