localename: Make aware of thread locale.
[gnulib.git] / ChangeLog
index 5dd41d1..93bfdf3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,227 @@
+2009-12-23  Bruno Haible  <bruno@clisp.org>
+
+       localename: Make aware of thread locale.
+       * lib/localename.h (gl_locale_name_thread): New declaration.
+       (gl_locale_name, gl_locale_name_posix, gl_locale_name_default): Clarify
+       behaviour with respect to thread locale.
+       * lib/localename.c: Include <limits.h>, <stddef.h>, <xlocale.h>,
+       <langinfo.h>, glthread/lock.h.
+       (SIZE_BITS): New macro.
+       (string_hash): New function.
+       (struct hash_node): New type.
+       (HASH_TABLE_SIZE): New macro.
+       (struniq_hash_table, struniq_lock): New variables.
+       (struniq): New function.
+       (gl_locale_name_thread): New function.
+       (gl_locale_name): Invoke it.
+       * m4/localename.m4 (gl_LOCALENAME): Test for uselocale function.
+       * modules/localename (Depends-on): Add lock.
+       Reported by Mike Gran <spk121@yahoo.com>.
+
+2009-12-23  Eric Blake  <ebb9@byu.net>
+
+       va-args: new module
+       * modules/va-args: New file.
+       * m4/va-args.m4 (gl_VA_ARGS): Likewise.
+       * MODULES.html.sh (Core language properties): Mention it.
+
+       gnulib-common: prefer _GL_UNUSED over _UNUSED_PARAMETER_
+       * m4/gnulib-common.m4 (gl_COMMON): Create a more-appropriately
+       named alias for __attribute__((__unused__)).
+       * lib/chown.c: Update client.
+       * lib/fchmodat.c: Likewise.
+       * lib/fts.c: Likewise.
+       * lib/getdate.y: Likewise.
+       * lib/getgroups.c: Likewise.
+       * lib/getopt.c: Likewise.
+       * lib/getugroups.c: Likewise.
+       * lib/mkdir.c: Likewise.
+       * lib/mkfifo.c: Likewise.
+       * lib/mkfifoat.c: Likewise.
+       * lib/mknod.c: Likewise.
+       * lib/mknodat.c: Likewise.
+       * lib/readlink.c: Likewise.
+       * lib/se-context.in.h: Likewise.
+       * lib/se-selinux.in.h: Likewise.
+       * lib/sockets.c: Likewise.
+       * lib/symlink.c: Likewise.
+       * lib/symlinkat.c: Likewise.
+       * lib/unicodeio.c: Likewise.
+       * lib/unistr.h: Likewise.
+       * tests/test-areadlink.c: Likewise.
+       * tests/test-areadlinkat.c: Likewise.
+       * tests/test-filenamecat.c: Likewise.
+       * tests/test-fseeko.c: Likewise.
+       * tests/test-ftello.c: Likewise.
+       * tests/test-getdate.c: Likewise.
+       * tests/test-getgroups.c: Likewise.
+       * tests/test-gethostname.c: Likewise.
+       * tests/test-quotearg.c: Likewise.
+       * tests/test-version-etc.c: Likewise.
+       * tests/test-xalloc-die.c: Likewise.
+       * tests/test-xfprintf-posix.c: Likewise.
+       * tests/test-xprintf-posix.c: Likewise.
+       * tests/test-xvasprintf.c: Likewise.
+
+       tests: avoid compiler warnings
+       * tests/test-fcntl.c (main): Delete unused parameters.
+       * tests/test-freopen-safer.c (main): Likewise.
+       * tests/test-xalloc-die.c (main): Mark unused parameters.
+       * tests/test-fseeko.c (main): Likewise.
+       * tests/test-ftello.c (main): Likewise.
+       * tests/test-nanosleep.c (main): Avoid declaration warning.
+       * tests/test-sleep.c (main): Likewise.
+       * tests/test-unsetenv.c (main): Silence warning about string
+       literal.
+       * m4/setenv.m4 (gl_FUNC_UNSETENV): Likewise.
+
+2009-12-23  Bruno Haible  <bruno@clisp.org>
+
+       * tests/test-localename.c (test_locale_name): New function, extracted
+       from main. Also test mixed situations.
+       (test_locale_name_posix, test_locale_name_environ,
+       test_locale_name_default): New functions.
+       (main): Invoke them all.
+       * modules/localename-tests (configure.ac): Test for newlocale.
+
+2009-12-23  Bruno Haible  <bruno@clisp.org>
+
+       unistd: Ensure getcwd gets declared before being overridden.
+       * lib/unistd.in.h: Conditionally include <io.h>.
+
+2009-12-22  Bruno Haible  <bruno@clisp.org>
+
+       wchar: Diagnose broken combination of glibc and gcc versions and flags.
+       * m4/wchar.m4 (gl_WCHAR_H_INLINE_OK): New macro.
+       (gl_WCHAR_H): Invoke it.
+       * m4/btowc.m4 (gl_FUNC_BTOWC): Require it.
+       * doc/posix-headers/wchar.texi: Mention the interoperability problem.
+       Reported by Karl Berry <karl@freefriends.org>.
+
+2009-12-22  Eric Blake  <ebb9@byu.net>
+
+       math, unistd: avoid redundant includes
+       * lib/math.in.h (isnan): No need to re-include <math.h>.
+       * lib/unistd.in.h (getcwd): Likewise, for <stdlib.h>.
+
+       getsubopt: work around cygwin bug
+       * lib/stdlib.in.h (includes): Move unistd inclusion sooner, to
+       avoid conflicting with system getsubopt.
+       * doc/posix-functions/getsubopt.texi (getsubopt): Document the
+       bug.
+
+       getopt: synchronize from glibc
+       * lib/getopt.c (_getopt_initialize, _getopt_internal_r): Swap
+       parameter order.  Adjust all callers.
+       (_getopt_internal_r, main): Adjust quoting in error messages.
+       Drop considerations for outdated POSIX 1003.2 error message.
+       * lib/getopt1.c (_getopt_long_r, _getopt_long_only_r): Adjust
+       callers.
+       * lib/getopt_int.h (_getopt_internal_r): Adjust prototype.
+
+       test-getopt: test stderr behavior
+       * modules/getopt-posix-tests (Depends-on): Add dup2.
+       * tests/test-getopt.c (ASSERT): Avoid stderr.
+       (main): Move stderr to a temporary file.
+       * tests/test-getopt.h (getopt_loop): No longer manipulate opterr.
+       Instead, add parameter to inform caller if output occurred.
+       (test_getopt): Adjust all existing tests to expect silence, and
+       add new tests of leading ":".
+       * doc/glibc-functions/getopt_long.texi (getopt_long): Document
+       glibc shortcomings with leading "-:" or "+:" in optstring.
+       * doc/glibc-functions/getopt_long_only.texi (getopt_long_only):
+       Likewise.
+       * doc/posix-functions/getopt.texi (getopt): Likewise.
+
+       test-getopt: enhance test
+       * m4/getopt.m4 (gl_GETOPT_CHECK_HEADERS): Require that getopt_long
+       supports optind=0.
+       * tests/test-getopt.c (OPTIND_MIN): Move...
+       * tests/test-getopt.h (OPTIND_MIN): ...here.
+       * tests/test-getopt_long.h (test_getopt_long): Add more coverage.
+       Require that optind=0 works, since modern BSD supports it in
+       addition to optreset, and since coreutils expects it.
+       (test_getopt_long_only): New test.
+       * doc/glibc-functions/getopt_long.texi (getopt_long): Document
+       glibc shortcomings with 'W;', and enforcement of optind=0.
+       * doc/glibc-functions/getopt_long_only.texi (getopt_long_only):
+       Likewise.
+
+2009-12-21  Bruno Haible  <bruno@clisp.org>
+
+       localename: Improvements for MacOS X and Cygwin.
+       * lib/localename.h (gl_locale_name_environ): New declaration.
+       * lib/localename.c (gl_locale_name_environ): New function, extracted from
+       gl_locale_name_posix. Ignore dummy LANG values on MacOS X and Cygwin.
+       (gl_locale_name_posix): Invoke it.
+       (gl_locale_name_default): Add comments. Use Windows native API also on
+       Cygwin.
+
+2009-12-21  Bruno Haible  <bruno@clisp.org>
+
+       Update list of Win32 locale ids.
+       * lib/localename.c (LANG_ROMANSH): Renamed from LANG_RHAETO_ROMANCE.
+       (LANG_SAMI): Renamed from LANG_SAAMI.
+       (LANG_BASHKIR, LANG_LUXEMBOURGISH, LANG_GREENLANDIC,
+       LANG_MAPUDUNGUN, LANG_MOHAWK, LANG_BRETON, LANG_OCCITAN, LANG_CORSICAN,
+       LANG_ALSATIAN, LANG_YAKUT, LANG_KICHE, LANG_KINYARWANDA, LANG_WOLOF,
+       LANG_DARI, LANG_SCOTTISH_GAELIC): New macros.
+       (SUBLANG_AFRIKAANS_SOUTH_AFRICA, SUBLANG_ALBANIAN_ALBANIA,
+       SUBLANG_ALSATIAN_FRANCE, SUBLANG_AMHARIC_ETHIOPIA,
+       SUBLANG_ARMENIAN_ARMENIA, SUBLANG_ASSAMESE_INDIA,
+       SUBLANG_BASHKIR_RUSSIA, SUBLANG_BASQUE_BASQUE,
+       SUBLANG_BELARUSIAN_BELARUS, SUBLANG_BRETON_FRANCE,
+       SUBLANG_BULGARIAN_BULGARIA, SUBLANG_CAMBODIAN_CAMBODIA,
+       SUBLANG_CATALAN_SPAIN, SUBLANG_CORSICAN_FRANCE,
+       SUBLANG_CZECH_CZECH_REPUBLIC, SUBLANG_DANISH_DENMARK,
+       SUBLANG_DARI_AFGHANISTAN, SUBLANG_DIVEHI_MALDIVES,
+       SUBLANG_DUTCH_SURINAM, SUBLANG_ESTONIAN_ESTONIA,
+       SUBLANG_FAEROESE_FAROE_ISLANDS, SUBLANG_FARSI_IRAN,
+       SUBLANG_FINNISH_FINLAND, SUBLANG_FRISIAN_NETHERLANDS,
+       SUBLANG_GALICIAN_SPAIN, SUBLANG_GEORGIAN_GEORGIA,
+       SUBLANG_GREEK_GREECE, SUBLANG_GREENLANDIC_GREENLAND,
+       SUBLANG_GUJARATI_INDIA, SUBLANG_HAUSA_NIGERIA_LATIN,
+       SUBLANG_HEBREW_ISRAEL, SUBLANG_HINDI_INDIA, SUBLANG_HUNGARIAN_HUNGARY,
+       SUBLANG_ICELANDIC_ICELAND, SUBLANG_IGBO_NIGERIA,
+       SUBLANG_INDONESIAN_INDONESIA, SUBLANG_INUKTITUT_CANADA,
+       SUBLANG_INUKTITUT_CANADA_LATIN, SUBLANG_IRISH_IRELAND,
+       SUBLANG_JAPANESE_JAPAN, SUBLANG_KANNADA_INDIA,
+       SUBLANG_KAZAK_KAZAKHSTAN, SUBLANG_KICHE_GUATEMALA,
+       SUBLANG_KINYARWANDA_RWANDA, SUBLANG_KONKANI_INDIA,
+       SUBLANG_KYRGYZ_KYRGYZSTAN, SUBLANG_LAO_LAOS, SUBLANG_LATVIAN_LATVIA,
+       SUBLANG_LITHUANIAN_LITHUANIA, SUBLANG_LOWER_SORBIAN_GERMANY,
+       SUBLANG_LUXEMBOURGISH_LUXEMBOURG, SUBLANG_MACEDONIAN_MACEDONIA,
+       SUBLANG_MALAYALAM_INDIA, SUBLANG_MALTESE_MALTA,
+       SUBLANG_MAORI_NEW_ZEALAND, SUBLANG_MAPUDUNGUN_CHILE,
+       SUBLANG_MARATHI_INDIA, SUBLANG_MOHAWK_CANADA, SUBLANG_NEPALI_NEPAL,
+       SUBLANG_OCCITAN_FRANCE, SUBLANG_ORIYA_INDIA,
+       SUBLANG_PASHTO_AFGHANISTAN, SUBLANG_POLISH_POLAND,
+       SUBLANG_ROMANSH_SWITZERLAND, SUBLANG_SAMI_NORTHERN_NORWAY,
+       SUBLANG_SAMI_NORTHERN_SWEDEN, SUBLANG_SAMI_NORTHERN_FINLAND,
+       SUBLANG_SAMI_LULE_NORWAY, SUBLANG_SAMI_LULE_SWEDEN,
+       SUBLANG_SAMI_SOUTHERN_NORWAY, SUBLANG_SAMI_SOUTHERN_SWEDEN,
+       SUBLANG_SAMI_SKOLT_FINLAND, SUBLANG_SAMI_INARI_FINLAND,
+       SUBLANG_SANSKRIT_INDIA, SUBLANG_SINHALESE_SRI_LANKA,
+       SUBLANG_SLOVAK_SLOVAKIA, SUBLANG_SLOVENIAN_SLOVENIA,
+       SUBLANG_SOTHO_SOUTH_AFRICA, SUBLANG_SWAHILI_KENYA,
+       SUBLANG_SWEDISH_SWEDEN, SUBLANG_SYRIAC_SYRIA,
+       SUBLANG_TAGALOG_PHILIPPINES, SUBLANG_TAJIK_TAJIKISTAN,
+       SUBLANG_TAMIL_INDIA, SUBLANG_TATAR_RUSSIA, SUBLANG_TELUGU_INDIA,
+       SUBLANG_THAI_THAILAND, SUBLANG_TSWANA_SOUTH_AFRICA,
+       SUBLANG_TURKISH_TURKEY, SUBLANG_TURKMEN_TURKMENISTAN,
+       SUBLANG_UKRAINIAN_UKRAINE, SUBLANG_UPPER_SORBIAN_GERMANY,
+       SUBLANG_VIETNAMESE_VIETNAM, SUBLANG_WELSH_UNITED_KINGDOM,
+       SUBLANG_WOLOF_SENEGAL, SUBLANG_XHOSA_SOUTH_AFRICA,
+       SUBLANG_YAKUT_RUSSIA, SUBLANG_YI_PRC, SUBLANG_YORUBA_NIGERIA,
+       SUBLANG_ZULU_SOUTH_AFRICA): New macros.
+       (gl_locale_name_from_win32_LANGID): Handle also the territory neutral
+       locale ids. Add support for Alsatian, Bashkir, Breton, Corsican, Dari,
+       Greenlandic, K'iche', Kinyarwanda, Luxembourgish, Mapudungun, Mohawk,
+       Occitan, Scottish Gaelic, Wolof, Yakut. Change language code for Yi.
+       Add more languages and countries for Sami, Sorbian. Add more countries
+       for Serbian, Dutch. Add more scripts for Inuktitut. Be more precise
+       for Pashto. Change country for Syriac, Tswana.
+
 2009-12-21  Eric Blake  <ebb9@byu.net>
 
        test-utimens: avoid spurious failure