+2011-02-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ longlong: tune, particularly for common case of c99
+
+ * m4/longlong.m4 (AC_TYPE_LONG_LONG_INT): Don't bother compiling
+ or running anything if c99, or if unsigned long long int does not
+ work. In either case, we know the answer without further tests.
+ Do not compile _AC_TYPE_LONG_LONG_SNIPPET twice. Instead, compile
+ it at most once, and use its results for both long long int and
+ unsigned long long int. This is more likely to be efficient in
+ the common case where the program wants to check for both long
+ long int and unsigned long long int.
+ (AC_TYPE_UNSIGNED_LONG_LONG_INT): Don't bother compiling if c99,
+ since the answer is already known.
+
+2011-02-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ getloadavg: set errno
+ * lib/getloadavg.c: Set errno when returning -1. If no other
+ error number looks appropriate, set it to ENOSYS if the getloadavg
+ looks like it can't possibly ever work, ENOTSUP otherwise.
+ Suggested by Bruno Haible in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-02/msg00187.html>.
+
+ getloadavg: trim unused parts and speed up 'configure'
+ * NEWS: Document this.
+ * lib/getloadavg.c: Ignore HAVE_GETLOADAVG; this file is now
+ always compiled if getloadavg is absent.
+ Move test code to ...
+ * tests/test-getloadavg.c: New file, containing previous
+ contents of test from lib/getloadavg.c. It also contains
+ suggestions by Bruno Haible in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-02/msg00186.html>.
+ * modules/getloadavg-tests: New file.
+ * m4/getloadavg.m4 (gl_GETLOADAVG): Do not check for getloadavg twice.
+ Do tests in the same order as they're needed for getloadavg.c.
+ Omit setgid-related tests that generate symbols KMEM_GROUP,
+ NEET_SETGID, GETLOADAVG_PRIVILEGED; nobody seems to use those any more.
+ Do only the tests that are needed to see whether the system has
+ getloadavg, moving the other tests into ...
+ (gl_PREREQ_GETLOADAVG): ... here. Do not define obsolete symbol
+ NLIST_NAME_UNION; nobody should be using it. Do not define
+ symbols C_GETLOADAVG and HAVE_GETLOADAVG; they're no longer
+ relevant, as the user of this module shouldn't care how getloadavg
+ is implemented.
+
+ getloadavg: omit unused var
+ * lib/getloadavg.c (getloadavg): Omit unused local variable.
+
+2011-02-15 Jim Meyering <meyering@redhat.com>
+
+ doc: update users.txt
+ * users.txt: Update iwhd's URL.
+
+2011-02-13 Bruno Haible <bruno@clisp.org>
+
+ Consistent macro naming for macros that use GCC __attribute__.
+ * lib/di-set.h (_GL_ATTRIBUTE_NONNULL): Renamed from
+ _ATTRIBUTE_NONNULL_.
+ * lib/ino-map.h (_GL_ATTRIBUTE_NONNULL): Likewise.
+ * lib/hash.h (_GL_ATTRIBUTE_WUR): Renamed from ATTRIBUTE_WUR.
+ * lib/ignore-value.h (_GL_ATTRIBUTE_DEPRECATED): Renamed from
+ ATTRIBUTE_DEPRECATED.
+ * lib/openat.h (_GL_ATTRIBUTE_NORETURN): Renamed from
+ ATTRIBUTE_NORETURN.
+ * lib/sigpipe-die.h (_GL_ATTRIBUTE_NORETURN): Likewise.
+ * lib/xmemdup0.h (_GL_ATTRIBUTE_NORETURN): Likewise.
+ * lib/xstrtol.h (_GL_ATTRIBUTE_NORETURN): Likewise.
+ * lib/xalloc.h (_GL_ATTRIBUTE_NORETURN): Likewise.
+ (_GL_ATTRIBUTE_MALLOC): Renamed from ATTRIBUTE_MALLOC.
+ (_GL_ATTRIBUTE_ALLOC_SIZE): Renamed from ATTRIBUTE_ALLOC_SIZE.
+ * lib/version-etc.h (_GL_ATTRIBUTE_SENTINEL): Renamed from
+ ATTRIBUTE_SENTINEL.
+ * lib/safe-alloc.h (_GL_ATTRIBUTE_RETURN_CHECK): Renamed from
+ ATTRIBUTE_RETURN_CHECK.
+ * tests/test-ignore-value.c (_GL_ATTRIBUTE_RETURN_CHECK): Likewise.
+ * tests/test-argmatch.c (_GL_ATTRIBUTE_NORETURN): Renamed from
+ ATTRIBUTE_NORETURN.
+ * tests/test-exclude.c (_GL_ATTRIBUTE_NORETURN): Likewise.
+ Reported by Paul Eggert.
+
+2011-02-13 Bruno Haible <bruno@clisp.org>
+
+ Don't interfere with a program's definition of __attribute__.
+ * lib/argp.h (__attribute__): Remove definition.
+ (_GL_ATTRIBUTE_FORMAT): New macro.
+ (argp_error, __argp_error, argp_failure, __argp_failure): Use it.
+ * lib/argp-fmtstream.h (__attribute__): Remove definition.
+ (_GL_ATTRIBUTE_FORMAT): New macro.
+ (__argp_fmtstream_printf, argp_fmtstream_printf): Use it.
+ * lib/argp-help.c (hol_entry_long_iterate): Use __attribute__ only for
+ GCC 3 or newer.
+ * lib/error.h (__attribute__): Remove definition.
+ (_GL_ATTRIBUTE_FORMAT): New macro.
+ (error, error_at_line): Use it.
+ * lib/hash.h (__attribute__): Remove definition.
+ (ATTRIBUTE_WUR): Update definition. Define always.
+ * lib/openat.h (__attribute__): Remove definition.
+ (ATTRIBUTE_NORETURN): Update definition. Define always.
+ * lib/sigpipe-die.h (__attribute__): Remove definition.
+ (ATTRIBUTE_NORETURN): Update definition. Define always.
+ * lib/vasnprintf.h (__attribute__): Remove definition.
+ (_GL_ATTRIBUTE_FORMAT): New macro.
+ (asnprintf, vasnprintf): Use it.
+ * lib/xalloc.h (__attribute__): Remove definition.
+ (ATTRIBUTE_NORETURN): Update definition. Define always.
+ (ATTRIBUTE_MALLOC, ATTRIBUTE_ALLOC_SIZE): Define always.
+ * lib/xmemdup0.h (__attribute__): Remove definition.
+ (ATTRIBUTE_NORETURN): Update definition. Define always.
+ * lib/xprintf.h (__attribute__): Remove definition.
+ (_GL_ATTRIBUTE_FORMAT): New macro.
+ (xprintf, xvprintf, xfprintf, xvfprintf): Use it.
+ * lib/xstrtol.h (__attribute__): Remove definition.
+ (ATTRIBUTE_NORETURN): Update definition. Define always.
+ * lib/xvasprintf.h (__attribute__): Remove definition.
+ (_GL_ATTRIBUTE_FORMAT): New macro.
+ (xasprintf, xvasprintf): Use it.
+ * tests/test-argmatch.c (__attribute__): Remove definition.
+ (ATTRIBUTE_NORETURN): Update definition. Define always.
+ * tests/test-exclude.c (__attribute__): Remove definition.
+ (ATTRIBUTE_NORETURN): Update definition. Define always.
+ Reported by Paul Eggert.
+
+2011-02-13 Bruno Haible <bruno@clisp.org>
+
+ mbrtowc: Add more tests for native Windows platforms.
+ * tests/test-mbrtowc-w32-1.sh: New file.
+ * tests/test-mbrtowc-w32-2.sh: New file.
+ * tests/test-mbrtowc-w32-3.sh: New file.
+ * tests/test-mbrtowc-w32-4.sh: New file.
+ * tests/test-mbrtowc-w32-5.sh: New file.
+ * tests/test-mbrtowc-w32.c: New file.
+ * modules/mbrtowc-tests (Files): Add them.
+ (Makefile.am): Arrange to run these tests.
+ * tests/test-mbrtowc-w32-6.sh: New file, currently unused.
+ * tests/test-mbrtowc-w32-7.sh: New file, currently unused.
+
+2011-02-13 Bruno Haible <bruno@clisp.org>
+
+ mbrtowc: Work around native Windows bug.
+ * m4/mbrtowc.m4 (gl_MBRTOWC_RETVAL): Detect native Windows bug. Use the
+ guess when no suitable locale for testing was found.
+ * doc/posix-functions/mbrtowc.texi: Mention the native Windows bug.
+
+2011-02-13 Bruno Haible <bruno@clisp.org>
+
+ mbsinit: Work around mingw bug.
+ * m4/mbsinit.m4 (gl_FUNC_MBSINIT): Replace mbsinit also on mingw.
+ * lib/mbsinit.c (mbsinit): Provide an alternate definition for native
+ Windows.
+ * doc/posix-functions/mbsinit.texi: Mention the mingw bug.
+
+2011-02-13 Bruno Haible <bruno@clisp.org>
+
+ mbsinit: Don't crash for a NULL argument.
+ * lib/mbsinit.c (mbsinit): When the argument is NULL, return 1.
+ * tests/test-mbsinit.c (mbsinit): Check this behaviour.
+
+2011-02-13 Bruno Haible <bruno@clisp.org>
+
+ Don't interfere with a program's definition of __attribute__.
+ * lib/stdio.in.h (__attribute__): Remove definition.
+ (_GL_ATTRIBUTE_FORMAT, _GL_ATTRIBUTE_FORMAT_PRINTF): New macros.
+ (dprintf, fprintf, obstack_printf, obstack_printf, obstack_vprintf,
+ printf, snprintf, sprintf, asprintf, vasprintf, vdprintf, vfprintf,
+ vsnprintf, vsprintf): Use _GL_ATTRIBUTE_FORMAT_PRINTF.
+ * lib/string.in.h (__attribute__): Remove definition.
+ Reported by Paul Eggert.
+
+2011-02-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ stdlib: don't get in the way of non-GCC __attribute__
+ See thread starting at
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-02/msg00161.html>.
+ Revert previous stdlib change, installing the following instead:
+ * lib/stdlib.in.h (__attribute__): Remove. We do not want
+ to get in the way of a non-GCC compiler that supports __attribute__.
+ (_GL_ATTRIBUTE_RETURN): New macro.
+ (_Exit): Use it instead of __attribute__.
+
+2011-02-12 Bruno Haible <bruno@clisp.org>
+
+ quotearg test: Avoid test failure on mingw.
+ * tests/test-quotearg.sh: Convert the locale identifier from native
+ Windows syntax to Unix syntax.
+
+2011-02-12 Bruno Haible <bruno@clisp.org>
+
+ setlocale: Prefer gnulib's override over libintl's override.
+ * lib/locale.in.h (GNULIB_defined_setlocale): New macro.
+ * lib/gettext.h (setlocale): Redefine to rpl_setlocale if
+ GNULIB_defined_setlocale is set.
+
+2011-02-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ stdlib: support non-GCC __attribute__
+
+ Fix a serious and tricky problem encountered when attempting to
+ add the getloadavg module to Emacs. Emacs worked fine on RHEL
+ 5.5, but it crashed due to memory corruption on Solaris 10 with
+ Sun C 5.11. Emacs normally ORs 3-bit tags into their low-order
+ bits that are otherwise zero. This tagging is optional inside
+ Emacs but is preferred and is used when __attribute__ ((__aligned
+ (8))) works, as it does with both recent-enough GCC and with Sun C
+ 5.11. However, Sun C 5.11 is not GCC and does not #define
+ __GNUC__ and __GNUC_MINOR__.
+
+ When I added the getloadavg module to Emacs, it brought in
+ stdlib.in.h, which contained this fragment:
+
+ #ifndef __attribute__
+ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
+ # define __attribute__(Spec) /* empty */
+ # endif
+ #endif
+
+ When files that include <stdlib.h> were compiled with Sun C 5.11,
+ the above code disabled __attribute__ ((__aligned (8))), which
+ caused variables to not be properly aligned, which eventually led
+ to the pointer corruption mentioned above. (This was a bit hard
+ to diagnose, unfortunately.)
+
+ Several "#define __attribute__(X) /* empty */" code snippets need
+ to be eradicated from Gnulib to work with non-GCC compilers that
+ support __attribute__. The Autoconf way to do this is to test for
+ each kind of attribute that we want support for, and selectively
+ enable that in source code.
+
+ Fix this problem just for stdlib.h, by adding a test for the
+ __noreturn__ attribute, and change stdlib.in.h to use that test
+ when needed. This technique can be easily generalized to the
+ other *.in.h files and attributes, and a similar technique can be
+ used for *.h and *.c files. This patch is enough to solve the
+ problem for Emacs + getloadavg, and I thought I'd publish it for
+ feedback before undertaking further, similar fixes in other
+ modules.
+
+ This patch does not arrange to #define HAVE_ATTRIBUTE_NORETURN
+ because it's not needed for stdlib.h. It merely substitutes the
+ value directly into stdlib.h. We may well need to #define it, or
+ similar symbols, for other modules, but it's nice to also have an
+ option to not #define it for applications like Emacs that do not
+ need it.
+
+ * lib/stdlib.in.h (__attribute__): Do not #define.
+ (_GL_ATTRIBUTE_NORETURN): New macro, which in stdlib.h needs to
+ be defined only if the _Exit module is also used.
+ * m4/_Exit.m4 (gl_FUNC__EXIT): Require gl_ATTRIBUTE_NORETURN.
+ * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Subst
+ HAVE_ATTRIBUTE_NORETURN and default it to 1, its value on GNU
+ platforms.
+ * modules/_Exit (Files): Add m4/attribute.m4.
+ * modules/stdlib (Makefile.am): Substitute HAVE_ATTRIBUTE_NORETURN.
+ * m4/attribute.m4: New file.
+
+2011-02-12 Bruno Haible <bruno@clisp.org>
+
+ wcsrtombs: Work around bug on native Windows.
+ * m4/wcsrtombs.m4 (gl_WCSRTOMBS_NULL): Test against mingw bug.
+ * lib/wcsrtombs.c (rpl_wcsrtombs): When dest is NULL, pass SIZE_MAX
+ instead of len.
+ * doc/posix-functions/wcsrtombs.texi: Document mingw bug.
+
+2011-02-12 Bruno Haible <bruno@clisp.org>
+
+ mbsrtowcs: Work around bug on native Windows.
+ * m4/mbsrtowcs.m4 (gl_MBSRTOWCS_WORKS): Require gt_LOCALE_FR. Test
+ against mingw bug.
+ * doc/posix-functions/mbsrtowcs.texi: Document mingw bug.
+
+2011-02-12 Bruno Haible <bruno@clisp.org>
+
+ Avoid setlocale bugs in tests.
+ * modules/btowc (Dependencies): Add setlocale.
+ * modules/c-strcase (Dependencies): Likewise.
+ * modules/mbmemcasecmp (Dependencies): Likewise.
+ * modules/mbmemcasecoll (Dependencies): Likewise.
+ * modules/mbrtowc (Dependencies): Likewise.
+ * modules/mbscasecmp (Dependencies): Likewise.
+ * modules/mbscasestr (Dependencies): Likewise.
+ * modules/mbschr (Dependencies): Likewise.
+ * modules/mbscspn (Dependencies): Likewise.
+ * modules/mbsinit (Dependencies): Likewise.
+ * modules/mbsncasecmp (Dependencies): Likewise.
+ * modules/mbsnrtowcs (Dependencies): Likewise.
+ * modules/mbspbrk (Dependencies): Likewise.
+ * modules/mbspcasecmp (Dependencies): Likewise.
+ * modules/mbsrchr (Dependencies): Likewise.
+ * modules/mbsrtowcs (Dependencies): Likewise.
+ * modules/mbsspn (Dependencies): Likewise.
+ * modules/mbsstr (Dependencies): Likewise.
+ * modules/nl_langinfo (Dependencies): Likewise.
+ * modules/quotearg (Dependencies): Likewise.
+ * modules/unicase/locale-language (Dependencies): Likewise.
+ * modules/unicase/ulc-casecmp (Dependencies): Likewise.
+ * modules/unicase/ulc-casecoll (Dependencies): Likewise.
+ * modules/unigbrk/ulc-grapheme-breaks (Dependencies): Likewise.
+ * modules/unistdio/u8-vasnprintf (Dependencies): Likewise.
+ * modules/unistdio/u16-vasnprintf (Dependencies): Likewise.
+ * modules/unistdio/u32-vasnprintf (Dependencies): Likewise.
+ * modules/unistdio/ulc-vasnprintf (Dependencies): Likewise.
+ * modules/uniwbrk/ulc-wordbreaks (Dependencies): Likewise.
+ * modules/vasnprintf-posix (Dependencies): Likewise.
+ * modules/wcrtomb (Dependencies): Likewise.
+ * modules/wcsnrtombs (Dependencies): Likewise.
+ * modules/wcsrtombs (Dependencies): Likewise.
+
+2011-02-12 Bruno Haible <bruno@clisp.org>
+
+ setlocale: Workaround native Windows bug.
+ * lib/setlocale.c (rpl_setlocale): On native Windows, when setlocale
+ succeeds but sets LC_CTYPE to "C", report a failure.
+ * tests/test-setlocale2.sh: New file.
+ * tests/test-setlocale2.c: New file.
+ * modules/setlocale-tests (Files): Add the new files.
+ (Makefile.am): Enable test-setlocale2.sh test.
+ * doc/posix-functions/setlocale.texi: Mention workaround.
+
+2011-02-11 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'setlocale'.
+ * modules/setlocale-tests: New file.
+ * tests/test-setlocale1.sh: New file.
+ * tests/test-setlocale1.c: New file.
+
+ New module 'setlocale'.
+ * lib/locale.in.h (setlocale): New declaration.
+ * lib/setlocale.c: New file, based on
+ gettext/gettext-runtime/intl/setlocale.c.
+ * m4/setlocale.m4: New file.
+ * m4/locale_h.m4 (gl_LOCALE_H): Test whether setlocale is declared.
+ (gl_LOCALE_H_DEFAULTS): Initialize GNULIB_SETLOCALE, REPLACE_SETLOCALE.
+ * modules/locale (Makefile.am): Substitute GNULIB_SETLOCALE,
+ REPLACE_SETLOCALE.
+ * modules/setlocale: New file.
+ * tests/test-locale-c++.cc: Test the declaration of setlocale.
+ * doc/posix-functions/setlocale.texi: Mention the new module.
+
+2011-02-11 Bruno Haible <bruno@clisp.org>
+
+ Prepare for locale dependent tests on mingw.
+ * m4/locale-ar.m4 (gt_LOCALE_AR): On native Windows, don't try "ar"
+ because it has the wrong locale encoding.
+ * m4/locale-fr.m4 (gt_LOCALE_FR): On native Windows, try
+ French_France.1252 instead of "fr".
+ (gt_LOCALE_FR_UTF8): On native Windows, try French_France.65001.
+ * m4/locale-ja.m4 (gt_LOCALE_JA): On native Windows, don't try "ja"
+ because it has the wrong locale encoding.
+ * m4/locale-tr.m4 (gt_LOCALE_TR_UTF8): Require AC_CANONICAL_HOST. On
+ native Windows, try Turkish_Turkey.65001.
+ * m4/locale-zh.m4 (gt_LOCALE_ZH_CN): On native Windows, try
+ Chinese_China.54936.
+
+ Prepare for locale dependent tests on mingw.
+ * m4/locale-ar.m4 (gt_LOCALE_AR): On native Windows, call setlocale
+ differently.
+ * m4/locale-fr.m4 (gt_LOCALE_FR, gt_LOCALE_FR_UTF8): Likewise.
+ * m4/locale-ja.m4 (gt_LOCALE_JA): Likewise.
+ * m4/locale-tr.m4 (gt_LOCALE_TR_UTF8): Likewise.
+ * m4/locale-zh.m4 (gt_LOCALE_ZH_CN): Likewise.
+
2011-02-11 Eric Blake <eblake@redhat.com>
strptime: avoid compiler warnings
* lib/strptime.c (__strptime_internal) [!_NL_CURRENT]: Avoid
compiler warnings about dead code.
- Reported by Matthias Bolte.
+ Reported by Daniel P. Berrange.
2011-02-11 Thien-Thi Nguyen <ttn@gnuvola.org>