strerror_r: avoid corrupting errno on Solaris
[pspp] / ChangeLog
index b21dc1bad5d78df24b68a9b811ac548edf067d02..bb0eeb416a28b7fd69d0ac5e5d69b82c2db35c4f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,168 @@
+2011-05-20  Eric Blake  <eblake@redhat.com>
+
+       strerror_r: avoid corrupting errno on Solaris
+       * m4/strerror_r.m4 (gl_FUNC_STRERROR_R): Check for Solaris behavior.
+       * doc/posix-functions/strerror_r.texi (strerror_r): Document it.
+
+       strerror_r: avoid compiler warning
+       * m4/strerror_r.m4 (gl_FUNC_STRERROR_R): Don't return a char*.
+
+       strerror_r: simplify AIX code
+       * lib/strerror_r.c (strerror_r): Filter out buflen of 1 up front.
+
+       test-perror: avoid spurious failure on FreeBSD
+       * modules/perror-tests (Depends-on): Add strerror, now that
+       strerror_r no longer pulls it in.
+
+2011-05-20  Bruno Haible  <bruno@clisp.org>
+
+       strerror_r-posix: Remove unused dependencies.
+       * modules/strerror_r-posix (Depends-on): Remove strerror.
+       Reported by Eric Blake.
+
+2011-05-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       intprops: remove assumption about A|B representation
+       * lib/intprops.h (_GL_BINARY_OP_OVERFLOW): Do not assume that A|B
+       is a valid integer if both A and B are.  Although this is true for
+       all known practical hosts, the C standard doesn't guarantee it,
+       and the code need not assume it.  Also, this change may work around
+       HP-UX 11.23 and IRIX 6.5 cc bugs reported by Bruno Haible in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00426.html>.
+
+2011-05-20  Eric Blake  <eblake@redhat.com>
+
+       perror: work around FreeBSD bug
+       * m4/perror.m4 (gl_FUNC_PERROR): Also replace perror if strerror_r
+       is broken.  Move AC_LIBOBJ...
+       * modules/perror (configure.ac): Here.
+       * doc/posix-functions/perror.texi (perror): Document this.
+       * tests/test-perror2.c (main): Enhance test.
+
+       test-perror: check for strerror interactions
+       * tests/macros.h (STREQ) Add macro.
+       * modules/perror-tests (Files): Add second test.
+       * tests/test-perror2.c (main): New file.
+       * doc/posix-functions/perror.texi (perror): Document glibc bug.
+
+       test-perror: rewrite to use init script
+       * modules/perror-tests (Files): Add init.sh.
+       * tests/test-perror.sh: Use temporary directory.
+
+2011-05-20  Jim Meyering  <meyering@redhat.com>
+
+       maint: replace misused "a" with "an"
+       * doc/intprops.texi: "a integer"
+       * doc/regex.texi: "a explanation"
+       * lib/alignof.h: "a object"
+       * lib/argmatch.h: "a explanation"
+       * lib/argp-help.c: "a option" and "a OPTION_DOC"
+       * lib/stdint.in.h: "a integer"
+       * lib/userspec.c: "a owner"
+       * doc/gnulib.texi: Fix "a idea", and reword.
+
+2011-05-19  Jim Meyering  <meyering@redhat.com>
+
+       maint: correct misuse of "a" and "an"
+       * doc/regex.texi (Collating Symbol Operators): s/an close.../a close/
+       * lib/argp-help.c: "an docum...": s/an/a/
+       * lib/argp-parse.c: "An vector": s/An/A/
+       * lib/execute.c: "an native": s/an/a/
+       * lib/spawn-pipe.c: Likewise.
+       * lib/gc.h: "an Gc_rc": s/an/a/
+       * lib/unigbrk.in.h: "an grapheme": s/an/a/
+       * lib/fts.c: "an stat.st_dev": s/an/a/
+
+2011-05-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       intprops-tests: work around HP-UX 11.23 cc bug with constants
+       * tests/test-intprops.c (VERIFY): New macro.
+       (main): Use it, instead of verify, to work around the compiler bug; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00401.html>.
+
+       intprops: work around IRIX 6.5 cc bug with 0u - 0u + -1
+       See http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html
+       * lib/intprops.h (_GL_INT_NEGATE_CONVERT): New macro.
+       (_GL_INT_SIGNED, _GL_INT_MAXIMUM, _GL_DIVIDE_OVERFLOW):
+       (_GL_REMAINDER_OVERFLOW): Use it.
+
+       intprops-tests: revert unsigned part of previous change
+       * tests/test-intprops.c (UINT_MAX, ULONG_MAX, UINTMAX_MAX, U0, U1):
+       Remove; they weren't actually needed.  All uses of U0 and U1 removed,
+       and other casts to 'unsigned int' reverted to 'u' suffixes.  See
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html>.
+
+2011-05-19  Bruno Haible  <bruno@clisp.org>
+
+       strerror_r: Work around strerror_r() change in Cygwin 1.7.8.
+       * lib/strerror_r.c (strerror_r) [CYGWIN]: Recognize when the system's
+       strerror_r() returned without filling the buffer.
+       Reported by Eric Blake.
+
+2011-05-19  Eric Blake  <eblake@redhat.com>
+
+       strerror_r: guarantee unchanged errno
+       * lib/strerror_r.c (strerror_r): Guarantee unchanged errno.
+       * lib/strerror-impl.h (strerror): Set errno to match strerror_r
+       failure.
+       * tests/test-strerror_r.c (main): Enhance test.
+
+2011-05-19  Bruno Haible  <bruno@clisp.org>
+
+       strerror_r: Reorder #if blocks.
+       * lib/strerror_r.c (strerror_r): Reorder conditionals in the function
+       for consistency with the previous commit.
+
+2011-05-19  Bruno Haible  <bruno@clisp.org>
+
+       perror: Avoid clobbering the strerror buffer when possible.
+       * lib/strerror-impl.h: New file, extracted from lib/strerror.c.
+       * lib/strerror.c: Include it.
+       * modules/strerror (Files): Add lib/strerror-impl.h.
+       * lib/perror.c: Include <stdlib.h>, intprops.h, verify.h.
+       (my_strerror): New function, defined through lib/strerror-impl.h.
+       (perror): Use it instead of strerror.
+       * modules/perror (Files): Add lib/strerror-impl.h.
+       (Depends-on): Remove strerror. Add intprops, verify, strerror_r-posix.
+
+2011-05-19  Eric Blake  <eblake@redhat.com>
+
+       strerror_r: fix on newer cygwin
+       * lib/strerror_r.c (strerror_r): Cygwin now has
+       __xpg_strerror_r, use it.
+
+2011-05-19  Bruno Haible  <bruno@clisp.org>
+
+       strerror_r: Avoid clobbering the strerror buffer when possible.
+       * lib/strerror.c: Define _NETBSD_SOURCE. Include <nl_types.h>.
+       (sys_nerr, sys_errlist): New declarations.
+       (strerror_r): Be careful not to clobber the strerror buffer on NetBSD,
+       HP-UX, native Win32, IRIX, and 32-bit Solaris.
+       * m4/strerror_r.m4 (gl_PREREQ_STRERROR_R): Test whether catgets exists.
+
+2011-05-19  Bruno Haible  <bruno@clisp.org>
+
+       strerror_r: Fix test failure on mingw.
+       * m4/strerror_r.m4 (gl_FUNC_STRERROR_R): Don't define
+       EXTEND_STRERROR_R.
+       * lib/strerror_r.c (strerror_r): Test the various GNULIB_defined_*
+       macros from errno.in.h instead.
+
+2011-05-19  Eric Blake  <eblake@redhat.com>
+
+       strerror: relax test for Solaris
+       * tests/test-strerror.c (main): Permit Solaris behavior.
+       * tests/test-strerror_r.c (main): Likewise.
+
+       strerror: enforce POSIX ruling on strerror(0)
+       * m4/strerror.m4 (gl_FUNC_STRERROR_SEPARATE): Expose BSD bug.
+       * m4/strerror_r.m4 (gl_FUNC_STRERROR_R): Likewise.
+       * lib/strerror_r.c (rpl_strerror_r): Work around it.
+       * doc/posix-functions/strerror.texi (strerror): Document it.
+       * doc/posix-functions/strerror_r.texi (strerror_r): Likewise.
+       * tests/test-strerror.c (main): Strengthen test.
+       * tests/test-strerror_r.c (main): Likewise.
+
 2011-05-19  Paul Eggert  <eggert@cs.ucla.edu>
 
        intprop-tests: port to older and more-pedantic compilers