2015-10-14  Mike Frysinger  <vapier@chromium.org>

	intl/localename: control langinfo.h inclusion
	This header is only used to work around buggy behavior in old
	versions of glibc, so do not include it all the time.  Otherwise
	we get build failures on systems that do not provide langinfo.h.
	* localename.c: Wrap langinfo.h include with same
	ifdefs used in the source later on.

2015-09-11  Daiki Ueno  <ueno@gnu.org>

	* gettext 0.19.6 released.

2015-08-26  Paul Eggert  <eggert@cs.ucla.edu>

	intl: fix memory leak in _nl_load_domain
	* loadmsgcat.c (_nl_load_domain):
	Free data after a read failure.  See:
	https://sourceware.org/bugzilla/show_bug.cgi?id=18871

2015-08-21  Daiki Ueno  <ueno@gnu.org>

	intl: Pacify compilation with pre-C99 compilers
	* loadmsgcat.c (_nl_load_domain): Move the call to
	__libc_lock_define_initialized_recursive to the end of local
	variable declarations to avoid extra ';' being expanded to an
	empty statement.
	Reported by pan7 in:
	<http://savannah.gnu.org/support/?108864>.

2015-07-10  Daiki Ueno  <ueno@gnu.org>

	* gettext 0.19.5 released.

2015-07-10  Daiki Ueno  <ueno@gnu.org>

	intl: Update from gnulib
	* localename.c: Update from gnulib.

2015-06-23  Daiki Ueno  <ueno@gnu.org>

	* locale.alias: Update from glibc:
	2015-05-22  Paul Eggert  <eggert@cs.ucla.edu>
	  Remove obsolete aliases that broke 'locale -a'
	  [BZ #18412]
	  * intl/locale.alias: Remove obsolete aliases "bokmål" and "français"
	  which caused 'locale -a' to output Latin-1 data in UTF-8 locales,
	  breaking some applications that use 'locale -a' output.
	  Change the encoding of this file from Latin-1 to ASCII to avoid
	  other potential problems with people grepping this file.

2015-03-12  Daiki Ueno  <ueno@gnu.org>

	intl: Update from gnulib
	* localename.c, vasnprintf.c: Update from gnulib.

2015-01-22  Daiki Ueno  <ueno@gnu.org>

	intl: Update from gnulib
	* config.charset, localcharset.c, relocatable.c, vasnprintf.c:
	Update from gnulib.
	* codeset.m4, extern-inline.m4, fcntl-o.m4, gettext.m4, glibc2.m4:
	* glibc21.m4, iconv.m4, intdiv0.m4, intldir.m4, intlmacosx.m4:
	* intmax.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lock.m4:
	* longlong.m4, nls.m4, printf-posix.m4, progtest.m4:
	* size_max.m4, stdint_h.m4, threadlib.m4, uintmax_t.m4:
	* visibility.m4, wchar_t.m4, wint_t.m4, xsize.m4: Update copyright
	year.

2015-01-21  Will Newton  <will.newton@linaro.org>

	intl: Merge from glibc
	* bindtextdom.c: Update copyright to use year ranges.
	* dcgettext.c: Update copyright to use year ranges.
	[_LIBC]: Use libc_hidden_def instead of INTDEF.
	* dcigettext.c: Update copyright to use year ranges.
	Test HAVE_TSEARCH with #ifdef rather than #if.
	(DCIGETTEXT) [_LIBC]: Use __current_locale_name instead of
	_current_locale_name.
	* dcngettext.c: Update copyright to use year ranges.
	* dgettext.c: Update copyright to use year ranges.
	[_LIBC]: Remove use of INTUSE macro.
	* dngettext.c: Update copyright to use year ranges.
	* explodename.c: Likewise.
	* finddomain.c: Update copyright to use year ranges.
	(_nl_finddomain_subfreeres): Use void in no-arguments function
	definition.
	* gettext.c: Update copyright to use year ranges.
	[_LIBC]: Remove use of INTUSE macro.
	* gettextP.h: Update copyright to use year ranges.
	[_LIBC]: Forward declaration of struct loaded_domain.
	* gmo.h: Update copyright to use year ranges.
	* hash-string.c: Likewise.
	* hash-string.h: Likewise.
	* l10nflist.c: Update copyright to use year ranges.
	[_LIBC]: Remove use of INTUSE macro.
	Wrap pop function in [!ARCH_POP].
	* loadinfo.h: Update copyright to use year ranges.
	* loadmsgcat.c: Likewise.
	* localealias.c: Update copyright to use year ranges.
	Test ENABLE_RELOCATABLE with #ifdef rather than #if.
	[_LIBC]: Use __strcasecmp_l for strcasecmp.
	[_LIBC]: Use __fgets_unlocked for FGETS.
	Test HAVE_DECL_FGETS_UNLOCKED with #ifdef rather than #if.
	Test HAVE_DECL_FEOF_UNLOCKED with #ifdef rather than #if.
	(read_alias_file) [_LIBC]: Open file with O_CLOEXEC.
	(extend_alias_table): Use void in no-arguments function
	definition.
	* ngettext.c: Update copyright to use year ranges.
	* plural-exp.c: Update copyright to use year ranges.
	Test __APPLE_CC__ with #ifdef rather than #if.
	(GERMANIC_PLURAL): Make const.
	(init_germanic_plural): Use void in no-arguments function
	definition.
	* plural-exp.h: Update copyright to use year ranges.
	(GERMANIC_PLURAL): Make const.
	* plural.y: Update copyright to use year ranges.
	* textdomain.c: Likewise.

2015-01-04  Václav Slavík  <vaclav@slavik.io>  (tiny change)

	intl: Add missing libintl.h dependency from pluralx.$lo
	plural(x).c depends on libintl.h if ENABLE_NLS, but the makefile
	didn't have corresponding dependency for pluralx.c, because
	d2d04ba forgot to add it.  Fix by using $(PLURAL_OBJECT) for the
	dependency rule too.
	* Makefile.in ($(PLURAL_OBJECT)): Depend on libintl.h.

2014-12-24  Daiki Ueno  <ueno@gnu.org>

	* gettext 0.19.4 released.

2014-12-24  Daiki Ueno  <ueno@gnu.org>

	* libgnuintl.in.h (LIBINTL_VERSION): Bump to 0.19.4.
	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 9:3:1.

2014-12-04  Daiki Ueno  <ueno@gnu.org>

	intl: Make the LCOV workaround non-intrusive
	* Makefile.in (PLURAL_OBJECT): New variable.
	(OBJECTS): Refer to $(PLURAL_OBJECT) instead of plural.$lo.
	(pluralx.c, pluralx.lo): New rule.
	(mostlyclean): Remove pluralx.c.

2014-12-03  Daiki Ueno  <ueno@gnu.org>

	intl: Work around LCOV relative base directory resolution
	* Makefile.in (plural.lo): Resolve relative source file name given
	with '#line' directive, when $(srcdir) != $(builddir).
	(mostlyclean): Remove plural.c generated in the 'plural.lo' rule.

2014-10-15  Daiki Ueno  <ueno@gnu.org>

	* gettext 0.19.3 released.

2014-10-15  Daiki Ueno  <ueno@gnu.org>

	* libgnuintl.in.h (LIBINTL_VERSION): Bump to 0.19.3.

2014-09-30  Daiki Ueno  <ueno@gnu.org>

	* localcharset.c, localename.c, vasnprintf.c: Update from Gnulib.

2014-07-16  Daiki Ueno  <ueno@gnu.org>

	* localename.c: Update from Gnulib.
	2014-07-10  Assaf Gordon  <assafgordon@gmail.com>
            localename: avoid -Wsuggest-attribute={const,pure} warnings
            * lib/localename.c (string_hash): Tag internal function as pure.
	* xsize.c (XSIZE_INLINE): Remove _GL_UNUSED definition.  It will
	be set through intl.m4.

2014-07-14  Daiki Ueno  <ueno@gnu.org>

	* gettext 0.19.2 released.

2014-07-14  Daiki Ueno  <ueno@gnu.org>

	* Makefile.in (distclean): Remove intl/VERSION for gettext-runtime
	and gettext-tools packages.

2014-07-03  Siddhesh Poyarekar  <siddhesh@redhat.com>

	intl: Sync up loadmsgcat.c with glibc
	* loadmsgcat.c [_LIBC]: Define PRI_MACROS_BROKEN unconditionally.

2014-07-03  Siddhesh Poyarekar  <siddhesh@redhat.com>

	intl: Sync up loadmsgcat.c with glibc
	* loadmsgcat.c: Include assert.h.
	(_nl_load_domain): Add semicolon to end of line.
	(_nl_load_domain)[HAVE_MMAP]: Use MAP_FAILED and assert that
	it is (void *) -1.
	(_nl_load_domain)[_LIBC]: Call __libc_rwlock_init instead of
	gl_rwlock_init.
	(_nl_unload_domain): Cast convd->encoding to non-const.

2014-06-17  Daiki Ueno  <ueno@gnu.org>

	intl: Add back ChangeLog to gettext-runtime distribution
	* Makefile.in (DISTFILES.gettext): Add ChangeLog.

2014-06-16  Daiki Ueno  <ueno@gnu.org>

	intl: Stop installing ChangeLog.inst
	After the git-version-gen migration (commit fbf4e276), the
	creation of gettext-tools/intl/ChangeLog.inst in configure.ac was
	removed because we lost access to $RELEASE_DATE.  Given that
	intl/VERSION provides enough information, simply drop the
	ChangeLog file.
	Problem reported by Bruce Korb in
	<https://lists.gnu.org/archive/html/bug-gettext/2014-06/msg00022.html>.
	* Makefile.in (install-data): Don't install ChangeLog.inst.
	(distclean): Don't remove ChangeLog.inst.
	(uninstall): Don't remove ChangeLog under $(gettextsrcdir)/intl.
	(dist): Don't include ChangeLog in the distribution.

2014-06-10  Daiki Ueno  <ueno@gnu.org>

	* gettext 0.19.1 released.

2014-06-02  Daiki Ueno  <ueno@gnu.org>

	* gettext 0.19 released.

2014-05-11  Daiki Ueno  <ueno@gnu.org>

	* xsize.c (_GL_UNUSED): Define, if undefined.

2014-04-30  Steve Ellcey  <sellcey@mips.com>  (tiny change)

	* loadmsgcat.c (PRI_MACROS_BROKEN) [_LIBC]: Define to 0, if
	undefined.

2014-04-23  Daiki Ueno  <ueno@gnu.org>

	intl: Port to Bison 3.0
	* plural.y: Don't use removed YYLEX_PARAM and YYPARSE_PARAM
	macros; replace deprecated %pure_parser with '%define api.pure
	full'; adjust yylex/yyerror arglist.
	* plural-exp.h (PLURAL_PARSE): Use explicit type 'struct
	parse_args *arg' for ARG.

2013-05-07  Carlos O'Donell  <carlos@redhat.com>
            Jeff Law  <law@redhat.com>

	* dcigettext.c (DCIGETTEXT): Skip translating if _nl_find_msg
	returns -1.
	(_nl_find_msg): Return -1 if recursive call returned -1. If
	newmem is null return -1.
	* loadmsgcat.c (_nl_load_domain): If _nl_find_msg returns -1
	abort loading the domain.

	* dcigettext.c (_nl_find_msg): Avoid use after potential
	free.  Simplify list management for _LIBC case.

2013-03-07  Daiki Ueno  <ueno@gnu.org>

	* setlocale.c (libintl_setlocale): Signal a change of the loaded
	catalogs by incrementing _nl_msg_cat_cntr.
	Reported by Guido Flohr at <https://savannah.gnu.org/bugs/?38162>.

2013-05-30  Thomas Petazzoni <thomas.petazzoni@free-electrons.com>  (tiny change)

	* Makefile.in (SHELL): Use @SHELL@ instead of /bin/sh.

2013-03-05  Daiki Ueno  <ueno@gnu.org>

	* verify.h: Update copyright year.
	* xsize.h: Likewise.

2013-02-25  Daiki Ueno  <ueno@gnu.org>

	Determine imported C symbol prefix at configure time.
	Suggested by Evgeny Grin in <http://savannah.gnu.org/bugs/?29946>.
	* intl-exports.c (IMP): Define depending on the result of the
	configure run.

2013-01-21  Daiki Ueno  <ueno@gnu.org>

	Remove references to non-existing COPYING.LIB-2.*.
	Reported by Christian Weisgerber <naddy@mips.inka.de>.
	* Makefile.in (DISTFILES.obsolete): Add COPYING.LIB-2.*.
	(install-data): Install COPYING.LIB instead of no longer existing
	COPYING.LIB-2.*.
	(uninstall): Remove COPYING.LIB instead of no longer existing
	COPYING.LIB-2.*.

2013-01-17  Daiki Ueno  <ueno@gnu.org>

	Fix link errors related to C99-style extern inline.
	Reported by Sam Thursfield <sam.thursfield@codethink.co.uk>.
	* Makefile.in (SOURCES): Add xsize.c.
	(OBJECTS): Add xsize.$lo.
	(xsize.lo): New rule.
	(printf.$lo): Add xsize.c to dependencies.
	* xsize.c: New file, imported from gnulib.

2012-12-25  Daiki Ueno  <ueno@gnu.org>

	* gettext-0.18.2 released.

2012-12-25  Daiki Ueno  <ueno@gnu.org>

	* libgnuintl.in.h (LIBINTL_VERSION): Bump to 0.18.2.
	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 9:2:1.

2012-12-25  Daiki Ueno  <ueno@gnu.org>

	* intl-exports.c (IMP): Check __MINGW32__ as well as _WIN64.

2012-12-20  Daiki Ueno  <ueno@gnu.org>

	localecharset: respect the thread-specific locale on Mac OS X
	* lib/localcharset.c (locale_charset) [DARWIN7]: Use MB_CUR_MAX_L
	instead of MB_CUR_MAX.

2012-12-21  Daiki Ueno  <ueno@gnu.org>

	Fix W64 build errors.
	* intl-exports.c (IMP) [_WIN64]: Prefix "__imp_" instead of
	"_imp__".
	* osdep.c: Include intl-exports.c on mingw as well as Cygwin.

2012-12-10  Daiki Ueno  <ueno@unixuser.org>

	* intl-compat.c: Fix typo in the copyright header.

2012-11-29  Paul Eggert  <eggert@cs.ucla.edu>

	* vasnprintf.c (MAX_ROOM_NEEDED): Now static, not static
	inline.

2012-11-29  Paul Eggert  <eggert@cs.ucla.edu>

	* lock.c (gl_waitqueue_init)
	(gl_waitqueue_notify_first, gl_waitqueue_notify_all):
	Change 'static inline' to 'inline'.

2012-09-24  Paul Eggert  <eggert@cs.ucla.edu>

	localename: port gl_locale_name_thread_unsafe to FreeBSD
	* localename.c (gl_locale_name_thread_unsafe): Port to FreeBSD,
	and use the simpler FreeBSD implementation on Mac OS X as well.
	Original idea suggested by Ed Maste in
	<http://lists.gnu.org/archive/html/bug-gnulib/2012-09/msg00094.html>.

2012-09-22  Paul Eggert  <eggert@cs.ucla.edu>

	* xsize.h (XSIZE_INLINE): New macro.  Replace all uses of
	'static inline' with them.  Use _GL_INLINE_HEADER_BEGIN,
	_GL_INLINE_HEADER_END.

2012-09-22  Paul Eggert  <eggert@cs.ucla.edu>

	misc: don't limit commentary to inline functions
	* xsize.h: Contrast macros to functions in general, not just
	to inline functions, when the commentary does not apply only to
	inline functions.

2012-09-16  Paul Eggert  <eggert@cs.ucla.edu>

	localcharset: work around Mac OS X bug with UTF-8 and MB_CUR_MAX
	* localcharset.c (locale_charset) [DARWIN7]:
	Return "ASCII" if the system reports "UTF-8" and MB_CUR_MAX <= 1,
	as these two values are incompatible.  Problem reported by Max Horn.
	For more discussion, please see
	<http://lists.gnu.org/archive/html/bug-gnulib/2012-09/msg00061.html>.

2012-07-20  Eric Blake  <eblake@redhat.com>

	verify: document conflict with -Wnested-externs
	* verify.h: Give hint about usage when gcc warnings are enabled.

2012-06-22  Bruno Haible  <bruno@clisp.org>

	Write "Mac OS X" instead of "MacOS X".
	* config.charset: Write "Mac OS X" instead of "MacOS X".
	* localcharset.c: Likewise.
	* localename.c: Likewise.
	* vasnprintf.c: Likewise.

2012-06-03  Jim Meyering  <jim@meyering.net>

	* dcigettext.c: Spelling fixes.

2012-02-05  Paul Eggert  <eggert@cs.ucla.edu>

	* vasnprintf.c: Spelling fixes.

2012-01-26  Bruno Haible  <bruno@clisp.org>

	Modernize quoting.
	* Makefile.in: Quote 'like this', not `like this', as per the recent
	change to the GNU coding standards.
	* libgnuintl.in.h: Likewise.
	* vasnprintf.h: Likewise.

2012-01-06  Paul Eggert  <eggert@cs.ucla.edu>

	doc: C11 and C++11 are now official
	* verify.h: Replace references to draft C1X to C11, and to draft C++0X
	to C++11.

2012-01-06  Bruno Haible  <bruno@clisp.org>

	Talk about "native Windows API", not "Woe32".
	* localcharset.c: Update comments to mention native Windows.
	* relocatable.c: Likewise.
	* config.charset: More comments.

2012-01-04  Bruno Haible  <bruno@clisp.org>

	Talk about "native Windows API", not "Win32".
	* vasnprintf.c: Update comments to mention native Windows.
	* localcharset.c: Update comments to mention native Windows.
	(WINDOWS_NATIVE): Renamed from WIN32_NATIVE.
	* localename.c: Likewise.
	* relocatable.c: Likewise.
	* lock.h: Update comments to mention native Windows.
	(USE_WINDOWS_THREADS): Renamed from USE_WIN32_THREADS.
	* lock.c (USE_WINDOWS_THREADS): Renamed from USE_WIN32_THREADS.

2011-10-15  Bruno Haible  <bruno@clisp.org>

	Avoid crash in *printf functions for invalid format string with dollar.
	* printf.c (libintl_vsnprintf, libintl_vswprintf): Don't crash in
	mempy if libintl_vasnprintf returned NULL.
	Reported by Jeong, Heon <bimarket@gmail.com>
	in <https://savannah.gnu.org/bugs/?34555>.

2011-10-15  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Optimize bit search operation.
	* vasnprintf.c (divide): Use optimizations from gnulib's
	integer_length.c.

2011-10-15  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Fix comments.
	* vasnprintf.c (decode_long_double, decode_double): Fix comments.

2011-10-03  Bruno Haible  <bruno@clisp.org>

	* relocatable.c (ENABLE_COSTLY_RELOCATABLE): New macro.
	(compute_curr_prefix, shared_library_fullname,
	find_shared_library_fullname, get_shared_library_fullname, relocate):
	Use it together with PIC && INSTALLDIR.
	Reported by <jojelino@gmail.com>
	via Charles Wilson <cygwin@cwilson.fastmail.fm>.

2011-07-07  Bruno Haible  <bruno@clisp.org>

	Complete the change in vasnprintf.c from 2010-04-10.
	* printf.c (system_vsnprintf) [mingw]: Prefer vsnprintf over
	_vsnprintf.

2011-06-15  Paul Eggert  <eggert@cs.ucla.edu>

	* verify.h (verify_true): Deprecate.
	(verify_expr): New macro.

2011-06-03  Bruno Haible  <bruno@clisp.org>

	* verify.h: New file, from gnulib.
	* Makefile.in (HEADERS): Add it.

2010-10-10  Paul Eggert  <eggert@cs.ucla.edu>

	rewrite int foo[2*X-1] to verify(X) or to int foo[X?1:-1]
	* vasnprintf.c: Include "verify.h".
	(mp_limb_verify, mp_twolimb_verify, TCHAR_T_verify): Remove, replacing
	with a verify call.

2011-06-03  Bruno Haible  <bruno@clisp.org>

	Copyright: Use LGPL 2.1 instead of LGPL 2.0.
	* COPYING.LIB: Renamed from COPYING.LIB-2.1.
	* COPYING.LIB-2.0: Remove file.
	* *.h, *.c, *.y, *.sin, config.charset, locale.alias, Makefile.in:
	Update copyright header.
	* libintl.rc: Update comments field.

2011-04-08  Paul Eggert  <eggert@cs.ucla.edu>

	* relocatable.c (_GL_USE_STDLIB_ALLOC): Define.
	(malloc): Don't #undef; no longer needed.

2011-02-28  Bruno Haible  <bruno@clisp.org>

	Assume ANSI C behaviour of free().
	* localcharset.c (get_charset_aliases): Remove NULL test before calling
	free().
	Suggested by Simon Josefsson <simon@josefsson.org>.

2011-02-28  Corinna Vinschen  <vinschen@redhat.com>  (tiny change)
            Charles Wilson  <cygwin@cwilson.fastmail.fm>  (tiny change)
            Bruno Haible  <bruno@clisp.org>  (tiny change)

	On Cygwin, use /proc file system instead of win32 API.
	* relocatable.c: On Cygwin, use file names from /proc, rather than
	Win32 file names.
	(DllMain): Simplify by removing Cygwin specific code.
	(find_shared_library_fullname): Use Linux specific implementation also
	for Cygwin.
	(get_shared_library_fullname): Update accordingly.

2011-02-23  Bruno Haible  <bruno@clisp.org>

	Fix misindentation of preprocessor directives.
	* vasnprintf.c (decode_long_double): Reindent preprocessor directives.

2011-02-12  Bruno Haible  <bruno@clisp.org>

	Workaround native Windows bug.
	* setlocale.c (rpl_setlocale): On native Windows, when setlocale
	succeeds but sets LC_CTYPE to "C", report a failure.

2011-02-12  Bruno Haible  <bruno@clisp.org>

	Avoid clashing overrides for setlocale.
	* libgnuintl.in.h (setlocale): Don't override if the gnulib override is
	already enabled.

2011-06-03  Bruno Haible  <bruno@clisp.org>

	* wprintf-parse.h: Apply same changes as to printf-parse.h.

2011-02-04  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Reduce use of malloc for small format strings.
	* printf-args.h (N_DIRECT_ALLOC_ARGUMENTS): New macro.
	(arguments): Add room for the first 7 arguments.
	* printf-parse.h (N_DIRECT_ALLOC_DIRECTIVES): New macro.
	(char_directives, u8_directives, u16_directives, u32_directives): Add
	room for the first 7 directives.
	* printf-parse.c: Include <string.h>.
	(PRINTF_PARSE): Change memory handling code so that it uses the first
	7 preallocated elements in an 'arguments' or 'DIRECTIVES' struct.
	* vasnprintf.c (VASNPRINTF): Update memory handling code.
	Reported by Pádraig Brady <P@draigbrady.com>.

2011-01-01  Jim Meyering  <meyering@redhat.com>

	maint: update almost all copyright ranges to include 2011
	Run the new "make update-copyright" rule.

2010-11-20  Bruno Haible  <bruno@clisp.org>

	Port to uClibc.
	* dcigettext.c (_nl_find_msg): Treat uClibc like a non-glibc platform.
	* loadmsgcat.c (get_sysdep_segment_value): Likewise.

2010-11-20  Bruno Haible  <bruno@clisp.org>

	Ensure that <features.h> is included before __GLIBC__ is tested.
	* printf-parse.h: Include <features.h>.
	Reported by Mike Frysinger <vapier@gentoo.org>.

2010-11-20  Bruno Haible  <bruno@clisp.org>

	Port to uClibc.
	* localename.c (gl_locale_name_thread_unsafe, HAVE_LOCALE_NULL): Treat
	uClibc like a non-glibc platform.
	* printf-parse.h (FLAG_LOCALIZED): Likewise.
	* printf-parse.c (PRINTF_PARSE): Likewise.
	* relocatable.c (find_shared_library_fullname): Treat uClibc like
	glibc.
	* vasnprintf.c (decimal_point_char): Treat uClibc like glibc.
	(VASNPRINTF): Treat uClibc like a non-glibc platform.
	Reported by Mike Frysinger <vapier@gentoo.org>.

2010-11-20  Bruno Haible  <bruno@clisp.org>

	Fix a comment.
	* vasnprintf.c (VASNPRINTF): Fix comment.

2010-11-07  Bruno Haible  <bruno@clisp.org>

	* loadmsgcat.c (get_sysdep_segment_value): Update comment.

2010-11-07  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Support I flag on glibc systems.
	* printf-parse.h (FLAG_LOCALIZED): New macro.
	* printf-parse.c (PRINTF_PARSE): Handle the 'I' flag.
	* vasnprintf.c (VASNPRINTF): Pass the 'I' flag on to the system's
	snprintf function.

2010-11-07  Bruno Haible  <bruno@clisp.org>

	Rename libgnuintl.h.in to libgnuintl.in.h.
	* libgnuintl.in.h: New file, renamed from libgnuintl.h.in.
	* Makefile.in (HEADERS, libgnuintl.h, libintl.h): Update.
	* printf.c: Update.

2010-10-14  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Don't set errno to 0.
	* vasnprintf.c (VASNPRINTF): Save and restore errno around the block
	that sets it to 0.
	Reported by Gianluigi Tiesi <sherpya@netfarm.it>.

2010-06-09  Bruno Haible  <bruno@clisp.org>

	Avoid relocwrapper link errors due to gnulib replacement functions.
	* lib/relocatable.c: Use the system's malloc function.

2010-06-04  Bruno Haible  <bruno@clisp.org>

	* gettext-0.18.1 released.

2010-06-03  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.18.1.
	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 9:1:1.

2010-05-20  Bruno Haible  <bruno@clisp.org>

	* gettextP.h (_nl_locale_name): Comment out declaration.

2010-05-20  Bruno Haible  <bruno@clisp.org>

	Avoid a link error when building statically on mingw.
	* gettextP.h (gl_locale_name_thread): Alias to _nl_locale_name_thread.
	Reported by Rob <sisyphus1@optusnet.com.au>.

2010-05-16  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (printf): Add comment.

2010-05-09  Bruno Haible  <bruno@clisp.org>

	* gettext-0.18 released.

2010-05-09  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.18.
	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 9:0:1.
	* libintl.rc: Update year.

2010-05-09  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Fix syntax errors in libintl build on mingw.
	* vasnprintf.c (VASNPRINTF): Move a closing brace. Undefine
	pad_ourselves and prec_ourselves after use.

2010-04-03  Bruno Haible  <bruno@clisp.org>

	localename: Port to MacOS X 10.6.
	* localename.c (gl_locale_name_thread_unsafe): On MacOS X, try the
	memory layout of the locales in MacOS X 10.6 as well.
	Reported by Panu Kekäläinen <panu@kekalainen.eu>.

2010-05-08  Bruno Haible  <bruno@clisp.org>

	* config.charset: Update comments for Cygwin 1.7.
	* localcharset.c: Likewise.

2010-04-24  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Correct errno value in case of out-of-memory.
	* vasnprintf.c (VASNPRINTF): Set errno to 0 before calling SNPRINTF or
	sprintf. Use the errno value from SNPRINTF or sprintf.
	Reported by Ian Beckwith <ianb@erislabs.net>.

2010-04-10  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Correct handling of unconvertible wide string arguments.
	* vasnprintf.c (MAX_ROOM_NEEDED): New function, extracted from
	VASNPRINTF.
	(VASNPRINTF): Use it. After snprintf failed, allocate more memory only
	if HAVE_SNPRINTF_RETVAL_C99 is false and the allocated memory is
	smaller than the expected maximum need for the directive. Set errno to
	EILSEQ, not EINVAL, when the directive is 'c' or 's'.
	(local_strnlen, local_wcslen, local_wcsnlen): Update conditions.
	Reported by Jarno Rajahalme <jarno.rajahalme@nsn.com>.

2010-04-10  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Fix crash in %ls directive.
	* vasnprintf.c (VASNPRINTF): Don't abort when a unconvertible wide
	string is passed as argument to %ls, with no precision and no width.
	Reported by Jarno Rajahalme <jarno.rajahalme@nsn.com>.

2010-04-10  Bruno Haible  <bruno@clisp.org>

	vasnprintf: Fix multiple test failures on mingw.
	* vasnprintf.c (SNPRINTF) [mingw]: Define to snprintf, not _snprintf,
	or snwprintf, not _snwprintf.

2010-03-25  Bruno Haible  <bruno@clisp.org>

	Minor formatting changes.
	* localename.c: Insert space before sizeof's argument list.
	* lock.h: Insert space before function argument list.

2010-01-01  Bruno Haible  <bruno@clisp.org>

	localename: Avoid gcc warning.
	* localename.c (gl_locale_name_thread_unsafe): Don't define this
	function if it is not used.

2010-01-01  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): If GNULIB_defined_mbstate_t is defined,
	use wctomb instead of wcrtomb.

2009-12-26  Bruno Haible  <bruno@clisp.org>

	* libintl.rc: Update.

2009-12-26  Bruno Haible  <bruno@clisp.org>

	Use the thread-specific locale also on MacOS X.
	* dcigettext.c (HAVE_NL_LOCALE_NAME): Remove undef.
	Don't include <langinfo.h>.
	(HAVE_PER_THREAD_LOCALE): Define on any platform that has 'uselocale'.
	(DCIGETTEXT, guess_category_value): Use _nl_locale_name_thread_unsafe
	instead of glibc specific code.
	* gettextP.h (gl_locale_name_thread_unsafe): New macro.
	(_nl_locale_name_thread_unsafe): New declaration.

2009-12-26  Bruno Haible  <bruno@clisp.org>

	localename: Fix storage allocation of gl_locale_name_thread's result.
	* localename.c (SIZE_BITS, string_hash, struct hash_node,
	HASH_TABLE_SIZE, struniq_hash_table, struniq_lock, struniq): Define on
	all platforms that have 'uselocale'.
	(gl_locale_name_thread_unsafe): New function, extracted from
	gl_locale_name_thread.
	(gl_locale_name_thread): Call struniq on all platforms that have
	'uselocale'.

2009-12-23  Bruno Haible  <bruno@clisp.org>

	localename: Make aware of thread locale.
	* 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.
	Reported by Mike Gran <spk121@yahoo.com>.

2009-12-26  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (localename.$lo): Add dependency.

2009-12-21  Bruno Haible  <bruno@clisp.org>

	Define override of setlocale and newlocale functions.
	* gettextP.h (gl_locale_name_environ): New macro.
	(_nl_locale_name_environ): New declaration.
	* 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.
	* libgnuintl.h.in: On MacOS X, include <xlocale.h>.
	(setlocale, newlocale): New overrides.
	* setlocale.c: New file.
	* Makefile.in (SOURCES): Add setlocale.c.
	(OBJECTS): Add setlocale.$lo.
	(setlocale.lo): New rule.
	(libgnuintl.h, libintl.h): Substitute also HAVE_NEWLOCALE.
	(setlocale.$lo): Define dependencies.

2009-12-21  Bruno Haible  <bruno@clisp.org>

	Update list of Win32 locale ids.
	* 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-13  Bruno Haible  <bruno@clisp.org>

	* localcharset.c (locale_charset): Fix comment about use of GetACP.

2009-12-12  Bruno Haible  <bruno@clisp.org>

	* localcharset.c (locale_charset): Add comment about use of GetACP.

2009-12-12  Bruno Haible  <bruno@clisp.org>

	* intl-compat.c: Untabify.
	* intl-exports.c: Untabify.
	* langprefs.c: Untabify.
	* libgnuintl.h.in: Untabify.
	* localcharset.c: Untabify.
	* localename.c: Untabify.
	* lock.c: Untabify.
	* log.c: Untabify.
	* os2compat.h: Untabify.
	* printf-args.c: Untabify.
	* printf-args.h: Untabify.
	* printf-parse.c: Untabify.
	* printf-parse.h: Untabify.
	* printf.c: Untabify.
	* relocatable.c: Untabify.
	* relocatable.h: Untabify.
	* threadlib.c: Untabify.
	* tsearch.c: Untabify.
	* tsearch.h: Untabify.
	* vasnprintf.c: Untabify.
	* vasnwprintf.h: Untabify.
	* wprintf-parse.h: Untabify.

2009-12-11  Bruno Haible  <bruno@clisp.org>

	* config.charset: Untabify.

2009-11-22  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (decimal_point_char): Choose the fast path also on
	MacOS X.

2009-11-17  Eric Blake  <ebb9@byu.net>

	* vasnprintf.c (VASNPRINTF): Avoid shadowing our own local variables.

2009-10-10  Eric Blake  <ebb9@byu.net>

	* relocatable.c (compute_curr_prefix): Fix spelling.

2009-10-18  Bruno Haible  <bruno@clisp.org>

	Avoid symlink attack in localcharset module.
	* localcharset.c: Include <fcntl.h>, <unistd.h>.
	(O_NOFOLLOW): Define fallback.
	(get_charset_aliases): Don't open the file if it is a symbolic link.
	Reported by Fergal Glynn <fglynn@veracode.com>.

2009-08-20  Eric Blake  <ebb9@byu.net>

	* vasnprintf.c (decimal_point_char): Avoid warning on old-style
	declaration.

2009-08-10  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (DCHAR_SET): Undefine at the end.

2009-08-09  Bruno Haible  <bruno@clisp.org>

	Fix a compilation error on non-glibc systems that have gcc visibility
	support but deficient *printf functions.
	* printf.c (DLL_EXPORTED): Define to non-empty also when
	HAVE_VISIBILITY is true.
	Reported at <https://savannah.gnu.org/bugs/?27185>.

2009-06-06  Bruno Haible  <bruno@clisp.org>

	Interoperate with automake-1.11 provided --enable-silent-rules option.
	* Makefile.in (AM_V_at, AM_V_AR, AM_V_CC, AM_V_GEN, AM_V_YACC,
	AM_V_lt): New variables.
	(libintl.a, libintl.la, .c.o, .y.c, *.lo): Silence 'make' output if
	silent rules requested.

2009-04-26  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Update after the calling convention of
	u*_conv_from_encoding and u*_conv_to_encoding changed.

2009-03-25  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (RC): New variable.
	(OBJECTS_RES_yes): Add .$lo suffix.
	(libintl.res.o): Renamed from libintl.res.
	(libintl.res.lo): New rule.
	(mostlyclean): Simplify.

2009-03-23  Jim Meyering  <meyering@redhat.com>

	* vasnprintf.c (divide): Fix typo in comment.

2009-02-26  Bruno Haible  <bruno@clisp.org>

	Fix *printf behaviour regarding the %ls directive.
	* vasnprintf.c (local_wcslen, VASNPRINTF): Handle
	NEED_PRINTF_DIRECTIVE_LS.

2009-02-23  Bruno Haible  <bruno@clisp.org>

	Fix invalid read past end of memory block.
	* vasnprintf.c (DCHAR_SET): Define.
	(local_wcslen): Define only when needed.
	(local_strnlen, local_wcsnlen): New functions.
	(VASNPRINTF) [!USE_SNPRINTF && HAVE_WCHAR_T]: Implement the %s and %ls
	directives that involve a conversion ourselves.

2009-02-06  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (libintl.res): Initialize nl without assuming GNU bash.
	Reported by Marko Lindqvist <cazfi74@gmail.com>.

2009-01-25  Bruno Haible  <bruno@clisp.org>

	* threadlib.c: Include <stdlib.h>.

2009-01-25  Bruno Haible  <bruno@clisp.org>

	* threadlib.c (dummy): New declaration.

2009-01-25  Bruno Haible  <bruno@clisp.org>

	Don't install charset.alias on MacOS X >= 10.3.
	* localcharset.c (DARWIN7): New macro.
	(get_charset_aliases): Hardcode the result for Darwin7.
	* Makefile.in (install-exec, installdirs): Don't install charset.alias
	on MacOS X >= 10.3, if the file does not yet exist.

2009-01-25  Bruno Haible  <bruno@clisp.org>

	Don't install charset.alias on mingw and Cygwin.
	* Makefile.in (install-exec, installdirs): Don't install charset.alias
	on mingw and Cygwin, if the file does not yet exist. The result for
	these platforms is hardcoded in localcharset.c.

2009-01-24  Bruno Haible  <bruno@clisp.org>

	Add support for non-UTF-8 locales on MacOS X.
	* config.charset: Add CP1131, ARMSCII-8, PT154 to the list of canonical
	encodings. For Darwin 7 and newer, don't map traditional encodings to
	UTF-8.
	Reported by Vincent Lefevre <vincent@vinc17.org>
	at <http://savannah.gnu.org/bugs/?25235>.

2009-01-15  Bruno Haible  <bruno@clisp.org>

	* log.c (MSGCTXT_SEPARATOR): New macro.
	(print_escaped): Add an str_end argument.
	(_nl_log_untranslated_locked): If msgid1 contains the msgctxt
	separator, split it into msgctxt and msgid.
	Reported at <https://savannah.gnu.org/bugs/?25315>.

2008-11-10  Ingo Weinhold  <ingo_weinhold@gmx.de>

	* config.charset: Treat Haiku like BeOS.

2008-10-17  Bruno Haible  <bruno@clisp.org>

	* lock.h (gl_carray_waitqueue_t): Renamed from gl_waitqueue_t.
	(gl_rwlock_t): Update.
	* lock.c (gl_waitqueue_t): Alias to gl_carray_waitqueue_t.

2008-09-22  Eric Blake  <ebb9@byu.net>
	    Bruno Haible  <bruno@clisp.org>

	vasnprintf: fix x86/glibc regression on printf("%La", 0.0L)
	* vasnprintf.c (VASNPRINTF): Support 0.0 on platforms that supply %A
	but mishandle pseudo-NaN.
	Reported by Simon Josefsson.

2008-09-18  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): When printing ±0.0L in
	NEED_PRINTF_INFINITE_LONG_DOUBLE case with 'e' format, always use two
	digits for the exponent.

2008-09-18  Jim Meyering  <meyering@redhat.com>
	    Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (decimal_point_char): Define also if
	NEED_PRINTF_INFINITE_LONG_DOUBLE.

2008-09-16  Bruno Haible  <bruno@clisp.org>
	and Eric Blake  <ebb9@byu.net>

	vasnprintf: support Irix 5.3
	* vasnprintf.c (VASNPRINTF): Also handle -0.0L on platforms that
	mishandle long double infinity.
	Reported by Tom G. Christensen.

2008-09-02  Eric Blake  <ebb9@byu.net>

	vasnprintf-posix: handle large precision via %.*d
	* vasnprintf.c (VASNPRINTF): Don't pass precision to snprintf
	when handling it ourselves.
	Reported by Alain Guibert.

2008-07-10  Ben Pfaff  <blp@gnu.org>

	* vasnprintf.c: Update references to renamed include files.

2008-05-21  Bruno Haible  <bruno@clisp.org>

	Avoid one more warning from gcc.
	* vasnprintf.c (IF_LINT): Update comments.
	(VASNPRINTF): Use it also for the 'prefix' array initializer.

2008-05-21  Jim Meyering  <meyering@redhat.com>

	avoid a warning from gcc
	* vasnprintf.c (IF_LINT): Define.
	(scale10_round_decimal_long_double):
	Use it to avoid a "may be used uninitialized" warning.
	(scale10_round_decimal_double): Likewise.

2008-05-16  Jim Meyering  <meyering@redhat.com>
	    Bruno Haible  <bruno@clisp.org>

	Avoid some warnings from "gcc -Wshadow".
	* vasnprintf.c (exp, remainder): Define to different identifiers.

2008-04-19  Bruno Haible  <bruno@clisp.org>

	Work around snprintf bug on Linux libc5.
	* vasnprintf.c (USE_SNPRINTF): Set to 0 on Linux libc5 systems.

2008-04-19  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (floorlog10l, floorlog10): Reduce maximum error from
	0.0058 to less than 10^-7.

2008-04-19  Bruno Haible  <bruno@clisp.org>

	Fix rounding when a precision is given.
	* vasnprintf.c (is_borderline): New function.
	(VASNPRINTF): For %e and %g, consider replacing the digits 10....0 with
	9...9x.
	Reported by John Darrington <john@darrington.wattle.id.au> via
	Ben Pfaff <blp@cs.stanford.edu>.

2008-03-30  Bruno Haible  <bruno@clisp.org>

	Fix buffer overrun.
	* vasnprintf.c (VASNPRINTF): If !USE_SNPRINTF && pad_ourselves:
	Don't consider the width for tmp_length. Check count against tmp_length
	before doing the padding. Ensure enough allocation during padding.

2008-03-30  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (EOVERFLOW): Remove fallback.

2008-03-30  Bruno Haible  <bruno@clisp.org>

	Fix bug introduced on 2007-06-10.
	* vasnprintf.c (VASNPRINTF): When performing zero-padding, use
	spaces instead of 0 digits for 's' also when ENABLE_UNISTDIO.

2008-02-28  Atsushi SAKAI  <sakaia@jp.fujitsu.com>

	* xsize.h: Fix typo in comment: s/tupe/type/.

2008-02-07  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Don't use %n on native Woe32 systems.
	Avoids a crash on Windows Vista.
	Reported by Adam Strzelecki <ono@java.pl> via
	Simon Josefsson <simon@josefsson.org>.

2008-02-06  Bruno Haible  <bruno@clisp.org>

	Fix *printf behaviour regarding the left-adjust flag on HP-UX 10.20.
	* vasnprintf.c (VASNPRINTF): Handle NEED_PRINTF_FLAG_LEFTADJUST.
	Reported by Peter Fales <psfales@alcatel-lucent.com>.

2008-02-06  Bruno Haible  <bruno@clisp.org>

	Fix bug introduced on 2007-06-10.
	* vasnprintf.c (VASNPRINTF): Perform zero-padding also if
	!NEED_PRINTF_FLAG_ZERO.

2008-01-29  Jim Meyering  <meyering@redhat.com>

	vasnprintf.c: Avoid warning about unused label
	* vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Guard the
	"overflow" label definition and associated code with the
	same cpp condition that guards the sole use of that label.

2008-01-26  Bruno Haible  <bruno@clisp.org>

	Rename isnan, applicable to 'double' only, to isnand.
	* vasnprintf.c: Include isnand.h instead of isnan.h.
	(is_infinite_or_zero, VASNPRINTF): Use isnand instead of isnan.

2008-01-08  Jim Meyering  <meyering@redhat.com>
	    Bruno Haible  <bruno@clisp.org>

	* printf-parse.c (PRINTF_PARSE): Handle a size specifier "q" on MacOS X
	and a size specifier "I64" on mingw. Needed for PRIdMAX.
	Reported by Peter Fales in
	<http://lists.gnu.org/archive/html/bug-coreutils/2007-12/msg00148.html>.

2008-01-10  Eric Blake  <ebb9@byu.net>

	* relocatable.h: Fix a comment.

2008-01-10  Bruno Haible  <bruno@clisp.org>

	* relocatable.h (relocate): State whether result is freshly allocated
	or not.
	* relocatable.c (relocate): Return a freshly allocated string instead
	of a pointer to a privately held string.
	Reported by Sylvain Beucler <beuc@gnu.org>.

2008-01-01  Sylvain Beucler  <beuc@gnu.org>
	    Bruno Haible  <bruno@clisp.org>

	Improve memory cleanup in 'relocatable' module.
	* relocatable.h (compute_curr_prefix): Change return type to 'char *'.
	* relocatable.c (compute_curr_prefix): Change return type to 'char *'.
	Free curr_installdir after use.
	(relocate): Free curr_prefix_better after use.

2008-04-13  Bruno Haible  <bruno@clisp.org>

	* localcharset.c (OS2): Don't redefine if already defined.
	Reported by Elbert Pol <e.pol@chello.nl>.

2008-09-20  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in: Use (defined X && X) idiom to test whether a
	possibly undefined macro has a certain value. Pacifies users of the
	gcc option -Wundef.
	Reported by Christian Weisgerber <naddy@mips.inka.de> and
	Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.

2008-08-18  Bruno Haible  <bruno@clisp.org>

	* threadlib.c: Include <pthread.h>.

2008-08-18  Bruno Haible  <bruno@clisp.org>

	* lock.h [USE_SOLARIS_THREADS]: Fix glthread_recursive_lock_* macros.
	* lock.c (glthread_recursive_lock_destroy_multithreaded): Fix syntax
	error.

2008-08-17  Bruno Haible  <bruno@clisp.org>

	* lock.h: Include <stdlib.h> always.

2008-08-17  Bruno Haible  <bruno@clisp.org>

	* threadlib.c: New file, extracted from lock.c.
	* lock.c (dummy_thread_func, glthread_in_use): Remove functions.
	* Makefile.in (SOURCES): Add threadlib.c.
	(OBJECTS): Add threadlib.$lo.
	(threadlib.lo): New rule.

2008-08-14  Bruno Haible  <bruno@clisp.org>

	* lock.h (glthread_lock_lock, glthread_lock_unlock,
	glthread_lock_destroy, glthread_rwlock_rdlock, glthread_rwlock_wrlock,
	glthread_rwlock_unlock, glthread_rwlock_destroy,
	glthread_recursive_lock_lock, glthread_recursive_lock_unlock,
	glthread_recursive_lock_destroy): Define as macros always.
	* lock.c (glthread_lock_lock_func): Renamed from glthread_lock_lock.
	(glthread_lock_unlock_func): Renamed from glthread_lock_unlock.
	(glthread_lock_destroy_func): Renamed from glthread_lock_destroy.
	(glthread_rwlock_rdlock_func): Renamed from glthread_rwlock_rdlock.
	(glthread_rwlock_wrlock_func): Renamed from glthread_rwlock_wrlock.
	(glthread_rwlock_unlock_func): Renamed from glthread_rwlock_unlock.
	(glthread_rwlock_destroy_func): Renamed from glthread_rwlock_destroy.
	(glthread_recursive_lock_lock_func): Renamed from
	glthread_recursive_lock_lock.
	(glthread_recursive_lock_unlock_func): Renamed from
	glthread_recursive_lock_unlock.
	(glthread_recursive_lock_destroy_func): Renamed from
	glthread_recursive_lock_destroy.

2008-08-07  Paolo Bonzini  <bonzini@gnu.org>

	* lock.c (glthread_recursive_lock_init_multithreaded)
	[!PTHREAD_RECURSIVE_MUTEX_INITIALIZER]: Fix typo.

2008-08-03  Bruno Haible  <bruno@clisp.org>

	Additional non-aborting API for lock.
	* lock.h: Include <errno.h>.
	(glthread_lock_init): New macro/function.
	(gl_lock_init): Define as wrapper around glthread_lock_init.
	(glthread_lock_lock): New macro/function.
	(gl_lock_lock): Define as wrapper around glthread_lock_lock.
	(glthread_lock_unlock): New macro/function.
	(gl_lock_unlock): Define as wrapper around glthread_lock_unlock.
	(glthread_lock_destroy): New macro/function.
	(gl_lock_destroy): Define as wrapper around glthread_lock_destroy.
	(glthread_rwlock_init): New macro/function.
	(gl_rwlock_init): Define as wrapper around glthread_rwlock_init.
	(glthread_rwlock_rdlock): New macro/function.
	(gl_rwlock_rdlock): Define as wrapper around glthread_rwlock_rdlock.
	(glthread_rwlock_wrlock): New macro/function.
	(gl_rwlock_wrlock): Define as wrapper around glthread_rwlock_wrlock.
	(glthread_rwlock_unlock): New macro/function.
	(gl_rwlock_unlock): Define as wrapper around glthread_rwlock_unlock.
	(glthread_rwlock_destroy): New macro/function.
	(gl_rwlock_destroy): Define as wrapper around glthread_rwlock_destroy.
	(glthread_recursive_lock_init): New macro/function.
	(gl_recursive_lock_init): Define as wrapper around
	glthread_recursive_lock_init.
	(glthread_recursive_lock_lock): New macro/function.
	(gl_recursive_lock_lock): Define as wrapper around
	glthread_recursive_lock_lock.
	(glthread_recursive_lock_unlock): New macro/function.
	(gl_recursive_lock_unlock): Define as wrapper around
	glthread_recursive_lock_unlock.
	(glthread_recursive_lock_destroy): New macro/function.
	(gl_recursive_lock_destroy): Define as wrapper around
	glthread_recursive_lock_destroy.
	(glthread_once): New macro/function.
	(gl_once): Define as wrapper around glthread_once.
	Update function declarations.
	* lock.c (glthread_rwlock_init_multithreaded): Renamed from
	glthread_rwlock_init. Return error code.
	(glthread_rwlock_rdlock_multithreaded): Renamed from
	glthread_rwlock_rdlock. Return error code.
	(glthread_rwlock_wrlock_multithreaded): Renamed from
	glthread_rwlock_wrlock. Return error code.
	(glthread_rwlock_unlock_multithreaded): Renamed from
	glthread_rwlock_unlock. Return error code.
	(glthread_rwlock_destroy_multithreaded): Renamed from
	glthread_rwlock_destroy. Return error code.
	(glthread_recursive_lock_init_multithreaded): Renamed from
	glthread_recursive_lock_init. Return error code.
	(glthread_recursive_lock_lock_multithreaded): Renamed from
	glthread_recursive_lock_lock. Return error code.
	(glthread_recursive_lock_unlock_multithreaded): Renamed from
	glthread_recursive_lock_unlock. Return error code.
	(glthread_recursive_lock_destroy_multithreaded): Renamed from
	glthread_recursive_lock_destroy. Return error code.
	(glthread_once_call): Make static.
	(glthread_once_multithreaded): Renamed from glthread_once.
	Suggested by Yoann Vandoorselaere <yoann@prelude-ids.org>.

2008-03-30  Ulrich Drepper  <drepper@redhat.com>

	[BZ #5443]
	* dcigettext.c (__dcigettext): Get reader lock for locale data before
	looking for translation.

2008-03-30  Jakub Jelinek  <jakub@redhat.com>

	* dcigettext.c (_nl_find_msg): Reread nconversions after acquiring
	wrlock.  Do conv_tab allocation while holding lock.
	<http://sourceware.org/ml/libc-hacker/2008-03/msg00009.html>

2008-02-10  Jim Meyering  <meyering@redhat.com>

	* bindtextdom.c (set_binding_values): Remove useless "if" before "free".
	* loadmsgcat.c (_nl_load_domain, _nl_unload_domain): Likewise.

2008-05-27  Bruno Haible  <bruno@clisp.org>

	* localename.c (SUBLANG_TIBETAN_BHUTAN): Force value 2. Needed for
	current mingw.
	Reported by Jose E. Marchesi <jemarch@gnu.org>.

2008-04-21  Bruno Haible  <bruno@clisp.org>

	* localename.c (SUBLANG_TIBETAN_PRC, SUBLANG_TIBETAN_BHUTAN): Actually
	assign a value.

2008-04-17  Bruno Haible  <bruno@clisp.org>

	* lock.h (gl_lock_destroy, gl_rwlock_destroy,
	gl_recursive_lock_destroy): Provide no-op definitions for the dummy
	implementation.
	Patch by Bruce Merry <bmerry@gmail.com>.

2008-04-16  Bruno Haible  <bruno@clisp.org>

	* localename.c (LANG_MAORI, LANG_QUECHUA, LANG_SOTHO, LANG_UIGHUR): New
	macros.
	(SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN,
	SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC,
	SUBLANG_CROATIAN_CROATIA, SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN,
	SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA, SUBLANG_MONGOLIAN_PRC,
	SUBLANG_QUECHUA_BOLIVIA, SUBLANG_QUECHUA_ECUADOR, SUBLANG_QUECHUA_PERU,
	SUBLANG_RUSSIAN_RUSSIA, SUBLANG_RUSSIAN_MOLDAVIA, SUBLANG_SPANISH_US,
	SUBLANG_TIBETAN_PRC, SUBLANG_TIBETAN_BHUTAN, SUBLANG_UIGHUR_PRC): New
	macros.
	(gl_locale_name_from_win32_LANGID): Refine code for Croatian/Bosnian,
	Mongolian, Russian, Spanish, Tibetan. Add code for Maori, Quechua,
	Northern Sotho, Uighur.

2008-04-16  Bruno Haible  <bruno@clisp.org>

	* localename.c (SUBLANG_SINDHI_INDIA): New macro.
	(SUBLANG_SINDHI_PAKISTAN): Change value from 1 to 2.
	(gl_locale_name_from_win32_LANGID): Fix code for Sindhi.
	Reported by Daniel Bergström <daniel@octocode.com>.

2007-12-25  KJK::Hyperion  <hackbunny@reactos.com>
            Bruno Haible  <bruno@clisp.org>

	* gettextP.h (gl_locale_name_from_win32_LANGID,
	gl_locale_name_from_win32_LCID): New macros.
	* localename.c (gl_locale_name_canonicalize) [WIN32_NATIVE]: New
	function.
	(gl_locale_name_from_win32_LANGID, gl_locale_name_from_win32_LCID):
	New functions, mostly extracted from gl_locale_name_default.
	(gl_locale_name_default): Use gl_locale_name_from_win32_LCID.
	* langprefs.c [WIN32_NATIVE] (_nl_locale_name_canonicalize,
	_nl_locale_name_from_win32_LANGID, _nl_locale_name_from_win32_LCID):
	New declarations.
	(_nl_language_preferences_win32_mui, _nl_language_preferences_win32_ME,
	_nl_language_preferences_win32_95, ret_first_language,
	_nl_language_preferences_win32_system): New functions.
	(_nl_language_preferences_default): Use them.

2007-11-30  Bruno Haible  <bruno@clisp.org>

	* lock.h (gl_recursive_lock_init) [PTHREAD &&
	PTHREAD_RECURSIVE_MUTEX_INITIALIZER]: Call
	glthread_recursive_lock_init.
	* lock.c (glthread_recursive_lock_init)
	[PTHREAD_RECURSIVE_MUTEX_INITIALIZER]: New function.
	Reported by Yoann Vandoorselaere <yoann.v@prelude-ids.com>.

2007-11-28  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (fprintf, vfprintf, printf, vprintf, sprintf,
	vsprintf, snprintf, vsnprintf, asprintf, vasprintf): Don't override
	definitions made by gnulib.
	Reported by Jim Meyering <jim@meyering.net>.

2007-11-28  Bruno Haible  <bruno@clisp.org>

	* l10nflist.c (_nl_normalize_codeset): Change type of 'len' variable
	to size_t.
	Patch by Wim Lewis.

2007-11-26  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (decode_long_double): Don't abort if the 'long double'
	type has excess precision.
	Reported by Jim Meyering in
	<http://lists.gnu.org/archive/html/bug-gnulib/2007-11/msg00120.html>.

2007-11-15  Bruno Haible  <bruno@clisp.org>

	Avoid crash by stack overflow when msgid is very long.
	* dcigettext.c (struct known_translation_t): Turn msgid into a union.
	(transcmp): Use the appropriate part of s1->msgid and s2->msgid.
	(DCIGETTEXT): Change the allocation of the 'search' variable so that
	it needs only fixed stack space. Delay the initialization of
	msgid_len until it is needed.
	Reported by Laurent Gaffié <laurent.gaffie@gmail.com> via
	Ismail Dönmez <ismail@pardus.org.tr>.

2007-11-14  Bruno Haible  <bruno@clisp.org>

	* config.charset: Update for OpenBSD 4.1.
	Reported and helped by Ben Pfaff <blp@cs.stanford.edu>.

2007-11-09  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Ensure that we never call snprintf with a
	size argument < 2.

2007-11-09  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Increase reallocation of snprintf buffer.
	Fixes an inefficiency introduced on 2007-11-03.

2007-11-07  Bruno Haible  <bruno@clisp.org>

	* gettext-0.17 released.

2007-11-05  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Expand the NEED_PRINTF_DIRECTIVE_A
	code when NEED_PRINTF_LONG_DOUBLE or NEED_PRINTF_DOUBLE is set.
	Needed on Cygwin, where !NEED_PRINTF_DIRECTIVE_A && NEED_PRINTF_DOUBLE.
	Reported by Eric Blake.

2007-11-04  Bruno Haible  <bruno@clisp.org>

	* lock.h: Protect all macro definitions containing an 'if' statement
	through a "do { ... } while (0)".

2007-11-04  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (DCHAR_IS_TCHAR, DCHAR_CPY): Undefine at the end.

2007-06-11  Bruno Haible  <bruno@clisp.org>

	* printf-args.c (PRINTF_FETCHARGS) [ENABLE_UNISTDIO]: Fix NULL
	replacement string.
	Reported by Eric Blake.

2007-06-10  Bruno Haible  <bruno@clisp.org>

	* printf-args.h (PRINTF_FETCHARGS): New macro.
	(arg_type) [ENABLE_UNISTDIO]: Define TYPE_U8_STRING, TYPE_U16_STRING,
	TYPE_U32_STRING.
	(argument) [ENABLE_UNISTDIO]: Add a_u8_string, a_u16_string,
	a_u32_string variants.
	(PRINTF_FETCHARGS): Renamed from printf_fetchargs.
	* printf-args.c: Don't include config.h and the specification header
	if PRINTF_FETCHARGS is already defined.
	(PRINTF_FETCHARGS): Renamed from printf_fetchargs.
	(PRINTF_FETCHARGS) [ENABLE_UNISTDIO]: Add code for TYPE_U8_STRING,
	TYPE_U16_STRING, TYPE_U32_STRING.

2007-11-04  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (libintl.res): Use 'c' command instead of 'a' command.
	Needed for GNU sed 3.02.

2007-11-04  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Handle NEED_PRINTF_UNBOUNDED_PRECISION.

2007-11-04  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (scale10_round_decimal_decoded): Fix shift loop.

2007-11-03  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Implement NEED_PRINTF_DOUBLE.
	(decode_double): New function, copied from decode_long_double.
	(scale10_round_decimal_decoded): New function, extracted from
	scale10_round_decimal_long_double.
	(scale10_round_decimal_long_double): Use it.
	(scale10_round_decimal_double): New function.
	(floorlog10): New function.
	(VASNPRINTF): Handle NEED_PRINTF_DOUBLE case.

2007-11-03  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Don't assume that snprintf's return value
	is C99 compliant.
	Needed for OSF/1 5.1.

2007-11-03  Bruno Haible  <bruno@clisp.org>

	Fix out-of-memory handling of vasnprintf.
	* printf-parse.c: Include <errno.h>.
	(PRINTF_PARSE): When failing, set errno to EINVAL or ENOMEM.
	* vasnprintf.c (VASNPRINTF): When PRINTF_PARSE fails, assume errno is
	already set.

2007-10-20  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Don't report overflow if the available
	length is INT_MAX and sizeof (DCHAR_T) > sizeof (TCHAR_T).
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.

2007-10-18  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Don't use %n on glibc >= 2.3 systems.
	Reported by Jim Meyering.

2007-07-13  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (decimal_point_char): Define also if
	(NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE)
	&& !NEED_PRINTF_DIRECTIVE_A.
	Reported by Clemens Koller <clemens.koller@anagramm.de> via
	Gary V. Vaughan <gary@gnu.org>.

2007-06-10  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Don't include config.h and the specification header if
	VASNPRINTF is already defined.
	(DCHAR_IS_TCHAR, DCHAR_CPY): New macros.
	(VASNPRINTF): Use PRINTF_FETCHARGS instead of printf_fetchargs. Use
	DCHAR_CPY. Handle the case that DCHAR_T and FCHAR_T are not the same
	type. Handle the case that TCHAR_T and FCHAR_T are not of the same
	size. Handle the case that DCHAR_T and TCHAR_T are not the same type,
	add a conversion from TCHAR_T[] to DCHAR_T[], and rework the padding
	code accordingly.
	(VASNPRINTF) [ENABLE_UNISTDIO]: Implement the 'U' directive. Enable
	pad_ourselves also in this case, with the 'c' and 's' directives, and
	with a different notion of "width".

2007-06-10  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Remove variable
	'maxlen'. Ensure only length + width bytes are allocated, not
	length + 1 + width.

2007-06-09  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (FCHAR_T, DCHAR_T, TCHAR_T): New macros.
	(CHAR_T): Remove macro.
	(VASNPRINTF): Update.

2007-06-05  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Do the extra handling of NaN and Inf
	also the %a / %A. Handle the %a / %A code before this extra handling.

2007-06-05  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c [NEED_PRINTF_LONG_DOUBLE ||
	NEED_PRINTF_INFINITE_LONG_DOUBLE]: Include fpucw.h.

2007-11-01  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.17.
	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 8:2:0.

2007-10-28  Ulrich Drepper  <drepper@redhat.com>

	* locale.alias: Add note that this file should never be depended on.

2007-10-27  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (libintl.la): Use @LTLIBC@ instead of -lc. Needed on
	HP-UX 11.

2007-10-21  Bruno Haible  <bruno@clisp.org>

	* printf-parse.c: Don't assume <stdint.h> exists in IN_LIBASPRINTF
	context.

2007-10-21  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (_nl_find_msg): Use plain ANSI C.

2007-10-20  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (libintl.res): Put more literal newlines into the sed
	scripts.

2007-10-14  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (DCIGETTEXT): Save errno also around the tfind() call.
	Needed because Interix 3.5 tfind() clobbers errno.
	Reported by Martin Koeppe <mkoeppe@gmx.de>.

2007-10-13  Bruno Haible  <bruno@clisp.org>

	* gettextP.h: Include <bits/libc-lock.h> or lock.h.
	* dcigettext.c (_nl_find_msg): Unlock the conversions_lock when
	exiting.

2007-09-24  Ulrich Drepper  <drepper@redhat.com>

	[BZ #5058]
	http://sourceware.org/bugzilla/show_bug.cgi?id=5058
	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=443660
	* gettextP.h (struct loaded_domain): Add conversions_lock member.
	* loadmsgcat.c (_nl_load_domain): Initialize conversions_lock.
	(_nl_unload_domain): Finalize conversions_lock.
	* dcigettext.c (_nl_find_msg): Take conversions_lock before handling
	table of known conversions.

2007-08-03  Jakub Jelinek  <jakub@redhat.com>

	* dcigettext.c (_nl_find_msg): Free encoding if __gconv_open failed.
	* finddomain.c (_nl_find_domain): Free normalized_codeset on failure.

2007-07-26  Jakub Jelinek  <jakub@redhat.com>

	* gettextP.h (struct loaded_domain): Change plural to const
	struct expression *.
	* eval-plural.h (plural_eval): Change first argument to
	const struct expression *.
	* plural-exp.c (EXTRACT_PLURAL_EXPRESSION): Change first argument to
	const struct expression **.
	* plural-exp.h (EXTRACT_PLURAL_EXPRESSION, plural_eval): Adjust
	prototypes.
	* loadmsgcat.c (_nl_unload_domain): Cast away const in call to
	__gettext_free_exp.

2007-07-19  Jakub Jelinek  <jakub@redhat.com>

	* dcigettext.c (_nl_find_msg): Return NULL even if __gconv_open
	returns __GCONV_NOCONV, but not for __GCONV_NULCONV.

2007-07-11  Jakub Jelinek  <jakub@redhat.com>

	* finddomain.c (_nl_find_domain): If _nl_explode_name returned -1,
	return NULL.
	* explodename.c (_nl_explode_name): Return -1 if _nl_normalize_codeset
	failed.

2007-06-10  Bruno Haible  <bruno@clisp.org>

	* printf-parse.c: Don't include config.h and the specification
	header if PRINTF_PARSE is already defined. Eliminate the set of
	parameters for WIDE_CHAR_VERSION; the user of this file must provide
	them now. Include c-ctype.h.
	(PRINTF_PARSE) [ENABLE_UNISTDIO]: Add code implementing the 'U'
	directive and CHAR_T_ONLY_ASCII.
	* printf.c: Include wprintf-parse.h. Define the set of parameters for
	the WIDE_CHAR_VERSION.

2007-06-07  Bruno Haible  <bruno@clisp.org>

	* gettextP.h (gl_locale_name_canonicalize, gl_locale_name_posix,
	gl_locale_name_default, gl_locale_name): New macros.
	(_nl_locale_name_canonicalize): New declaration.
	* localename.c: Include config.h unconditionally. Include gettextP.h or
	localename.h.
	(gl_locale_name_canonicalize): Renamed from
	_nl_locale_name_canonicalize. Make static except in libintl.
	(gl_locale_name_posix): Renamed from _nl_locale_name_posix.
	(gl_locale_name_default): Renamed from _nl_locale_name_default.
	(gl_locale_name): Renamed from _nl_locale_name.

2007-05-28  Bruno Haible  <bruno@clisp.org>

	* libintl.rc: New file.
	* Makefile.in (DISTFILES.common): Add it.
	(WINDRES): New variable.
	(OBJECTS_RES_yes, OBJECTS_RES_no): New variables.
	(libintl.la, libgnuintl.la): Include also $((OBJECTS_RES_...).
	(libintl.res): New rule.
	(mostlyclean): Remove also libintl.res.

2007-05-21  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Update comments.

2007-03-24  Bruno Haible  <bruno@clisp.org>

	* tsearch.c [!IN_LIBINTL]: Include search.h instead of tsearch.h.

2007-05-20  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Use NEED_PRINTF_INFINITE_DOUBLE instead of
	NEED_PRINTF_INFINITE.
	(is_infinitel): New function.
	(VASNPRINTF): Handle NEED_PRINTF_INFINITE_LONG_DOUBLE case.

2007-05-19  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Include math.h and isnan.h.
	(is_infinite_or_zero): New function.
	(VASNPRINTF): Fix also the handling of infinite or zero 'double'
	values in the %f, %F, %e, %E, %g, %G directives.

2007-05-19  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (convert_to_decimal): Add an extra_zeroes argument.
	(scale10_round_decimal_long_double): Inline scale10_round_long_double.
	Instead of multiplying with 10^k, set extra_zeroes to k.
	(scale10_round_long_double): Remove function.

2007-05-18  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_ZERO]: Fix logic bug
	introduced on 2007-05-06.

2007-05-18  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Include math.h and float+.h.
	(mp_limb_t): New type.
	(GMP_LIMB_BITS): New macro.
	(mp_twolimb_t): New type.
	(GMP_TWOLIMB_BITS): New macro.
	(mpn_t): New type.
	(multiply, divide, convert_to_decimal, decode_long_double,
	scale10_round_long_double, scale10_round_decimal_long_double,
	floorlog10l): New functions.
	(VASNPRINTF) [NEED_PRINTF_LONG_DOUBLE]: Implement 'long double' support
	for the %f, %F, %e, %E, %g, %G directives.

2007-05-18  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (USE_SNPRINTF): Define to 0 on BeOS.

2007-05-18  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF) [WIN32]: Use %I64d instead of %lld for
	printing 64-bit integers. Needed for mingw.

2007-05-06  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_ZERO]: Perform the
	padding ourselves for the floating-point directives.

2007-05-06  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_GROUPING]: Don't pass
	the ' flag character to sprintf or snprintf.

2007-04-11  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Implement the %F directive using the %f
	directive, if NEED_PRINTF_DIRECTIVE_F is defined.

2007-04-06  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Include <math.h>. Don't include float+.h.
	(VASNPRINTF): Use signbit for faster determination whether to print a
	minus sign.

2007-03-27  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (decimal_point_char): New function.
	(VASNPRINTF): Use it.

2007-03-25  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Include langinfo.h.
	(VASNPRINTF): Prefer nl_langinfo over localeconv, since it's more
	multithread-safe.

2007-03-24  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Include fpucw.h.
	(VASNPRINTF): Invoke BEGIN/END_LONG_DOUBLE_ROUNDING around the
	'long double' calculations.

2007-03-24  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Include float+.h.
	(VASNPRINTF): When comparing against +0.0L or +0.0, compare only
	SIZEOF_LDBL or SIZEOF_DBL bytes.

2007-03-24  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c [!HAVE_LONG_DOUBLE]: Include printf-frexp.h. Don't
	include isnanl-nolibm.h.

2007-03-21  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Update after isnanl.h was renamed to isnanl-nolibm.h.

2007-03-18  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Undo first part of last patch.

2007-03-17  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (EOVERFLOW): New fallback definition.
	(VASNPRINTF): Fail with EOVERFLOW when the given allocated size is
	larger than INT_MAX, or when it grow to a value larger than INT_MAX.

2007-03-17  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Clear out the memory used for arg_mem
	before comparing it. Needed because on some platforms (e.g. x86) a
	'long double' occupies less bytes than sizeof (long double).

2007-03-11  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (sprintf): Undefine.

2007-03-11  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (snprintf): Undefine. Avoids an endless recursion.

2007-03-09  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): For the 'a' and 'A' directives, use a
	locale dependent decimal point, rather than always '.'.

2007-03-04  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Include isnan.h, isnanl.h, printf-frexp.h,
	printf-frexpl.h.
	(VASNPRINTF): Handle the 'a' and 'A' directives here, if needed.

2007-03-08  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.h: Convert tabs in the middle of lines to spaces.

2007-05-12  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (install-dvi, install-html, install-info, install-ps,
	install-pdf): New targets.
	Reported by Noah Slater <nslater@gmail.com>.

2007-04-06  Bruno Haible  <bruno@clisp.org>

	* printf-args.h: Assume HAVE_LONG_DOUBLE to be true.
	* printf-args.c: Likewise.
	* printf-parse.c: Likewise.
	* vasnprintf.c: Likewise.

2007-03-25  Bruno Haible  <bruno@clisp.org>

	* printf-parse.c [!IN_LIBINTL]: Include <stdint.h>, for intmax_t.
	(PRINTF_PARSE): Make the support for size specifier 'j' unconditional.

2007-03-04  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (libintl_printf): Treat BeOS like NetBSD and Woe32
	systems.
	* printf.c (libintl_printf): Likewise.

2007-02-25  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Fix estimate of size needed for a 'a' or
	'A' conversion.

2007-01-29  Bruno Haible  <bruno@clisp.org>

	* printf-args.h: Use '#if HAVE_*' instead of '#ifdef HAVE_*'.
	* printf-args.c: Likewise.
	* printf-parse.c: Likewise.
	* vasnprintf.c: Likewise.

2007-01-27  Bruno Haible  <bruno@clisp.org>

	* tsearch.h: New file, from gnulib.
	* tsearch.c: New file, from gnulib.
	* dcigettext.c [!HAVE_TSEARCH]: Include tsearch.h and tsearch.c.
	(root, transcmp): Define unconditionally.
	(DCIGETTEXT): Assume tsearch exists.
	* Makefile.in (HEADERS): Add tsearch.h, tsearch.c.

2006-12-21  Bruno Haible  <bruno@clisp.org>

	* localename.c (SUBLANG_BENGALI_INDIA): Change value from 0 to 1.
	(SUBLANG_BENGALI_BANGLADESH): Change value from 1 to 2.
	(SUBLANG_PUNJABI_INDIA): Change value from 0 to 1.
	(SUBLANG_PUNJABI_PAKISTAN): Change value from 1 to 2.
	(SUBLANG_ROMANIAN_ROMANIA): Change value from 0 to 1.
	(SUBLANG_ROMANIAN_MOLDOVA): Change value from 1 to 2.
	(SUBLANG_SINDHI_INDIA): Remove macro.
	(SUBLANG_SINDHI_AFGHANISTAN): New macro.
	(SUBLANG_TAMAZIGHT_ALGERIA_LATIN): Renamed from
	SUBLANG_TAMAZIGHT_LATIN.
	(SUBLANG_TIGRINYA_ETHIOPIA): Change value from 0 to 1.
	(SUBLANG_TIGRINYA_ERITREA): Change value from 1 to 2.
	(_nl_locale_name_default): Update.
	Reported by Bob Rossi <bob_rossi@cox.net>.

2006-10-30  Bruno Haible  <bruno@clisp.org>

	* plural-exp.h [C++]: Define functions without name mangling.

2006-11-03  Bruno Haible  <bruno@clisp.org>

	Move declarations to header files.
	* dcigettext.c: Include localcharset.h.
	(get_output_charset): Remove locale_charset declaration.

2006-10-30  Bruno Haible  <bruno@clisp.org>

	Move declarations to header files.
	* gettextP.h (_nl_default_dirname, _nl_domain_bindings): New
	declarations and aliases.
	(_nl_default_default_domain, _nl_current_default_domain): New
	declarations and aliases.
	* bindtextdom.c (_nl_default_dirname, _nl_domain_bindings): Remove
	declarations and aliases.
	* dcigettext.c (_nl_default_default_domain, _nl_current_default_domain,
	_nl_default_dirname, _nl_domain_bindings): Remove aliases.
	* textdomain.c (_nl_default_default_domain, _nl_current_default_domain):
	Remove declarations and aliases.

2006-11-01  Bruno Haible  <bruno@clisp.org>

	* printf-parse.c (PRINTF_PARSE): Cast malloc/realloc results.

2006-10-29  Bruno Haible  <bruno@clisp.org>

	Make it compile in C++ mode.
	* gettextP.h (SWAP): Don't use K&R syntax in C++ mode.
	* gmo.h (struct segment_pair): Move out of the scope of struct
	sysdep_string.
	* dcigettext.c (DCIGETTEXT): Cast mempcpy results.
	* loadmsgcat.c (_nl_load_domain): Cast alloca result.
	* localealias.c (read_alias_file): Cast memcpy result.
	* plural-exp.h (enum expression_operator): Move out of the scope of
	struct expression. Rename from 'enum operator'.
	* plural-exp.c (plvar, plone, GERMANIC_PLURAL): Don't use C99 named
	initializer syntax in C++ mode.
	* plural.y (%union, new_exp, new_exp_0, new_exp_1, new_exp_2,
	new_exp_3): Update.

2006-11-27  Bruno Haible  <bruno@clisp.org>

	* gettext-0.16.1 released.

2006-10-26  Bruno Haible  <bruno@clisp.org>

	* gettext-0.16 released.

2006-10-24  Bruno Haible  <bruno@clisp.org>

	* localename.c (HAVE_LOCALE_NULL): Test __GLIBC__ instead of
	__GNU_LIBRARY__.

2006-10-24  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.16.

2006-10-18  Bruno Haible  <bruno@clisp.org>

	* lock.h [C++]: Wrap definitions in extern "C".

2006-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	* localcharset.c: Do not check HAVE_SETLOCALE.

2006-10-09  Bruno Haible  <bruno@clisp.org>

	* langprefs.c: Update comment about locale name syntax.
	* localename.c: Likewise.

2006-10-11  Paul Eggert  <eggert@cs.ucla.edu>
            Bruno Haible  <bruno@clisp.org>

	* printf-args.h (arg_type, argument): Test HAVE_LONG_LONG_INT
	instead of HAVE_LONG_LONG.
	* printf-args.c (printf_fetchargs): Likewise.
	* printf-parse.c (PRINTF_PARSE): Likewise.
	* vasnprintf.c (VASNPRINTF): Likewise.

2006-10-08  Bruno Haible  <bruno@clisp.org>

	* printf.c: Include errno.h, limits.h.
	(EOVERFLOW): New fallback definition.
	(libintl_vfprintf): Test whether the output length is > INT_MAX.
	(libintl_vsprintf): Likewise.
	(libintl_vsnprintf): Fix bug when vasnprintf requested more space than
	needed. Fix return value when the entire result string would be larger
	than the provided buffer. Test whether the output length is > INT_MAX.
	(libintl_vasprintf): Test whether the output length is > INT_MAX.
	(libintl_vfwprintf): Likewise.
	(libintl_vswprintf): Fix bug when vasnwprintf requested more space than
	needed. Test whether the output length is > INT_MAX.

2006-09-14  Bruno Haible  <bruno@clisp.org>

	* lock.c: Include <config.h> unconditionally.
	* printf-args.c: Likewise.
	* printf-parse.c: Likewise.
	* relocatable.c: Likewise.
	* vasnprintf.c: Likewise.

2006-08-26  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (EOVERFLOW): Remove definition.
	(VASNPRINTF): Return a string of length > INT_MAX without failing.

2006-10-02  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.15.1.
	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 8:1:0.

2006-09-14  Bruno Haible  <bruno@clisp.org>

	* localcharset.c: Include <config.h> unconditionally.

2006-09-10  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (install_sh): New variable.
	Fixes "make install" errors in packages that have no 'mkinstalldirs'
	file and use automake <= 1.9.x, on platforms where 'mkdir' does not
	support the -p option.

	* Makefile.in (mkinstalldirs): Prefix with $(SHELL).

2006-08-29  Bruno Haible  <bruno@clisp.org>

	* localcharset.c: Include configmake.h in order to get LIBDIR defined.

2006-08-18  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* Makefile.in (MKDIR_P): New variable. Needed by $(mkdir_p) with
	Automake-1.10.

2006-07-29  Bruno Haible  <bruno@clisp.org>

	* localcharset.c: Assume <stddef.h>, <stdlib.h>, <string.h> exist.

2006-07-25  Bruno Haible  <bruno@clisp.org>

	* Makefile.msvc: Remove file.
	* Makefile.in (DISTFILES.gettext): Remove libgnuintl.h.msvc-static,
	libgnuintl.h.msvc-shared, Makefile.msvc.
	(DISTFILES.obsolete): Add libgnuintl.h.msvc-static,
	libgnuintl.h.msvc-shared, Makefile.msvc.

2006-07-25  Bruno Haible  <bruno@clisp.org>

	* Makefile.vms: Remove file.
	* Makefile.in (DISTFILES.gettext): Remove libgnuintl.h_vms,
	Makefile.vms.
	(DISTFILES.obsolete): Add libgnuintl.h_vms, Makefile.vms.

2006-07-21  Bruno Haible  <bruno@clisp.org>

	* gettext-0.15 released.

2006-07-21  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (mkinstalldirs): New variable. Needed for mkdir_p.

2006-07-20  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (HAVE_NL_LOCALE_NAME): Undefine.

2006-07-20  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.15.0.

2006-07-20  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 8:0:0.

2006-07-13  Bruno Haible  <bruno@clisp.org>

	* printf.c (libintl_printf): Define to __printf__ on NetBSD, Cygwin,
	mingw.
	Reported by haibin zhang <dragzhb@yahoo.com.cn>.

2006-06-22  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (DCIGETTEXT): If _nl_find_msg returns -1 don't look
	further, return original strings.
	(_nl_find_msg): Do not return found translation if the conversion
	failed.  Either signal the string is unusable or that something went
	wrong and the original should be used.

2006-06-23  Bruno Haible  <bruno@clisp.org>

	* l10nflist.c (__argz_count, __argz_stringify, __argz_next): Define
	using the non-underscored functions when available. Avoids warnings
	on Cygwin.
	Reported by Eric Blake.

2006-06-19  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (libintl_printf): Define to __printf__ on NetBSD,
	Cygwin, mingw.
	Reported by Henry Nelson <netb@yuba.ne.jp>.

2006-06-17  Bruno Haible  <bruno@clisp.org>

	* bindtextdom.c (gl_rwlock_define, gl_rwlock_wrlock, gl_rwlock_unlock)
	[_LIBC]: New macros.
	(_nl_state_lock, set_binding_values): Use gl_rwlock_* instead of
	__libc_rwlock_*.
	* dcigettext.c (gl_rwlock_define_initialized, gl_rwlock_rdlock,
	gl_rwlock_wrlock, gl_rwlock_unlock) [_LIBC]: New macros.
	(tree_lock, _nl_state_lock, DCIGETTEXT): Use gl_rwlock_* instead of
	__libc_rwlock_*.
	* finddomain.c (gl_rwlock_define_initialized, gl_rwlock_rdlock,
	gl_rwlock_wrlock, gl_rwlock_unlock) [_LIBC]: New macros.
	(_nl_find_domain): Use gl_rwlock_* instead of __libc_rwlock_*.
	* textdomain.c (gl_rwlock_define, gl_rwlock_wrlock, gl_rwlock_unlock)
	[_LIBC]: New macros.
	(_nl_state_lock, TEXTDOMAIN): Use gl_rwlock_* instead of
	__libc_rwlock_*.
	Needed because NetBSD 3.0 <pthread.h> does
	#define pthread_rwlock_rdlock __libc_rwlock_rdlock etc.

2006-06-17  Bruno Haible  <bruno@clisp.org>

	* config.charset: Update for NetBSD 3.0.

2006-05-24  Bruno Haible  <bruno@clisp.org>

	* printf-args.c (printf_fetchargs): Turn NULL pointers for
	TYPE_STRING and TYPE_WIDE_STRING into a non-NULL replacement.
	Reported by Thorsten Maerz <torte@netztorte.de> via
	Aaron Stone <aaron@serendipity.cx>.

2006-05-15  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (category_to_name): Adjust for _nl_category_names
	change.

2006-04-06  Ulrich Drepper  <drepper@redhat.com>

	* finddomain.c (_nl_find_domain): We never return NULL if we found the
	locale.

2005-12-21  Roland McGrath  <roland@redhat.com>

	* l10nflist.c (_nl_make_l10nflist): Free ABS_FILENAME when later malloc
	fails.

2006-05-17  Bruno Haible  <bruno@clisp.org>

	Cygwin portability.
	* loadinfo.h (PATH_SEPARATOR) [CYGWIN]: Define as ':'.
	* localename.c (WIN32_NATIVE): Renamed from WIN32.
	* localcharset.c (WIN32_NATIVE): Renamed from WIN32.

2006-05-16  Bruno Haible  <bruno@clisp.org>

	* localcharset.c [CYGWIN]: Include <windows.h>.
	(get_charset_aliases): For Cygwin, return the same CPxxx aliases list
	as under WIN32.
	(locale_charset) [CYGWIN]: Try to retrieve the encoding from the
	environment variables. Fall back to GetACP().

2006-05-15  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LDFLAGS, libgnuintl.h): Treat mingw like Cygwin.

2006-05-15  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in: Move the _INTL_MAY_RETURN_STRING_ARG annotations
	from the function definition to the function declaration. Needed in
	C++ mode.

2006-05-11  Bruno Haible  <bruno@clisp.org>

	* intl-exports.c: New file.
	* osdep.c: Include it on Cygwin.
	* Makefile.in (LDFLAGS_yes, LDFLAGS_no): New variables.
	(LDFLAGS): Use it.
	(SOURCES): Add intl-exports.c.
	(libgnuintl.h): When compiling a DLL on Cygwin, mark all exported
	variables as to be imported.

2006-04-17  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (MKINSTALLDIRS, mkinstalldirs): Remove variables.
	(mkdir_p): New variable.
	(install-exec, install-data, installdirs): Use $(mkdir_p) instead of
	$(mkinstalldirs).

2006-04-05  Bruno Haible  <bruno@clisp.org>

	* config.charset: Update Juan Manuel Guerrero's address.

2006-03-11  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (_INTL_MAY_RETURN_STRING_ARG): Define to empty when
	using g++ on MacOS X.

2006-01-22  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): In the computation of the size of the
	temporary buffer for sprintf, take into account the precision also
	for 'd', 'i', 'u', 'o', 'x', 'X'.

2006-01-10  Bruno Haible  <bruno@clisp.org>

	* localcharset.c: Assume ANSI C. Fixes a gcc warning.
	Reported by Werner Lemberg <wl@gnu.org>.

2005-12-25  Bruno Haible  <bruno@clisp.org>

	Fix compilation error when plural.c is generated by bison-2.1.
	* Makefile.in (PLURAL_DEPS_yes, PLURAL_DEPS_no): New macros.
	(plural.$lo): Add conditional dependency to libintl.h.

2005-12-04  Bruno Haible  <bruno@clisp.org>

	Cygwin portability.
	* relocatable.c: Include <windows.h> also on Cygwin.
	(DllMain): Add support for Cygwin.
	(get_shared_library_fullname): Update.
	Patches partially from Charles Wilson <cygwin@cwilson.fastmail.fm>.

2005-10-09  Bruno Haible  <bruno@clisp.org>
2002-07-24  Ulrich Drepper  <drepper@redhat.com>

	* explodename.c (_nl_explode_name): Simplify.

2005-10-09  Bruno Haible  <bruno@clisp.org>
2002-07-24  Ulrich Drepper  <drepper@redhat.com>

	* explodename.c: Recognize the syntax
	  language[_territory][.codeset][@modifier]
	instead of only
	  language[_territory[.codeset]][@modifier]
	(_nl_find_language): Accept '.' as terminator.
	(_nl_explode_name): Accept to parse a codeset without a territory.
	Accept an underscore in the territory.

2005-10-09  Bruno Haible  <bruno@clisp.org>
2002-07-24  Ulrich Drepper  <drepper@redhat.com>

	* explodename.c (_nl_find_language, _nl_explode_name): Remove support
	for CEN-style locale variables. It was never used and shouldn't be
	since it's not portable.
	* finddomain.c (_nl_find_domain): Likewise.
	* l10nflist.c (_nl_make_l10nflist): Likewise.
	* loadinfo.h (_nl_make_l10nflist, _nl_explode_name): Likewise.
	(CEN_*, XPG_SPECIFIC): Remove macros.
	(XPG_TERRITORY): Renamed from TERRITORY.

2005-08-28  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in: Add IN_LIBGLOCALE conditional.
	* Makefile.in (libgnuintl.h, libintl.h): Remove the IN_LIBGLOCALE
	conditional.
	* dcigettext.c [IN_LIBGLOCALE]: Include also <libintl.h>, for
	bindtextdomain().

2005-08-25  Bruno Haible  <bruno@clisp.org>

	* libintl.glibc: Update from current glibc.
	* libgnuintl.h.in (_INTL_MAY_RETURN_STRING_ARG): New macro.
	(gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext):

2005-08-21  Bruno Haible  <bruno@clisp.org>

	* lock.h: Add multiple inclusion guard.

2005-08-19  Bruno Haible  <bruno@clisp.org>

	* localealias.c (read_alias_file): In case of failure, close the
	file descriptor and sort the array before returning.

2005-08-19  Bruno Haible  <bruno@clisp.org>

	* localealias.c (read_alias_file) [IN_LIBGLOCALE]: Ignore aliases
	containing an underscore.

2005-07-31  Bruno Haible  <bruno@clisp.org>

	Make code usable in libglocale.
	* gettextP.h (gl_dcigettext): New declaration.
	(_nl_msg_cat_cntr): Export also from libglocale.
	(_nl_find_msg): In libglocale, take the encoding as argument and no
	convert flag.
	* dcigettext.c (HAVE_PER_THREAD_LOCALE): Define in libglocale.
	(struct known_translation_t): In libglocale, add encoding field.
	(transcmp): In libglocale, compare also the encoding fields.
	(libintl_version): Don't define in libglocale.
	(_nl_current_default_domain, _nl_domain_bindings): Likewise.
	(DCIGETTEXT): In libglocale, also take the localename and encoding
	as arguments. Don't call nl_langinfo. Instead of walking the other
	library's _nl_domain_bindings, use bindtextdomain.
	(_nl_find_msg): In libglocale, take the encoding as argument and no
	convert flag. Don't call get_output_charset.
	(guess_category_value): In libglocale, take the locale name as
	argument. Don't call __current_locale_name or uselocale or
	_nl_locale_name_posix and _nl_locale_name_default.
	(get_output_charset): Don't define in libglocale.
	* loadmsgcat.c (_nl_load_domain): Update.
	* plural-exp.h (plural_eval): Don't declare in libglocale.

2005-08-03  Bruno Haible  <bruno@clisp.org>

	* Makefile.in: Add comments about VPATH.

2005-07-31  Bruno Haible  <bruno@clisp.org>

	* lock.h (gl_lock_initializer): New macro.
	(gl_lock_define_initialized): Use it.
	(gl_rwlock_initializer): New macro.
	(gl_rwlock_define_initialized): Use it.
	(gl_recursive_lock_initializer): New macro.
	(gl_recursive_lock_define_initialized): Use it.

2005-07-31  Bruno Haible  <bruno@clisp.org>

	Avoid const-cast.
	* dcigettext.c (DCIGETTEXT): Change type of 'dirname' to const char *.
	Use an auxiliary variable 'resolved_dirname' of type 'char *'.

2005-07-31  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (tree_lock): Remove extraneous semicolon.

2005-07-25  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (LIBINTL_VERSION): New macro.
	(libintl_version): New declaration.
	* version.c: New file.
	* Makefile.in (SOURCES): Add version.c.
	(OBJECTS): Add version.$lo.
	(version.lo): New rule.
	* Makefile.msvc (OBJECTS): Add version.obj.
	(version.obj): New rule.
	* Makefile.vms (OBJECTS): Add version.obj.
	(version.obj): New rule.

2005-07-25  Bruno Haible  <bruno@clisp.org>

	* intl-compat.c (DLL_EXPORTED) [HAVE_VISIBILITY]: Define to the gcc
	visibility attribute.

2005-07-24  Bruno Haible  <bruno@clisp.org>

	Tidy up exported symbols.
	* export.h: New file.
	* gettextP.h: Move declarations so that libgnuintl.h is included
	before loadinfo.h. Needed because libgnuintl.h defines
	LIBINTL_DLL_EXPORTED and loadinfo.h uses it.
	(_nl_msg_cat_cntr): Export.
	* loadinfo.h (LIBINTL_DLL_EXPORTED): Provide fallback declaration.
	(_nl_expand_alias): Export.
	* bindtextdom.c: Include gettextP.h before libgnuintl.h. Needed so
	that _INTL_REDIRECT_MACROS is defined when libgnuintl.h is included.
	Otherwise libgnuintl.h may choose to use _INTL_REDIRECT_ASM, and then
	gcc-4.0 ignores visibility declarations.
	* textdomain.c: Likewise.
	* relocatable.h (RELOCATABLE_DLL_EXPORTED) [HAVE_VISIBILITY]: Define
	to the gcc visibility attribute.
	* Makefile.in (DEFS): Define also BUILDING_LIBINTL and BUILDING_DLL.
	(CFLAGS): Add CFLAG_VISIBILITY.
	(DISTFILES.common): Add export.h.
	(libgnuintl.h): Add LIBINTL_DLL_EXPORTED definition and uses.
	(libintl.h): Create directly from libgnuintl.h.in, without
	LIBINTL_DLL_EXPORTED.

2005-07-21  Bruno Haible  <bruno@clisp.org>

	* plural.y: Modify comment about #pragma alloca.
	Suggested by Paul Eggert.

2005-07-26  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (datarootdir): New variable.

2005-07-25  Bruno Haible  <bruno@clisp.org>

	Make pthread_in_use() return 0 on Solaris and HP-UX when not linking
	with -lpthread.
	* lock.h (pthread_in_use) [PTHREAD_IN_USE_DETECTION_HARD]: Define
	through glthread_in_use.
	* lock.c (dummy_thread_func, glthread_in_use): New functions.

2005-07-22  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (libintl.la, libgnuintl.la): Link with @LTLIBTHREADS@.

2005-07-16  Bruno Haible  <bruno@clisp.org>

	* lock.h (gl_once_t): New type.
	(gl_once_define, gl_once): New macros.
	* lock.c (fresh_once): New variable.
	(glthread_once, glthread_once_call, glthread_once_singlethreaded): New
	functions.

2005-07-16  Bruno Haible  <bruno@clisp.org>

	* lock.h: New file.
	* lock.c: New file.
	* bindtextdom.c: Include lock.h. Don't include THREAD_H. Remove
	definitions of __libc_rwlock_*.
	* finddomain.c: Likewise.
	* textdomain.c: Likewise.
	* dcigettext.c: Include lock.h. Don't include THREAD_H. Remove
	definitions of __libc_lock_*, __libc_rwlock_*.
	* loadmsgcat.c: Include lock.h. Don't include THREAD_H. Remove
	definitions of __libc_lock_*_recursive.
	* localealias.c: Include lock.h. Don't include THREAD_H. Remove
	definitions of __libc_lock_*.
	* log.c: Likewise.
	* Makefile.in (HEADERS): Add lock.h.
	(SOURCES): Add lock.c.
	(OBJECTS): Add lock.$lo.
	(lock.lo): New rule.
	(bindtextdom.$lo, dcigettext.$lo, finddomain.$lo, loadmsgcat.$lo,
	localealias.$lo, lock.$lo, log.$lo): Depend on lock.h.
	* Makefile.msvc (OBJECTS): Add lock.obj.
	(bindtextdom.obj, finddomain.obj, loadmsgcat.obj, localealias.obj,
	dcigettext.obj, log.obj): Depend on lock.h.
	(lock.obj): New rule.
	* Makefile.vms (OBJECTS): Add lock.obj.
	(bindtextdom.obj, finddomain.obj, loadmsgcat.obj, localealias.obj,
	dcigettext.obj, log.obj): Depend on lock.h.
	(lock.obj): New rule.

2005-07-05  Bruno Haible  <bruno@clisp.org>

	* printf-args.c (printf_fetchargs): Work around broken definition of
	wint_t on mingw.

2005-07-02  Bruno Haible  <bruno@clisp.org>

	* localcharset.c (get_charset_aliases) [WIN32]: Add CP65001 and others.
	Reported by <mus1876@gmx.info> via Alain Bench <messtic@oreka.com>.

2005-05-05  Bruno Haible  <bruno@clisp.org>

	Make libintl multithread-safe outside glibc.
	* bindtextdom.c: Include THREAD_H.
	(__libc_rwlock_*): Define also for USE_POSIX_THREADS or
	USE_PTH_THREADS.
	* dcigettext.c: Include THREAD_H.
	(__libc_lock_*, __libc_rwlock_*): Define also for USE_POSIX_THREADS or
	USE_PTH_THREADS.
	(_nl_state_lock): Define always.
	(tree_lock): Define outside DCIGETTEXT.
	(DCIGETTEXT): ... not here.
	* finddomain.c: Include THREAD_H.
	(__libc_rwlock_*): Define also for USE_POSIX_THREADS or
	USE_PTH_THREADS.
	* loadmsgcat.c: Include THREAD_H.
	(__libc_lock_*_recursive): Define also for USE_POSIX_THREADS or
	USE_PTH_THREADS.
	(_nl_load_domain): Remove extraneous comma.
	* localealias.c: Include THREAD_H.
	(__libc_lock_*): Define also for USE_POSIX_THREADS or USE_PTH_THREADS.
	(lock): Define always.
	(_nl_expand_alias): Use lock always.
	* textdomain.c: Include THREAD_H.
	(__libc_rwlock_*): Define also for USE_POSIX_THREADS or
	USE_PTH_THREADS.
	* log.c: Include THREAD_H.
	(__libc_lock_*): Define also for USE_POSIX_THREADS or USE_PTH_THREADS.
	(last_logfilename, last_logfile, lock): New variables.
	(_nl_log_untranslated_locked): Renamed from _nl_log_untranslated.
	(_nl_log_untranslated): Rewritten.

2005-02-16  Roland McGrath  <roland@redhat.com>

	* dcigettext.c (_nl_find_msg): Add a cast.

	* dcigettext.c (INTVARDEF, INTUSE): Macros removed.
	(_nl_default_dirname): Use libc_hidden_data_def instead of INTVARDEF.
	(libc_freeres_fn, DCIGETTEXT): Don't use INTUSE.
	* bindtextdom.c (INTUSE): Macro removed.
	(_nl_default_dirname): Use libc_hidden_proto.
	(set_binding_values): Don't use INTUSE.

2005-05-05  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (__libc_rwlock_wrlock): Define fallback.
	* finddomain.c (__libc_rwlock_define_initialized,
	__libc_rwlock_rdlock, __libc_rwlock_wrlock, __libc_rwlock_unlock):
	Define fallbacks.
	* loadmsgcat.c (__libc_lock_define_initialized_recursive,
	__libc_lock_lock_recursive, __libc_lock_unlock_recursive): Define
	fallbacks.
	(_nl_load_domain): Fix portability problems in last patch.

2004-09-25  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (DCIGETTEXT): Protect tfind/tsearch calls.
	* dcigettext.c (_nl_find_msg): Call _nl_load_domain also if
	decided < 0.
	* finddomain.c (_nl_find_domain): Likewise.
	* loadmsgcat.c (_nl_load_domain): Set decided to 1 only once we
	are done.  First set to -1 to signal initialization is ongoing.
	Protect against concurrent callers with recursive lock.
	* finddomain.c (_nl_find_domain): Protect calls to
	_nl_make_l10nflist.  [BZ #322]

2004-08-06  Jakub Jelinek  <jakub@redhat.com>

	* finddomain.c (free_mem): Rename to...
	(_nl_finddomain_subfreeres): ... this.  Add __libc_freeres_fn_section.
	* loadmsgcat.c (_nl_unload_domain): Add __libc_freeres_fn_section.
	* gettextP.h (_nl_unload_domain): Move into #ifdef _LIBC.
	Add attribute_hidden.
	(_nl_findomain_subfreeres): New prototype.

2005-05-05  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (_nl_find_msg) [_LIBC]: Update norm_add_slashes call.
	2004-03-24  Roland McGrath  <roland@redhat.com>
		* loadmsgcat.c (_nl_init_domain_conv): Update norm_add_slashes
		call.

2005-05-05  Bruno Haible  <bruno@clisp.org>

	* localealias.c (read_alias_file): Limit last patch to _LIBC case.

2003-09-04  Ulrich Drepper  <drepper@redhat.com>

	* localealias.c (read_alias_file): Use fopen with 'c' mode flag.

2003-09-03  Jakub Jelinek  <jakub@redhat.com>

	* loadmsgcat.c (open, close, read, mmap, munmap): Define as
	function-like macros.

2003-09-02  Ulrich Drepper  <drepper@redhat.com>

	* loadmsgcat.c: For _LIBC, call not cancelable versions of open, close,
	and read.

2003-06-18  Ulrich Drepper  <drepper@redhat.com>

	* localealias.c (read_alias_file): Determine whether line is read
	incompletely early, before we modify the line.

2005-05-05  Bruno Haible  <bruno@clisp.org>

	* hash-string.h (__hash_string): Define differently outside glibc.
	* hash-string.c: Include config.h.
	* Makefile.in (SOURCES): Add hash-string.c.
	(OBJECTS): Add hash-string.$lo.
	(hash-string.lo): New rule.
	(hash-string.$lo): Depend on hash-string.h.
	* Makefile.msvc (OBJECTS): Add hash-string.obj.
	(hash-string.obj): New rule.
	* Makefile.vms (OBJECTS): Add hash-string.obj.
	(hash-string.obj): New rule.

2003-06-11  Ulrich Drepper  <drepper@redhat.com>

	Remove warnings gcc 3.3 shows.
	* hash-string.c: New file.
	* hash-string.h: Remove hash_string definition.  Declare __hash_string.
	* dcigettext.c (_nl_find_msg): Adjust hash_string caller.
	* loadmsgcat.c (_nl_load_domain): Likewise.

2003-04-29  Jakub Jelinek  <jakub@redhat.com>

	* plural.y: Include string.h. Needed because recent versions of bison
	generate output that uses memcpy().

2003-01-07  Ulrich Drepper  <drepper@redhat.com>

	* explodename.c (_nl_find_language.c): Mark as static.
	* loadinfo.h: Remove _nl_find_language prototype.

2005-04-30  Bruno Haible  <bruno@clisp.org>

	* langprefs.c: Use #include <CoreFoundation/...> syntax. It's a
	special Apple syntax implemented in the C compiler, but since
	<CFString.h> already uses it, all compilers usable on MacOS X must
	support it.
	* localename.c: Likewise.

2005-05-03  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c: Include langinfo.h.
	(HAVE_PER_THREAD_LOCALE): Define also if HAVE_NL_LOCALE_NAME.
	(DCIGETTEXT): Support retrieving the locale name through nl_langinfo
	and NL_LOCALE_NAME.

2005-03-20  Bruno Haible  <bruno@clisp.org>

	Make it possible for multiple threads to use gettext() in different
	locales.
	* dcigettext.c (HAVE_PER_THREAD_LOCALE): New macro.
	(struct known_translation_t): If HAVE_PER_THREAD_LOCALE, add localename
	field.
	(transcmp): If HAVE_PER_THREAD_LOCALE, compare localename fields.
	(DCIGETTEXT): If HAVE_PER_THREAD_LOCALE, fill the localename field in
	search and newp.
	(guess_category_value): If HAVE_PER_THREAD_LOCALE, look at the thread's
	locale.

2005-03-19  Bruno Haible  <bruno@clisp.org>

	* gettextP.h (struct loaded_domain): Remove codeset_cntr field.
	(struct binding): Likewise.
	* bindtextdom.c (set_binding_values): Drop codeset_cntr modifications.

2005-03-19  Bruno Haible  <bruno@clisp.org>

	Fix gettext-tools/tests/gettext-5 bug.
	* gettextP.h (struct converted_domain): New type.
	(struct loaded_domain): Remove the conv, conv_tab fields. Add
	conversions, nconversions fields.
	(_nl_init_domain_conv): Remove declaration.
	(_nl_free_domain_conv): Remove declaration.
	(_nl_find_msg): Add convert argument.
	* dcigettext.c (DCIGETTEXT): Call _nl_find_msg with convert=1.
	(_nl_find_msg): Add convert argument. When a conversion to a different
	charset is needed, create a new converted_domain element, instead of
	throwing away the old converted translations.
	(get_output_charset): New function.
	* loadmsgcat.c (_nl_init_domain_conv): Remove function.
	(_nl_free_domain_conv): Remove function.
	(_nl_load_domain): Initialize the conversions array to empty. Use
	_nl_find_msg instead of _nl_init_domain_conv to retrieve the header
	entry.
	(_nl_unload_domain): Free the conversions array and its contents.

2005-03-19  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (struct known_translation_t): Change type of domainname
	field to 'const char *'.
	(DCIGETTEXT): Remove const-cast.

2005-04-18  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (_INTL_REDIRECT_ASM): Test for __APPLE_CC__ > 1.
	Needed because gcc-4.0 defines __APPLE_CC__ and implements
	__USER_LABEL_PREFIX__ correctly.
	* plural-exp.c (GERMANIC_PLURAL): Test for __APPLE_CC > 1.
	Needed because gcc-4.0 defines __APPLE_CC__.

2006-06-21  Bruno Haible  <bruno@clisp.org>

	* gettext-0.14.6 released.

2005-05-23  Bruno Haible  <bruno@clisp.org>

	* gettext-0.14.5 released.

2005-04-11  Bruno Haible  <bruno@clisp.org>

	* gettext-0.14.4 released.

2005-04-11  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 7:3:4.

2005-03-16  Bruno Haible  <bruno@clisp.org>

	Canonicalize locale names on MacOS X.
	* localename.c (_nl_locale_name_canonicalize): New function.
	(_nl_locale_name_default): Use it.
	* langprefs.c (_nl_locale_name_canonicalize): New declaration.
	(_nl_language_preferences_default): Use it.

2005-03-14  Bruno Haible  <bruno@clisp.org>

	* gettext-0.14.3 released.

2005-03-14  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (dist, distdir): Ignore a failure to copy Makefile.in.
	Needed because the automake-1.9 generated dist rule of the parent
	directory already copies this file.

2005-03-08  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 7:2:4.

2005-03-06  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (dist, distdir): Fail if some of the files to be
	distributed do not exist or cannot be copied.
	Suggested by Alexandre Duret-Lutz <adl@src.lip6.fr>.

2005-02-24  Bruno Haible  <bruno@clisp.org>

	* gettext-0.14.2 released.

2005-02-12  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (EOVERFLOW): Define to a fallback if needed.

2005-02-11  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 7:1:4.

2005-01-29  Bruno Haible  <bruno@clisp.org>

	* Makefile.am (libintl.la, libgnuintl.la): Use INTL_MACOSX_LIBS
	instead of INTL_MACOSX_LDFLAGS.

2004-09-08  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Signal EOVERFLOW if the resulting length
	is > INT_MAX.

2005-01-01  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (guess_category_value): Let the environment variables
	LC_ALL, LC_xxx, LANG take precedence over the system-dependent language
	preference list.
	* gettextP.h (_nl_language_preferences): Remove declaration.
	(_nl_language_preferences_default): New declaration.
	(_nl_locale_name_posix, _nl_locale_name_default): New declarations.
	* langprefs.c (_nl_language_preferences_default): Renamed from
	_nl_language_preferences. Remove handling of getenv("LANGUAGE").
	* localename.c (_nl_locale_name_posix, _nl_locale_name_default): New
	functions, extracted from _nl_locale_name.
	(_nl_locale_name): Use them.

2004-09-06  Bruno Haible  <bruno@clisp.org>

	* localename.c (_nl_locale_name): Add code for MacOS X versions that
	don't have the CFLocaleCopyCurrent() function.
	* langprefs.c (_nl_language_preferences): Make code more robust.

2004-09-05  Bruno Haible  <bruno@clisp.org>

	* langprefs.c: New file.
	* gettextP.h (_nl_language_preferences): New declaration.
	* dcigettext.c (guess_category_value) [!_LIBC]: Use
	_nl_language_preferences.
	* Makefile.in (SOURCES): Add langprefs.c.
	(OBJECTS): Add langprefs.$lo.
	(langprefs.lo): New rule.
	* Makefile.msvc (OBJECTS): Add langprefs.obj.
	(langprefs.obj): New rule.
	* Makefile.vms (OBJECTS): Add langprefs.obj.
	(langprefs.obj): New rule.

2004-09-03  Bruno Haible  <bruno@clisp.org>

	* localename.c (_nl_locale_name): Use a more intelligent fallback on
	MacOS X versions that have the CFLocaleCopyCurrent() function.
	* Makefile.in (libintl.la, libgnuintl.la): Use the INTL_MACOSX_LDFLAGS.

2004-09-01  Bruno Haible  <bruno@clisp.org>

	* config.charset: Add support for Darwin 7.

2004-08-13  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (__GNU_GETTEXT_SUPPORTED_REVISION): Treat major
	revision 1 like major revision 0. Needed for 2004-01-09 change.

2004-08-08  Bruno Haible  <bruno@clisp.org>

	* relocatable.c (FILE_SYSTEM_PREFIX_LEN): Renamed from
	FILESYSTEM_PREFIX_LEN.
	(compute_curr_prefix): Update.

2004-05-14  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (VASNPRINTF): Correctly handle the case of a precision
	that consists of a '.' followed by an empty digit string.
	Patch by Tor Lillqvist <tml@iki.fi>.

2004-04-28  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (ISSLASH, IS_ABSOLUTE_PATH, IS_PATH_WITH_DIR): Treat
	Cygwin like Windows, since it now accepts Windows pathnames.
	* l10nflist.c (ISSLASH, IS_ABSOLUTE_PATH): Treat Cygwin like Windows,
	since it now accepts Windows pathnames.
	* localcharset.c (ISSLASH): Treat Cygwin like Windows, since it now
	accepts Windows pathnames.
	* relocatable.c (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN):
	Treat Cygwin like Windows, since it now accepts Windows pathnames.
	(compute_curr_prefix): Likewise.
	Reported by Derek Robert Price <derek@ximbiot.com>.

2004-04-23  Bruno Haible  <bruno@clisp.org>

	* localcharset.c (get_charset_aliases): Allow the CHARSETALIASDIR
	environment variable to override LIBDIR.
	Suggested by Matthias Clasen <mclasen@redhat.com>.

2004-04-20  Jim Meyering  <jim@meyering.net>
            Bruno Haible  <bruno@clisp.org>

	* localcharset.c (get_charset_aliases) [!VMS && !WIN32]: Don't leak
	memory when realloc fails.

2004-03-02  Bruno Haible  <bruno@clisp.org>

	* localename.c (_nl_locale_name): Add info about default territory for
	Basque, Mongolian, Russian, Tamil. Map Norwegian to nb, not no.

2004-02-02  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (install-exec, installdirs, uninstall): Install
	preloaded_libintl.so only on glibc systems, not on OpenBSD.
	Reported by Han Boetes <han@mijncomputer.nl>.

2004-01-29  Bruno Haible  <bruno@clisp.org>

	* gettext-0.14.1 released.

2004-01-28  Bruno Haible  <bruno@clisp.org>

	* gettext-0.14 released.

2004-01-21  Bruno Haible  <bruno@clisp.org>

	* config.charset: Add support for MacOS X (Darwin).

2004-01-18  Bruno Haible  <bruno@clisp.org>

	* localename.c (_nl_locale_name): Use two-letter ISO 639 codes for
	Divehi, Fulfulde, Igbo, Kanuri, Venda.

2004-01-17  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 7:0:4.

2003-12-02  Jakub Jelinek  <jakub@redhat.com>

	* locale.alias: Use nb_NO instead of no_NO for bokmål.

2003-11-03  Ulrich Drepper  <drepper@redhat.com>

	* locale.alias: nb_NO is now the correct name, not no_NO.

2004-01-09  Bruno Haible  <bruno@clisp.org>

	* gmo.h (MO_REVISION_NUMBER_WITH_SYSDEP_I): New definition.
	* loadmsgcat.c (get_sysdep_segment_value): Handle "I".
	(_nl_load_domain): Treat major revision 1 like major revision 0.

2004-01-08  Bruno Haible  <bruno@clisp.org>

	* loadmsgcat.c (_nl_load_domain): When a string pair uses a system
	dependent segment not known to this version of the library, ignore
	the string pair instead of crashing.

2003-12-17  Bruno Haible  <bruno@clisp.org>

	* gettext-0.13.1 released.

2003-12-17  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 6:1:4.

2003-12-05  Bruno Haible  <bruno@clisp.org>

	* localename.c (_nl_locale_name): Change result for Latin Uzbek locale
	to match the glibc name.

2003-12-02  Bruno Haible  <bruno@clisp.org>

	* localename.c (LANG_AMHARIC, LANG_BURMESE, LANG_CAMBODIAN,
	LANG_CHEROKEE, LANG_EDO, LANG_FRISIAN, LANG_FULFULDE, LANG_GUARANI,
	LANG_HAUSA, LANG_HAWAIIAN, LANG_IBIBIO, LANG_IGBO, LANG_INUKTITUT,
	LANG_KANURI, LANG_LAO, LANG_LATIN, LANG_OROMO, LANG_PAPIAMENTU,
	LANG_PASHTO, LANG_SINHALESE, LANG_SOMALI, LANG_TAGALOG, LANG_TAJIK,
	LANG_TAMAZIGHT, LANG_TIBETAN, LANG_TIGRINYA, LANG_TURKMEN, LANG_YI,
	LANG_YIDDISH, LANG_YORUBA): New macros.
	(LANG_GAELIC, LANG_MALTESE, LANG_RHAETO_ROMANCE, LANG_SAAMI, LANG_SUTU,
	LANG_TSONGA, LANG_TSWANA, LANG_VENDA, LANG_WELSH, LANG_XHOSA,
	LANG_ZULU): New macros, consistent with those found in Wine.
	(SUBLANG_BENGALI_INDIA, SUBLANG_BENGALI_BANGLADESH,
	SUBLANG_ENGLISH_INDONESIA, SUBLANG_ENGLISH_HONGKONG,
	SUBLANG_ENGLISH_INDIA, SUBLANG_ENGLISH_MALAYSIA,
	SUBLANG_ENGLISH_SINGAPORE, SUBLANG_FRENCH_WESTINDIES,
	SUBLANG_FRENCH_REUNION, SUBLANG_FRENCH_CONGO, SUBLANG_FRENCH_SENEGAL,
	SUBLANG_FRENCH_CAMEROON, SUBLANG_FRENCH_COTEDIVOIRE,
	SUBLANG_FRENCH_MALI, SUBLANG_FRENCH_MOROCCO, SUBLANG_FRENCH_HAITI,
	SUBLANG_PUNJABI_INDIA, SUBLANG_PUNJABI_PAKISTAN,
	SUBLANG_ROMANIAN_ROMANIA, SUBLANG_ROMANIAN_MOLDOVA,
	SUBLANG_SINDHI_INDIA, SUBLANG_SINDHI_PAKISTAN,
	SUBLANG_TAMAZIGHT_ARABIC, SUBLANG_TAMAZIGHT_LATIN,
	SUBLANG_TIGRINYA_ETHIOPIA, SUBLANG_TIGRINYA_ERITREA): New macros.
	(_nl_locale_name) [WIN32]: Use them. Improve handling of Bengali,
	Serbian, English, French, Punjabi, Romanian, Sindhi, Tamazight,
	Tigrinya.

2003-12-02  Bruno Haible  <bruno@clisp.org>

	* config.charset: Treat the new country name CS like the old country
	name YU.

2003-11-30  Bruno Haible  <bruno@clisp.org>

	* gettext-0.13 released.

2003-11-23  Paul Eggert  <eggert@twinsun.com>
            Bruno Haible  <bruno@clisp.org>

	* printf-parse.h: Don't include sys/types.h.
	(ARG_NONE): New macro.
	(char_directive): Change type of *arg_index fields to size_t.
	* wprintf-parse.h: Don't include sys/types.h.
	(ARG_NONE): New macro.
	(wchar_t_directive): Change type of *arg_index fields to size_t.
	* printf-parse.c: Don't include sys/types.h.
	(SSIZE_MAX): Remove macro.
	(PRINTF_PARSE): Change the type of the arg_index variables to size_t.
	Remove unnecessary overflow check.
	* vasnprintf.c (VASNPRINTF): Update for type change of *arg_index
	fields.

2003-11-17  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (alloca): Remove fallback definition.
	(freea): Remove definition.
	(VASNPRINTF): Use alloca only for small sizes, say <= 4000 bytes.
	Reported by Paul Eggert.

2003-11-16  Paul Eggert  <eggert@twinsun.com>
            Bruno Haible  <bruno@clisp.org>

	Protect against address arithmetic overflow.
	* printf-args.h: Include stddef.h.
	(arguments): Change type of field 'count' to size_t.
	* printf-args.c (printf_fetchargs): Use size_t instead of
	'unsigned int' where appropriate.
	* printf-parse.h: Include sys/types.h.
	(char_directive): Change type of *arg_index fields to ssize_t.
	(char_directives): Change type of fields 'count', max_*_length to
	size_t.
	* wprintf-parse.h: Include sys/types.h.
	(wchar_t_directive): Change type of *arg_index fields to ssize_t.
	(wchar_t_directives): Change type of fields 'count', max_*_length to
	size_t.
	* printf-parse.c: Include sys/types.h and xsize.h.
	(SSIZE_MAX): Define fallback value.
	(PRINTF_PARSE): Use size_t instead of 'unsigned int' and ssize_t
	instead of 'int' where appropriate. Check a_allocated, d_allocated
	against overflow. Reject %m$ argument numbers > SSIZE_MAX + 1.
	* vasnprintf.c: Include xsize.h.
	(VASNPRINTF): Use size_t instead of 'unsigned int' where appropriate.
	Check alloca, malloc, realloc, ENSURE_ALLOCATION arguments against
	overflow. Avoid wraparound when converting a width or precision from
	decimal to binary.
	* xsize.h: New file, from gnulib.
	* Makefile.in (HEADERS): Add xsize.h.
	(printf.$lo): Depend on it.

2003-11-16  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (_INTL_REDIRECT_ASM): Don't define on AIX with gcc 2.
	Reported by Kouichi Hashikawa <z01a7ksy@cs.ecip.tohoku.ac.jp>.

2003-10-19  Bruno Haible  <bruno@clisp.org>

	* hash-string.h (hash_string): Zero-extend each char from the string;
	the old code did a sign-extend on some platforms.

2003-10-19  Jim Meyering  <jim@meyering.net>

	* vasnprintf.c (VASNPRINTF): Work around losing snprintf on HPUX 10.20.

2003-10-09  Bruno Haible  <bruno@clisp.org>

	* relocatable.c: Include xalloc.h instead of xmalloc.h.

2003-10-07  Bruno Haible  <bruno@clisp.org>

	Assume ANSI C.
	* libgnuintl.h.in (PARAMS): Remove macro.
	(gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext,
	textdomain, bindtextdomain, bind_textdomain_codeset, fprintf, vfprintf,
	printf, vprintf, sprintf, vsprintf, snprintf, vsnprintf, asprintf,
	vasprintf, fwprintf, vfwprintf, wprintf, vwprintf, swprintf, vswprintf,
	libintl_set_relocation_prefix): Use ANSI C function declarations.
	* gettextP.h (PARAMS): Remove macro.
	(_nl_locale_name, _nl_find_domain, _nl_load_domain, _nl_unload_domain,
	_nl_init_domain_conv, _nl_free_domain_conv, _nl_find_msg, __gettext,
	__dgettext, __dcgettext, __ngettext, __dngettext, __dcngettext,
	__dcigettext, __textdomain, __bindtextdomain,
	__bind_textdomain_codeset, libintl_dcigettext): Use ANSI C function
	declarations.
	* hash-string.h (PARAMS): Remove macro.
	(hash_string): Use ANSI C function declaration.
	* loadinfo.h (PARAMS): Remove macro.
	(_nl_normalize_codeset, _nl_make_l10nflist, _nl_expand_alias,
	_nl_explode_name, _nl_find_language): Use ANSI C function declarations.
	* plural-exp.h (PARAMS): Remove macro.
	(FREE_EXPRESSION, PLURAL_PARSE, GERMANIC_PLURAL,
	EXTRACT_PLURAL_EXPRESSION): Use ANSI C function declarations.
	* bindtextdom.c (set_binding_values, BINDTEXTDOMAIN,
	BIND_TEXTDOMAIN_CODESET): Use ANSI C function declarations.
	* dcgettext.c (DCGETTEXT): Likewise.
	* dcigettext.c (transcmp, DCIGETTEXT, _nl_log_untranslated,
	_nl_find_msg, plural_lookup, category_to_name, guess_category_value,
	stpcpy, mempcpy): Likewise.
	* dcngettext.c (DCNGETTEXT): Likewise.
	* dgettext.c (DGETTEXT): Likewise.
	* dngettext.c (DNGETTEXT): Likewise.
	* eval-plural.h (plural_eval): Likewise.
	* explodename.c (_nl_find_language, _nl_explode_name): Likewise.
	* finddomain.c (_nl_find_domain): Likewise.
	* gettext.c (GETTEXT): Likewise.
	* intl-compat.c (gettext, dgettext, dcgettext, ngettext, dngettext,
	dcngettext, textdomain, bindtextdomain, bind_textdomain_codeset):
	Likewise.
	* l10nflist.c (argz_count__, argz_stringify__, argz_next__, pop,
	_nl_make_l10nflist, _nl_normalize_codeset, stpcpy): Likewise.
	* loadmsgcat.c (get_sysdep_segment_value, _nl_init_domain_conv,
	locale_charset, _nl_free_domain_conv, _nl_load_domain,
	_nl_unload_domain): Likewise.
	* localealias.c (_nl_expand_alias, read_alias_file, alias_compare):
	Likewise.
	* localename.c (_nl_locale_name): Likewise.
	* log.c (print_escaped, _nl_log_untranslated): Likewise.
	* ngettext.c (NGETTEXT): Likewise.
	* plural-exp.c (EXTRACT_PLURAL_EXPRESSION): Likewise.
	* plural.y (new_exp, new_exp_0, new_exp_1, new_exp_2, new_exp_3,
	FREE_EXPRESSION, yylex, yyerror): Likewise.
	* textdomain.c (TEXTDOMAIN): Likewise.

2003-09-17  Bruno Haible  <bruno@clisp.org>

	* printf.c: Test HAVE_FWPRINTF, not HAVE_WPRINTF. Needed for
	portability to Cygwin.

2003-09-04  Bruno Haible  <bruno@clisp.org>

	* dgettext.c: Include <locale.h> after gettextP.h, not before. This
	ensures that libintl_dcgettext is correctly declared on Solaris.
	(Needed because Solaris <locale.h> includes libintl.h.)
	* dngettext.c: Likewise, for the libintl_dcngettext declaration.

2003-08-29  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c: Test HAVE_DECL__SNPRINTF instead of HAVE__SNPRINTF.
	Test HAVE_DECL__SNWPRINTF instead of HAVE__SNWPRINTF.
	* printf.c: Likewise.

2003-08-27  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (install-exec): Fix the 2003-04-06 patch.

2003-08-24  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (local_wcslen): Protect against multiple definition.
	(USE_SNPRINTF): Define also if only _snprintf() is available.
	(SNPRINTF): Possibly define as _snprintf or _snwprintf.
	* printf.c (DLL_EXPORTED): New macro.
	Mark all functions as DLL_EXPORTED.
	(system_vsnprintf): New macro.
	(libintl_vsnprintf): Use it.
	(system_vswprintf): New macro.
	(libintl_vswprintf): Use it.

2003-08-24  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in: Use <stdarg.h> when compiling with MSVC, even though
	it doesn't define __STDC__ by default.

2003-08-24  Bruno Haible  <bruno@clisp.org>

	* relocatable.h: Make this file includable in C++ mode: add extern "C".

2003-08-23  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 6:0:4.

2003-08-20  Bruno Haible  <bruno@clisp.org>

	* config.charset (linux-gnulibc1*): Change hr_HR, ro_RO to ISO-8859-2.
	Reported by Alain Guibert <derogaton+bgli@oreka.com>.

2003-08-14  Bruno Haible  <bruno@clisp.org>

	* config.charset: Add support for Linux libc5. Based on data from
	Alain Guibert <derogaton+bgli@oreka.com>.

2003-08-11  Bruno Haible  <bruno@clisp.org>

	* vasnprintf.c (local_wcslen): New function, for Solaris 2.5.1.
	(VASNPRINTF): Use it instead of wcslen.

2003-08-01  Bruno Haible  <bruno@clisp.org>

	* relocatable.c (find_shared_library_fullname): Disable the code on
	Linux/libc5. Reported by Alain Guibert <derogaton+bgli@oreka.com>.

2003-06-27  Bruno Haible  <bruno@clisp.org>

	Avoid use of *_unlocked functions on Solaris 2.5.1.
	* localcharset.c: Test HAVE_DECL_GETC_UNLOCKED, not HAVE_GETC_UNLOCKED.
	* localealias.c: Test HAVE_DECL_*_UNLOCKED, not HAVE_*_UNLOCKED.
	Reported by Eric Botcazou <ebotcazou@libertysurf.fr>.

2003-06-22  Bruno Haible  <bruno@clisp.org>

	Portability to mingw32.
	* relocatable.c [WIN32]: Include <windows.h>.
	Reported by Jeff Bonggren <jbon@cfl.rr.com>.

2003-06-22  Bruno Haible  <bruno@clisp.org>

	* relocatable.c (compute_curr_prefix): Comment out this function in
	the case when it is not used.
	Reported by Pavel Roskin <proski@gnu.org>.

2003-06-22  Bruno Haible  <bruno@clisp.org>

	* gettextP.h: Undefine _INTL_REDIRECT_INLINE, _INTL_REDIRECT_MACROS,
	possibly defined in config.h, before setting _INTL_REDIRECT_MACROS.
	Reported by Pavel Roskin <proski@gnu.org>.

2003-06-19  Bruno Haible  <bruno@clisp.org>

	* printf-args.h: New file, from ../libasprintf.
	* printf-args.c: New file, from ../libasprintf.
	* printf-parse.h: New file, from ../libasprintf.
	* printf-parse.c: New file, from ../libasprintf.
	* vasnprintf.h: New file, from ../libasprintf.
	* vasnprintf.c: New file, from ../libasprintf.
	* wprintf-parse.h: New file.
	* vasnwprintf.h: New file.
	* printf.c: New file.
	* libgnuintl.h.in (fprintf, vfprintf, printf, vprintf, sprintf,
	vsprintf, snprintf, vsnprintf, asprintf, vasprintf, fwprintf,
	vfwprintf, wprintf, vwprintf, swprintf, vswprintf): New fallback
	macros.
	* Makefile.in (HEADERS): Add printf-args.h, printf-args.c,
	printf-parse.h, wprintf-parse.h, printf-parse.c, vasnprintf.h,
	vasnwprintf.h, vasnprintf.c.
	(SOURCES): Add printf.c.
	(OBJECTS): Add printf.$lo.
	(DISTFILES.gettext): Add libgnuintl.h_vms, libgnuintl.h.msvc-static.
	(printf.lo): New rule.
	(libgnuintl.h): Also perform some AC_SUBST substitutions.
	(printf.$lo): New dependencies.
	* Makefile.msvc (OBJECTS): Add printf.obj.
	(libgnuintl.h): Use libgnuintl.h.msvc-static.
	(printf.obj): New rule.
	* Makefile.vms (libgnuintl.h): Use libgnuintl.h_vms.

2003-06-12  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h (_INTL_REDIRECT_ASM): Don't define when using Mingw.
	Reported by Tor Lillqvist <tml@iki.fi>.

2003-06-08  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (getcwd) [VMS]: Pass 3 arguments.
	Reported by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.

2003-05-22  Bruno Haible  <bruno@clisp.org>

	* gettext-0.12.1 released.

2003-05-20  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (VPATH): Add back this variable, needed outside gettext
	when $builddir != $srcdir.
	Reported by Pavel Roskin <proski@gnu.org>.

2003-05-18  Bruno Haible  <bruno@clisp.org>

	* Makefile.msvc (DEBUGFLAGS): New variable.
	(intl.lib): Use it.

2003-05-17  Bruno Haible  <bruno@clisp.org>

	* gettext-0.12 released.

2003-05-12  Bruno Haible  <bruno@clisp.org>

	* Makefile.msvc (PICFLAGS, CFLAGS): Move BUILDING_* macros from
	CFLAGS to PICFLAGS.
	Reported by Perry Rapp.

2003-05-07  Bruno Haible  <bruno@clisp.org>

	* Makefile.vms (install): Fix mistake.

2003-05-03  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LIBS): New variable.
	(libintl.la, libgnuintl.la): Use it.
	Reported by Andreas Buening <andreas.buening@nexgo.de>.

2003-04-12  Bruno Haible  <bruno@clisp.org>

	* Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no
	lines. Update library creation rule. Don't use the force target.
	Correct wildcard syntax.
	Suggested by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.

2003-04-12  Bruno Haible  <bruno@clisp.org>

	* localcharset.c (get_charset_aliases): Add special case for VMS.

2003-04-06  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (install-exec): Remove the installed libintl.la if it
	has hardwired pathnames in dependency_libs and the installed package
	shall be relocatable.

2003-04-05  Bruno Haible  <bruno@clisp.org>

	* relocatable.c: Rely on DEPENDS_ON_LIBCHARSET, DEPENDS_ON_LIBICONV,
	DEPENDS_ON_LIBINTL, not on NO_LIBRARIES.
	* Makefile.in (DEFS): Define DEPENDS_ON_LIBICONV, for relocatable.c.
	* Makefile.msvc (CFLAGS): Also define DEPENDS_ON_LIBICONV.

2003-04-05  Bruno Haible  <bruno@clisp.org>

	* relocatable.c (_GNU_SOURCE): Define, to ensure getline() gets
	declared by <stdio.h>.

2003-04-04  Bruno Haible  <bruno@clisp.org>

	* gettextP.h [!_LIBC]: Remove declarations of exported libintl_*
	functions; include libgnuintl.h instead.
	* intl-compat.c: Remove include of libgnuintl.h.
	(DLL_EXPORTED): New macro.
	(gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext,
	textdomain, bindtextdomain, bind_textdomain_codeset): Use it.

2003-04-04  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h.in (libintl_set_relocation_prefix): Convert extern
	declaration to K&R syntax.

2003-03-30  Bruno Haible  <bruno@clisp.org>

	* Makefile.vms: New file.
	* Makefile.in (DISTFILES.gettext): Add Makefile.vms.

2003-03-30  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (INCLUDES): Mention the current directory first.

2003-03-17  Bruno Haible  <bruno@clisp.org>

	Native Woe32/MSVC support.
	* libgnuintl.h.in: Renamed from libgnuintl.h.
	* Makefile.msvc: New file.
	* README.woe32: New file.
	* Makefile.in (HEADERS): Remove libgnuintl.h, add libgnuintl.h.in.
	(DISTFILES.gettext): Add libgnuintl.h.msvc-shared, README.woe32,
	Makefile.msvc.
	(DISTFILES.obsolete): Add libgnuintl.h.
	(libgnuintl.h): New rule.
	(libintl.h, $(OBJECTS)): Expect libgnuintl.h in builddir, not in
	srcdir.
	(mostlyclean): Also remove libgnuintl.h.
	* dcigettext.c (alloca): Add support for MSVC.
	* loadmsgcat.c (alloca): Likewise.
	* localealias.c (alloca): Likewise.
	* relocatable.h (RELOCATABLE_DLL_EXPORTED): New macro.

	* Makefile.in (loadmsgcat.$lo): Depend on hash-string.h.

2003-02-28  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (localcharset.$lo): Depend on localcharset.h.

2003-02-28  Bruno Haible  <bruno@clisp.org>

	Support for relocatable installation.
	* relocatable.h: New file.
	* relocatable.c: New file.
	* libgnuintl.h (libintl_set_relocation_prefix): New declaration.
	* localealias.c: Include relocatable.h.
	(read_alias_file): Relocate LOCALE_ALIAS_PATH element.
	* localcharset.c: Include relocatable.h.
	(get_charset_aliases): Relocate LIBDIR value.
	* Makefile.in (DEFS): Define also ENABLE_RELOCATABLE, IN_LIBRARY,
	INSTALLDIR, NO_XMALLOC, set_relocation_prefix, relocate.
	(HEADERS): Add relocatable.h.
	(SOURCES): Add relocatable.c.
	(OBJECTS): Add relocatable.$lo.
	(relocatable.$lo): New rule.

2003-02-28  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (mkinstalldirs): Simplify. Prepending "$(top_builddir)/"
	in the case of a relative $srcdir is now handled in gettext.m4.

2003-02-28  Bruno Haible  <bruno@clisp.org>

	* localcharset.h: Change copyright to LGPL. Enclose declaration in
	extern "C", for C++ compilers.
	* localcharset.c: Drop C linkage declaration.

2003-02-18  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 5:0:3.

2003-01-29  Bruno Haible  <bruno@clisp.org>

	* config.charset: Add an alias for CP1251 on Solaris.
	Reported by Hidetoshi Tajima <hidetoshi.tajima@sun.com>.

2003-02-16  Bruno Haible  <bruno@clisp.org>

	* log.c: New file.
	* dcigettext.c (DCIGETTEXT) [!_LIBC]: Before returning the
	untranslated string, call _nl_log_untranslated.
	* intl-compat.c: Comments.
	* Makefile.in (SOURCES): Add log.c.
	(OBJECTS): Add intl-compat.$lo unconditionally. Add log.$lo.
	(log.lo): New rule.
	(install-exec): Stop using @INTLOBJS@. Install preloadable_libintl.so.
	(installdirs, uninstall): Update accordingly.

2003-02-16  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (.sin.sed): Remove rule.
	(ref-add.sed, ref-del.sed): New rules.

2003-02-12  Bruno Haible  <bruno@clisp.org>

	Big restructuring.
	* Makefile.in: Make usable with $srcdir != $builddir even when not
	using GNU make.
	(VPATH): Remove variable.
	(.c.lo): Remove rule. Use a separate rule for every object file.
	(libintl.h, charset.alias, $(OBJECTS)): Refer to $srcdir where
	appropriate.
	(INCLUDES): Simplify.
	(install-exec): Special case packages 'gettext-runtime' and
	'gettext-tools'.
	(install-data): Special case package 'gettext-tools'.
	(installdirs, uninstall): Special case packages 'gettext-runtime' and
	'gettext-tools'.
	(distclean, dist): Likewise.
	(Makefile): Work around autoconf error message.

2003-01-12  Bruno Haible  <bruno@clisp.org>

	* localcharset.h: New file.
	* localcharset.c: Include it.
	* Makefile.in (HEADERS): Add localcharset.h.
	(COMHDRS): Remove variable, fold into HEADERS.
	(COMSRCS): Remove variable, fold into SOURCES.

2002-12-12  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (INTVARDEF): Correct fallback definition.

2002-11-19  Ulrich Drepper  <drepper@redhat.com>

	* localealias.c (read_alias_file): Use only about 400 bytes of stack
	space instead of 16k.

2002-10-30  Jakub Jelinek  <jakub@redhat.com>

	* finddomain.c (free_mem): Use libc_freeres_fn macro, remove
	text_set_element.
	* dcigettext.c (free_mem): Likewise.

2002-10-25  Jakub Jelinek  <jakub@redhat.com>

	* localealias.c (libc_freeres_ptr): Define if !_LIBC.
	(string_space, map): Add libc_freeres_ptr.
	(free_mem): Remove.

2002-09-19  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (DCIGETTEXT): Restore errno only right before
	returning.

2002-09-01  Roland McGrath  <roland@redhat.com>

	* localealias.c [__GNUC__]: #undef alloca before #define.

2002-08-30  Roland McGrath  <roland@redhat.com>

	* dcigettext.c (DCIGETTEXT) [_LIBC]: Check for bogus CATEGORY.
	[_LIBC] (category_to_name): Don't define the function.  Instead define
	a macro using _nl_category_names.

2002-08-04  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c: Define _nl_default_dirname_internal as hidden alias
	and use it.
	* bindtextdom.c: Use _nl_default_dirname_internal.

2002-08-03  Roland McGrath  <roland@redhat.com>

	* dcigettext.c (guess_category_value): Use __current_locale_name
	instead of calling setlocale.

2002-08-02  Roland McGrath  <roland@redhat.com>

	* loadmsgcat.c (_nl_init_domain_conv): Use _NL_CURRENT.

2002-07-30  Roland McGrath  <roland@redhat.com>

	* loadmsgcat.c [__GNUC__]: #undef alloca before defining it.

2002-05-01  Ulrich Drepper  <drepper@redhat.com>

	Revert 2002-04-09 change.
	* dcngettext.c (__dcngettext_internal): Remove alias.
	* dngettext.c: Use __dcngettext instead of __dcngettext_internal.
	* ngettext.c: Likewise.

2002-11-07  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (mostlyclean): Remove object files on OS/2 as well.
	Reported by Andreas Buening <andreas.buening@nexgo.de>.

2002-10-16  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (ps, pdf, html, ctags): New targets, for automake-1.7
	compatibility.
	(CTAGS): New rule.

2002-09-18  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h (_INTL_REDIRECT_ASM): Don't define when using Apple cc.
	Reported by Julien Chiron <julien.chiron@univ.u-3mrs.fr>.

2002-08-06  Bruno Haible  <bruno@clisp.org>

	* gettext-0.11.5 released.

2002-07-25  Bruno Haible  <bruno@clisp.org>

	* gettext-0.11.4 released.

2002-07-25  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 4:0:2.

2002-07-23  Bruno Haible  <bruno@clisp.org>

	* loadmsgcat.c (PRI*): Redefine the macros if PRI_MACROS_BROKEN is set.

2002-07-21  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h (__GNU_GETTEXT_SUPPORTED_REVISION): New macro.
	* gmo.h (struct mo_file_header): New fields n_sysdep_segments,
	sysdep_segments_offset, n_sysdep_strings, orig_sysdep_tab_offset,
	trans_sysdep_tab_offset.
	(struct sysdep_segment): New type.
	(struct sysdep_string): New type.
	(SEGMENTS_END): New macro.
	* gettextP.h (struct sysdep_string_desc): New type.
	(struct loaded_domain): New fields malloced, n_sysdep_strings,
	orig_sysdep_tab, trans_sysdep_tab, must_swap_hash_tab. Make fields
	orig_tab, trans_tab, hash_tab to const pointers because they point
	into read-only memory.
	* loadmsgcat.c: Include stdint.h, inttypes.h, hash-string.h.
	(PRI*): Define fallback values.
	(get_sysdep_segment_value): New function.
	(_nl_load_domain): Distinguish major and minor revision parts. Add
	support for minor revision 1 with system dependent strings.
	(_nl_unload_domain): Also free the 'malloced' field.
	* dcigettext.c (_nl_find_msg): Remove test for domain->hash_size, now
	done in loadmsgcat.c. Add support for system dependent strings.

2002-07-17  Bruno Haible  <bruno@clisp.org>

	* gettext-0.11.3 released.

2002-07-16  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 3:0:1.

2002-07-13  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (freea): New macro.
	(FREE_BLOCKS): Free also the registered blocks.
	(DCIGETTEXT): Free the 'search' variable.
	Reported by Andreas Fischer <a.fischer@asentics.de>.

2002-06-13  Bruno Haible  <bruno@clisp.org>

	Make absolute pathnames inside $LANGUAGE work.
	* l10nflist.c (_nl_make_l10nflist): Ignore dirlist if language is an
	absolute path. Fix sizes passed to malloc. Simplify linked list
	handling.

2002-06-13  Bruno Haible  <bruno@clisp.org>

	* localename.c [WIN32] (LANG_DIVEHI, LANG_GALICIAN, LANG_KYRGYZ,
	LANG_MONGOLIAN, LANG_SYRIAC): Provide fallback definitions.
	(_nl_locale_name): Add Amharic, Burmese, Cambodian, Cherokee, Divehi,
	Edo, Frisian, Fulfulde, Gaelic, Guarani, Hausa, Hawaiian, Ibibio,
	Igbo, Inuktitut, Kanuri, Kyrgyz, Lao, Latin, Maltese, Mongolian,
	Oromo, Papiamentu, Pashto, Rhaeto-Romance, Sami, Sinhalese, Somali,
	Syriac, Tagalog, Tajik, Tomazight, Tibetan, Tigrinya, Tsonga, Turkmen,
	Venda, Welsh, Xhosa, Yi, Yiddish, Yoruba, Zulu. Fix Swahili, Tatar.

2002-06-07  Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (INTDIV0_RAISES_SIGFPE): Define a fallback.
	Include <signal.h>.
	* eval-plural.h (plural_eval): Let division by zero cause SIGFPE on
	all platforms.

2002-05-30  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h (_INTL_REDIRECT_ASM, _INTL_REDIRECT_INLINE,
	_INTL_REDIRECT_MACROS, _INTL_ASM, _INTL_ASMNAME, _INTL_STRINGIFY):
	New macros. Use them instead of plain preprocessor level indirection
	when appropriate.
	* intl-compat.c: Define _INTL_REDIRECT_MACROS.

2002-05-28  Bruno Haible  <bruno@clisp.org>

	* localename.c (LANG_SORBIAN): Provide a default value, for mingw32.
	Reported by Michael Opdenacker <m-opdenacker@ti.com>
	and Rob Leslie <rob@mars.org>.

2002-05-09  Bruno Haible  <bruno@clisp.org>

	* config.charset: Update for newest glibc. Add canonical names
	ISO-8859-14, KOI8-T, TCVN5712-1, GEORGIAN-PS.

2002-05-09  Bruno Haible  <bruno@clisp.org>

	* localcharset.c (get_charset_aliases): Add more Windows specific
	aliases.

2002-05-08  Owen Taylor  <otaylor@redhat.com>

	* config.charset: A few additions for Solaris.

2001-12-05  Bruno Haible  <bruno@clisp.org>

	* localcharset.c (locale_charset): Don't return an empty string.

2001-10-23  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: msdos in uk_UA uses CP1125.

2001-08-05  Bruno Haible  <haible@clisp.cons.org>

	Make it possible to build libcharset with CC=gcc CFLAGS="-x c++".
	* localcharset.c (locale_charset): Declare as extern "C".
	(get_charset_aliases): Cast malloc and realloc results to 'char *'.

2002-04-30  Bruno Haible  <bruno@clisp.org>

	* loadmsgcat.c (_nl_init_domain_conv): Don't append //TRANSLIT to
	the encoding if it already has slashes.
	Reported by Perry Rapp <prapp@erols.com>.

2002-04-27  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h: Redirect every function to the one prefixed with
	"libintl_". Remove __OPTIMIZED variants.
	* gettextP.h: Use prefix "libintl_" instead of suffix "__".
	* dcigettext.c: Likewise.
	* dcgettext.c: Likewise.
	* dgettext.c: Likewise.
	* gettext.c: Likewise.
	* dcngettext.c: Likewise.
	* dngettext.c: Likewise.
	* ngettext.c: Likewise.
	* textdomain.c: Likewise.
	* bindtextdom.c: Likewise.
	* plural-exp.h: Likewise.
	* os2compat.c: Likewise.
	* intl-compat.c: Likewise.

2002-04-24  Bruno Haible  <bruno@clisp.org>

	* gettext-0.11.2 released.

2002-04-24  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:1:0.

2002-04-19  Bruno Haible  <bruno@clisp.org>

	* gettextP.h (attribute_hidden): Define as empty macro if not
	already defined.

2002-04-09  Ulrich Drepper  <drepper@redhat.com>

	* dcngettext.c [_LIBC]: Use INTUSE for __dcngettext.
	* dngettext.c [_LIBC] (DCNGETTEXT): Use INTUSE.
	* ngettext.c: Likewise.
	* l10nflist.c [_LIBC]: Use INTUSE for __argz_count and
	__argz_stringify.

2002-04-08  Ulrich Drepper  <drepper@redhat.com>

	* dcgettext.c (__dcgettext): Use INTDEF to define alias.
	* dgettext.c: Call __dcgettext_internal instead of __dcgettext.
	* gettext.c: Likewise.

2002-03-12  Ulrich Drepper  <drepper@redhat.com>

	* plural-exp.h (attribute_hidden): Define as empty macro if not
	already defined.
	(GERMANIC_PLURAL): Declare as hidden.
	* dcigettext.c (_nl_default_default_domain): Define as hidden.
	(_nl_current_default_domain): Likewise
	(_nl_state_lock): Likewise.
	* textdomain.c (_nl_default_default_domain): Declare as hidden.
	(_nl_current_default_domain): Likewise
	(_nl_state_lock): Likewise.
	* bindtextdom.c (_nl_state_lock): Likewise.

2002-03-15  Andrew Zabolotny  <zap@cobra.ru>

	* os2compat.h: Use prefix _nlos2 instead of _os2, to avoid any
	possible name clashes.
	* os2compat.c: Likewise.

2002-03-15  Bruno Haible  <bruno@clisp.org>

	* libgnuintl.h (LC_MESSAGES): Don't define on Solaris 2.5, to avoid
	a warning.
	Reported by Stephen Gildea <gildea@stop.mail-abuse.org>.

2002-03-12  Bruno Haible  <bruno@clisp.org>

	* gettext-0.11.1 released.

2002-02-15  Bruno Haible  <bruno@clisp.org>

	* config.charset [msdosdjgpp]: For Russian, use CP866.

2002-02-14  Andrew Zabolotny  <zap@cobra.ru>

	* os2compat.c (_nl_default_dirname__): Renamed from
	_nl_default_dirname.

2002-02-10  Bruno Haible  <bruno@clisp.org>

	* localename.c: Change copyright notice from GPL to LGPL.
	* eval-plural.h: Likewise.

2002-02-11  Bruno Haible  <bruno@clisp.org>

	* config.charset: Add support for NetBSD.

2002-01-31  Bruno Haible  <bruno@clisp.org>

	* gettext-0.11 released.

2002-01-31  Bruno Haible  <bruno@clisp.org>

	* eval-plural.h: Renamed from plural-eval.c.
	* dcigettext.c: Include eval-plural.h instead of plural-eval.c.
	* Makefile.in (COMHDRS): Remove plural-eval.c, add eval-plural.h.
	(DISTFILES.obsolete): Add plural-eval.c.

2002-01-24  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (libintl.la): Use @LTLIBICONV@ instead of @LIBICONV@.

2002-01-10  Andrew Zabolotny  <zap@cobra.ru>
	    Bruno Haible  <bruno@clisp.org>

	* dcigettext.c (_nl_default_dirname): On OS/2, declare, not define.
	* localcharset.c: Rework OS/2 support.
	* config.charset: Add OS/2 support.
	* os2compat.c: Renamed from os2.c.
	(_nl_default_dirname): Define here.
	* os2compat.h: Moved here from ../os2/.
	* osdep.c: Update.
	* Makefile.in (COMHDRS): Add os2compat.h.
	(COMSRCS): Add os2compat.c, remove os2.c.

2002-01-05  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (libintl.la): Add -lc. Needed on AIX.

2002-01-02  Bruno Haible  <bruno@clisp.org>

	* loadmsgcat.c (_nl_init_domain_conv): Convert extern declaration to
	K&R syntax.

2002-01-02  Bruno Haible  <bruno@clisp.org>

	* plural.y: Fix %expect count.

2001-12-23  Bruno Haible  <bruno@clisp.org>

	* os2.c (os2_initialize): Use LOCALEDIR_MAX macro.

2001-12-21  Bruno Haible  <bruno@clisp.org>

	* localcharset.c (ISSLASH): Provide definition for DOS-like systems.

2001-12-21  Bruno Haible  <bruno@clisp.org>

	* libgettext.h: Moved to ../lib/gettext.h.
	* Makefile.in (HEADERS): Remove libgettext.h.
	(DISTFILES.obsolete): Add libgettext.h.

2001-12-21  Bruno Haible  <bruno@clisp.org>

	* gmo.h: Renamed from gettext.h.
	* gettext.h: Remove file.
	* gettextP.h: Update accordingly.
	* loadmsgcat.c: Likewise.
	* Makefile.in (COMHDRS): Add gmo.h, remove gettext.h.
	(DISTFILES.obsolete): Add gettext.h.
	Update dependencies.

2001-12-18  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:0:0.
	Used to force an soname of at least libintl.so.2 on Solaris, which
	already has a different libintl.so.1 in /usr/lib.

2001-12-15  Andrew Zabolotny  <zap@cobra.ru>
	    Bruno Haible  <bruno@clisp.org>

	* osdep.c: New file.
	* os2.c: New file.
	* dcigettext.c (DCIGETTEXT): Add backward compatibility support for
	OS/2.
	* localcharset.c: Add OS/2 support.
	* localealias.c (_nl_expand_alias): Initialize locale_alias_path once,
	but not statically.
	* Makefile.in (COMSRCS): Add osdep.c, os2.c.
	(OBJECTS): Add osdep.$lo.

2001-12-12  Bruno Haible  <bruno@clisp.org>

	* libgettext.h [!ENABLE_NLS]: Cast all function results to
	'const char *'.
	Reported by Alexandre Duret-Lutz <duret_g@lrde.epita.fr>.

2001-12-03  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (install-exec): Don't create an empty libdir.
	(installdirs): Update accordingly.

2001-11-30  Bruno Haible  <bruno@clisp.org>

	* plural-exp.h (plural_eval): Add back declaration.
	* Makefile.in (OBJECTS): Remove plural-eval.$lo.
	(COMSRCS): Remove plural-eval.c.
	(COMHDRS): Add plural-eval.c.
	(plural-eval.$lo): Remove dependency.
	(dcigettext.$lo): Depend on plural-eval.c.

2001-11-29  Bruno Haible  <bruno@clisp.org>

	* gettextP.h (_nl_locale_name): Don't declare inside glibc.
	* localename.c (_nl_locale_name): Remove _LIBC conditional.

2001-11-27  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (guess_category_value): Inside glibc, use setlocale
	directly, not _nl_locale_name.

2001-11-27  Ulrich Drepper  <drepper@redhat.com>

	* loadmsgcat.c (_nl_init_domain_conv): Modify #if expression.

2001-11-27  Ulrich Drepper  <drepper@redhat.com>

	* plural-eval.c (plural_eval): Rename back from PLURAL_EVAL.
	* plural-exp.h (PLURAL_EVAL): Remove declaration.
	* dcigettext.c Include plural-eval.c.
	(plural_lookup): Call plural_eval instead of PLURAL_EVAL.

2001-11-22  Bruno Haible  <bruno@clisp.org>

	* plural-exp.h (GERMANIC_PLURAL): New declaration.
	* plural-exp.c (GERMANIC_PLURAL): Renamed from germanic_plural.
	* loadmsgcat.c (_nl_unload_domain): Update.

2001-07-17  Ulrich Drepper  <drepper@redhat.com>

	* localealias.c (read_alias_file): Disable implicit locking
	for the stream.  Use _unlocked functions for glibc.

2001-11-11  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (dist): Avoid using hard links, because the automake-1.5
	generated toplevel 'distdir' target chmods all the distributed files.

2001-11-10  Bruno Haible  <haible@clisp.cons.org>

	* libgnuintl.h (_INTL_PARAMS): Renamed from PARAMS, to avoid polluting
	the user's namespace.
	Also test for __GNUC__, __SUNPRO_C and __PROTOTYPES because on
	64-bit Solaris, we need prototypes although __STDC__ is often defined
	to 0. __GNUC__ covers GCC, __SUNPRO_C covers Sun cc, regardless of
	compilation flags. __PROTOTYPES covers other compilers when compiling
	programs using autoconf's AC_C_PROTOTYPES.
	* gettextP.h (PARAMS): Also test for __SUNPRO_C, because 64-bit Solaris
	cc needs prototypes although it defines __STDC__ to 0 by default.
	Also test for __cplusplus and __PROTOTYPES, just for consistency with
	libgnuintl.h.
	* hash-string.h (PARAMS): Likewise.
	* loadinfo.h (PARAMS): Likewise.
	* plural-exp.h (PARAMS): Likewise.

2001-10-31  Bruno Haible  <haible@clisp.cons.org>

	* plural.y: Include <stddef.h>, needed for NULL with SunOS 4 cc.

2001-10-31  Bruno Haible  <haible@clisp.cons.org>

	* COPYING.LIB-2.0: Renamed from COPYING.LIB-2.
	* Makefile.in (DISTFILES.gettext, install-data, uninstall): Update.
	(DISTFILES.obsolete): Add COPYING.LIB-2.

2001-10-09  Bruno Haible  <haible@clisp.cons.org>

	* localcharset.c (getc): Define as getc_unlocked if available.

2001-09-27  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (install-strip, installdirs): New rules.

2001-09-24  Bruno Haible  <haible@clisp.cons.org>

	* localename.c: New file, integrating a function from
	Tor Lillqvist <tml@iki.fi>.
	* gettextP.h: New declaration.
	* dcigettext.c (guess_category_value): Call _nl_locale_name.
	* Makefile.in (COMSRCS): Add localename.c.
	(OBJECTS): Add localename.$lo.

2001-09-22  Bruno Haible  <haible@clisp.cons.org>

	* plural-eval.c: New file, extracted from dcigettext.c.
	* plural-exp.h (PLURAL_EVAL): New declaration.
	* dcigettext.c (plural_eval): Remove function, moved to plural-eval.c.
	(plural_lookup): Call PLURAL_EVAL instead of plural_eval.
	* Makefile.in (COMSRCS): Add plural-eval.c.
	(OBJECTS): Add plural-eval.$lo.

2001-09-22  Bruno Haible  <haible@clisp.cons.org>

	* plural-exp.c (EXTRACT_PLURAL_EXPRESSION): Reject numbers that don't
	start with a digit; nplurals must be positive.

2001-10-20  Bruno Haible  <haible@clisp.cons.org>

	Assume strchr() exists. (Without it, explodename.c wouldn't link
	anyway.)
	* dcigettext.c (strchr): Remove fallback definition; it conflicts with
	the variable 'index' in plural_lookup.
	* l10nflist.c (strchr): Likewise.
	* localealias.c (strchr): Likewise.

2001-09-24  Bruno Haible  <haible@clisp.cons.org>

	* loadmsgcat.c (_nl_init_domain_conv): Also enable transliteration
	when building on a glibc system but outside glibc.

2001-09-02  Bruno Haible  <haible@clisp.cons.org>

	* plural-exp.h: New file, extracted from gettextP.h.
	* plural-exp.c: New file, extracted from loadmsgcat.c.
	* gettextP.h (struct expression, struct parse_args,
	__gettext_free_exp, __gettextparse): Move to plural-exp.h.
	* loadmsgcat.c: Include plural-exp.h.
	(PLURAL_PARSE): Move macro to plural-exp.h.
	(plvar, plone, germanic_plural, INIT_GERMANIC_PLURAL): Move to
	plural-exp.c.
	(_nl_load_domain): Move plural handling code to plural-exp.c. Call
	EXTRACT_PLURAL_EXPRESSION.
	* dcigettext.c: Include plural-exp.h.
	* plural.y: Include plural-exp.h, not gettextP.h.
	(FREE_EXPRESSION): Move macro to plural-exp.h.
	* Makefile.in (DEFS): Define IN_LIBINTL.
	(COMHDRS): Add plural-exp.h.
	(COMSRCS): Add plural-exp.c.
	(OBJECTS): Add plural-exp.$lo.
	Update dependencies.

2001-07-28  Bruno Haible  <haible@clisp.cons.org>

	* l10nflist.c (_nl_normalize_codeset): Cast isalnum, isalpha, isdigit,
	tolower argument to 'unsigned char'.
	* loadmsgcat.c (_nl_load_domain): Cast isspace argument to
	'unsigned char'.
	* localealias.c (read_alias_file): Cast isspace argument to
	'unsigned char'.

2001-07-23  Bruno Haible  <haible@clisp.cons.org>

	* gettext.h: Assume <limits.h> exists.

2001-09-13  Bruno Haible  <haible@clisp.cons.org>

	* gettext-0.10.40 released.

2001-07-11  Ulrich Drepper  <drepper@redhat.com>

	* locale.alias: Use he language code for hebrew, not iw.

2001-09-13  Bruno Haible  <haible@clisp.cons.org>

	* *.h, *.c, *.y, Makefile.in: Change copyright notice from GPL to LGPL.
	This is a reaction to a blackmail from the GNOME project which
	threatened to distribute an LGPLed clone of libintl.
	* COPYING.LIB-2, COPYING.LIB-2.1: New files.
	* Makefile.in (DISTFILES.gettext): Add them.
	(install-data): Install them.
	(uninstall): Uninstall them.

2001-07-24  Bruno Haible  <haible@clisp.cons.org>

	* gettext-0.10.39 released.

2001-06-24  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: Change canonical name of BIG5HKSCS to BIG5-HKSCS.
	Change canonical name of SJIS to SHIFT_JIS.

2001-06-12  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (DCIGETTEXT): Release the lock before returning.

2001-04-30  Bruno Haible  <haible@clisp.cons.org>

	Silence "gcc -Wall -Wwrite-strings" warnings.
	* localcharset.c (charset_aliases): Change type to 'const char *'.
	(get_charset_aliases): Change type of 'cp' to 'const char *'.

2001-05-23  Bruno Haible  <haible@clisp.cons.org>

	* gettext-0.10.38 released.

2001-05-22  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (install-data): Install plural.c as well.
	(uninstall): Uninstall plural.c as well.

2001-05-18  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (dist): Don't assume $(srcdir) = ".". Distribute
	file in either current directory or $(srcdir), whichever exists.

2001-05-11  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (install-exec): Don't install charset.alias on glibc 2.1
	systems.

2001-04-30  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (getuid, getgid, geteuid, getegid): Provide default
	definitions. Needed for mingw32.

2001-04-19  Bruno Haible  <haible@clisp.cons.org>

	* gettext-0.10.37 released.

2001-04-19  Bruno Haible <haible@clisp.cons.org>

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 1:1:0.

2001-04-19  Bruno Haible <haible@clisp.cons.org>

	* loadmsgcat.c (_nl_init_domain_conv): Don't append //TRANSLIT when
	the libiconv version is smaller than 1.5.

2001-04-09  Bruno Haible <haible@clisp.cons.org>

	* loadmsgcat.c: Don't use GNU C extensions if __APPLE_CC__ is defined.
	Apple's MacOS X compiler has not all the features that the regular
	GCC with the same version number has.

2001-04-07  Bruno Haible <haible@clisp.cons.org>

	* gettextP.h (struct loaded_domain): Add codeset_cntr field.
	(struct binding): Add codeset_cntr field.
	(_nl_load_domain): Add domainbinding argument.
	(_nl_init_domain_conv, _nl_free_domain_conv): New declarations.
	(_nl_find_msg): New declaration, moved here from loadinfo.h.
	* loadinfo.h (struct loaded_l10nfile): Remove domainbinding field.
	(_nl_make_l10nflist): Remove domainbinding argument.
	(_nl_find_msg): Move declaration to gettextP.h.
	* bindtextdom.c (set_binding_values): Initialize ->codeset_cntr to 0.
	Increment it when ->codeset is changed.
	* dcigettext.c (DCIGETTEXT): Pass binding to _nl_find_msg.
	(_nl_find_msg): Add domainbinding argument. Reinitialize the converter
	if domainbinding->codeset_cntr has been incremented.
	* finddomain.c (_nl_find_domain): Don't pass domainbinding to
	_nl_make_l10nflist(). Pass it to _nl_load_domain() instead.
	* l10nflist.c (_nl_make_l10nflist): Remove domainbinding argument.
	* loadmsgcat.c (_nl_init_domain_conv): New function, extracted from
	_nl_load_domain. Append //TRANSLIT also when using libiconv.
	(_nl_free_domain_conv): New function, extracted from _nl_unload_domain.
	(_nl_load_domain): Add domainbinding argument. Call
	_nl_init_domain_conv.
	(_nl_unload_domain): Call _nl_free_domain_conv.

2001-04-09  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (HAVE_LOCALE_NULL): Don't define if __GNU_LIBRARY__ < 2
	(Linux libc5).

2001-04-04  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (HAVE_LOCALE_NULL): Define also if __GNU_LIBRARY__.

2001-04-04  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (libdir, includedir, datadir): Use the autoconf
	determined value, in order to respect the configure arguments.
	(gettextsrcdir): Use $(datadir), not @datadir@.

2001-03-29  Bruno Haible  <haible@clisp.cons.org>

	* gettext-0.10.36 released.

2001-03-25  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (install-data): Set execution bits on installed
	config.charset.

2001-03-23  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (YACC): Use @INTLBISON@ instead of bison.

2001-03-21  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (_nl_state_lock): Mark as #ifdef _LIBC. AIX 3 xlc
	chokes on empty macro arguments.
	* plural.y: Add #pragma for alloca on AIX 3.

2001-03-20  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (DISTFILES.generated): New variable.
	(DISTFILES.gettext): Remove plural.c.
	(dist): Use DISTFILES.generated.
	(YACC): Use "bison -y" instead of @YACC@.
	Needed for "make dist" to work in normal packages.

2001-03-20  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (dist): Don't depend on $(DISTFILES). Instead, generate
	the files to be distributed through a recursive 'make' call.

2001-03-17  Bruno Haible  <haible@clisp.cons.org>

	* gettextP.h (struct expression): Add operators lnot, less_than,
	greater_than, less_or_equal, greater_or_equal. Replace args2/args3
	union by a 'nargs' counter and an 'args[]' array.
	* plural.y: Don't include stdarg.h.
	(new_exp): New function.
	(new_exp_0, new_exp_2, new_exp_3): Rewritten to call new_exp.
	(new_exp_1): New function.
	('?' ':'): Make right-associative.
	(EQUOP2): New token, replaces '=' and '!'.
	(CMPOP2): New token.
	(ADDOP2): New token, replaces '+' and '-'.
	(MULOP2): New token, replaces '*', '/' and '%'.
	('!'): New token.
	(exp): Add rules for CMPOP2 and '!'. Don't call YYABORT.
	(start): Call YYABORT here.
	(FREE_EXPRESSION): Update.
	(yylex): Don't skip "\\n". Recognize comparison and '!' operators.
	Update for new token symbols.
	* loadmsgcat.c (plvar, plone, germanic_plural, init_germanic_plural):
	Update.
	* dcigettext.c (_nl_find_msg): Optimize for space.
	(plural_eval): Recognize comparison and '!' operators. Optimize for
	space.

	* dcigettext.c (transcmp): New declaration.

2001-03-10  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (libintl.la): Pass -liconv and flag -no-undefined.
	Needed on platforms like BeOS.

	* Makefile.in (all-no-yes): Depend on libgnuintl.$la, not libintl.$la.
	(libgnuintl.a, libgnuintl.la): New targets. Needed for linking
	../tests/tstgettext on systems which have gettext() in libintl.so.

	* localcharset.c (locale_charset): Allow wildcard syntax. Resolve
	alias also if codeset is empty.
	* config.charset (BeOS): Use wildcard syntax.

	* loadmsgcat.c (_nl_load_domain): locale_charset() doesn't return NULL
	any more.

2001-03-09  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: Update from libiconv-1.6.
	* localcharset.c: Likewise.

2001-02-25  Ulrich Drepper  <drepper@redhat.com>

	* locale.alias: Don't use nb_NO but define aliases for it.

2001-01-26  Ulrich Drepper  <drepper@redhat.com>

	* loadmsgcat.c: Include <locale.h> for _LIBC.

2001-03-09  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (transmem_block_t): Change to unsigned char, to avoid
	compiler warning.
	(_nl_find_msg): Add casts to avoid compiler warnings.

2001-03-09  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (DISTFILES.common): Remove ChangeLog.
	(DISTFILES.obsolete): New variable.
	(install-data): Install ChangeLog.inst as ChangeLog. Remove the files
	listed in DISTFILES.obsolete.
	(uninstall): Simplify.
	(distclean): Remove ChangeLog.inst.
	(dist): Mention ChangeLog explicitly.

2001-03-04  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (ISSLASH, HAS_DEVICE, IS_ABSOLUTE_PATH,
	IS_PATH_WITH_DIR): New macros.
	(DCIGETTEXT): Use IS_ABSOLUTE_PATH and IS_PATH_WITH_DIR. Increment
	path_max proportionally.
	* loadinfo.h (PATH_SEPARATOR): New macro.
	* l10nflist.c (_nl_make_l10nflist): Use PATH_SEPARATOR instead of ':'.
	* localealias.c (_nl_expand_alias): Likewise.
	* libgnuintl.h (gettext) [DJGPP]: Define as a macro as well.

2001-03-06  Bruno Haible  <haible@clisp.cons.org>

	* libgnuintl.h (LC_MESSAGES): Don't define on Solaris.

2001-02-24  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c: Update comment about HAVE_LOCALE_NULL.

2001-02-05  Bruno Haible  <haible@clisp.cons.org>

	* libgnuintl.h (LC_MESSAGES): Provide a default value.

2001-01-30  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: Update for FreeBSD 4.2.

2001-01-21  Bruno Haible  <haible@clisp.cons.org>

	Use libtool.
	* Makefile.in (l): Use INTL_LIBTOOL_SUFFIX_PREFIX instead of l.
	(all-no): When USE_INCLUDED_LIBINTL is 'no' but BUILD_INCLUDED_LIBINTL
	is 'yes', still build libintl.$la because the testsuite needs it.
	(libintl.la): Add $(CPPFLAGS) $(CFLAGS) $(XCFLAGS). Linking via $(CC)
	must use all $(CFLAGS).
	(install-exec): Use libtool to install libintl.$la.
	(uninstall): Use libtool to uninstall libintl.$la.
	(mostlyclean): Remove *.la and the .libs subdir.
	* intl-compat.c: Reorder. Add comment.

2001-01-20  Bruno Haible  <haible@clisp.cons.org>

	* loadmsgcat.c (O_BINARY): Define on platforms that don't have it.
	(_nl_load_domain): Open the catalog file in binary mode.

2001-01-24  Bruno Haible  <haible@clisp.cons.org>

	* gettextP.h (SWAP): Remove declaration, to work around a compilation
	failure on alphaev5-cray-unicosmk2.0.5.X.

2001-01-15  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (_nl_find_msg): Cast the second iconv() arg, to avoid
	a warning.

2001-01-07  Bruno Haible  <haible@clisp.cons.org>

	* gettextP.h (__gettextdebug): Remove declaration.
	(gettext_free_exp__, gettextparse__): New non-libc declarations.
	* plural.y [!_LIBC]: Define gettextparse__, gettext_free_exp__, not
	__gettextparse, __gettext_free_exp.
	* loadmsgcat.c [!_LIBC]: Use gettextparse__, not __gettextparse.

2001-01-07  Bruno Haible  <haible@clisp.cons.org>

	* libgnuintl.h: Renamed from intlh.inst.in.
	Remove comment about __builtin_constant_p.
	(gettext): Use NULL.
	* libgettext.h: Completely rewritten. Now a conditional wrapper around
	<libintl.h>. Keep the handling of ENABLE_NLS and gettext_noop, remove
	everything else.
	* gettextP.h: Include gettext.h, for nls_uint32.
	(gettext__, dgettext__, dcgettext__, textdomain__, bindtextdomain__,
	bind_textdomain_codeset__): New declarations, from old libgettext.h.
	* gettext.h: Don't include <stdio.h>.
	* Makefile.in (HEADERS): Add libgnuintl.h.
	(DISTFILES.gettext): Remove intlh.inst.in.
	(all-yes): Depend on libintl.h instead of intlh.inst.
	(libintl.h): New target. Create as a copy of libgnuintl.h.
	(intlh.inst): Remove target.
	(install-exec): Update.
	($(OBJECTS): Depend on libgnuintl.h, not libgettext.h.
	(mostlyclean): Remove libintl.h instead of intlh.inst.
	(dist-libc): Remove target.
	* bindtextdom.c: Include libgnuintl.h instead of libgettext.h. Don't
	include gettext.h.
	* dcgettext.c: Likewise.
	* dcigettext.c: Likewise.
	* dcngettext.c: Likewise.
	* dngettext.c: Likewise.
	* finddomain.c: Likewise.
	* ngettext.c: Likewise.
	* textdomain.c: Likewise.
	* dgettext.c: Include libgnuintl.h instead of libgettext.h. Include
	gettextP.h.
	* gettext.c: Likewise.
	* intl-compat.c: Likewise.
	* localealias.c: Don't include gettext.h.
	* plural.y: Likewise.

2001-01-07  Bruno Haible  <haible@clisp.cons.org>

	Assume <stddef.h>, <stdlib.h>, <string.h>, <locale.h> exist.
	* intlh.inst.in: Likewise.
	* libgettext.h: Likewise.
	* gettextP.h: Likewise.
	* bindtextdom.c: Likewise.
	* dcigettext.c: Likewise.
	* dgettext.c: Likewise.
	* dngettext.c: Likewise.
	* explodename.c: Likewise.
	* finddomain.c: Likewise.
	* gettext.c: Likewise.
	* l10nflist.c: Likewise.
	* loadmsgcat.c: Likewise.
	* localealias.c: Likewise.
	* ngettext.c: Likewise.
	* textdomain.c: Likewise.

2001-01-06  Bruno Haible  <haible@clisp.cons.org>

	Remove catgets fallback code.
	- It does not handle message clash prevention through domains and
	  dgettext().
	- It does not handle message catalog inheritance and the LANGUAGE
	  environment variable.
	- It does not handle locale aliases.
	- It does not handle automatic charset conversion.
	- It does not handle plural form handling and ngettext().
	- It uses a slow string to integer conversion.
	- It is sensitive against installation problems.
	* cat-compat.c: Remove file.
	* po2msg.sin, po2tbl.sin: Remove files.
	* Makefile.in (datadir): Assume DATADIRNAME = share.
	(SOURCES): Remove cat-compat.c.
	(DISTFILES.common): Remove po2msg.sin, po2tbl.sin.
	(distclean): No need to remove po2msg.sed, po2tbl.sed.
	(../po/cat-id-tbl.$lo): Remove rule.
	* libgettext.h (_msg_ent): Remove.
	(_msg_tbl, _msg_tbl_length): Remove declarations.
	(gettext, dgettext, ngettext, dngettext): Don't depend on
	!HAVE_CATGETS.

2001-01-04  Ulrich Drepper  <drepper@redhat.com>

	* plural.y (yylex): Minimal improvement in number scanner.

2001-01-02  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (guess_category_value): Rewrite so that LANGUAGE value
	is ignored if the selected locale is the C locale.

2000-11-20  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (transcmp): Make s1 and s2 const.
	* loadmsgcat.c (_nl_load_domain): Rearrange domain initialization to
	avoid warning.

2000-11-09  Ulrich Drepper  <drepper@redhat.com>

	* locale.alias: Add thai.
	Patch by Chanop Silpa-Anan <chanop@syseng.anu.edu.au>.

2001-01-05  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (INCLUDES): Remove reference to $(top_srcdir)/lib.
	(.SUFFIXES): Put .c before .y, so that Solaris "make" uses the .c.o
	rule, not the builtin .y.o rule.
	(.y.c): Use $< instead of $^. $^ is not supported by SUSV2 "make"
	specification. Remove $*.h explicitly: we don't need plural.h.
	* gettextP.h: Include <stddef.h>.
	(__gettext_free_exp, __gettextparse): Convert prototype to K&R C
	syntax.
	* bindtextdom.c (offsetof): Provide fallback for platforms that lack
	it, like SunOS4.
	(set_binding_values): Convert prototype to K&R C syntax.
	* cat-compat.c: Include stdlib.h, string.h whenever possible.
	* dcigettext.c: Ignore the value of C_ALLOCA, because libintl.a
	must not depend on external .o files.
	(offsetof): Provide fallback for platforms that lack it, like SunOS4.
	(transcmp): Convert to K&R C syntax.
	* explodename.c Include stdlib.h whenever possible.
	(_nl_find_language): Convert to K&R C syntax.
	* finddomain.c: Include stdlib.h whenever possible.
	* l10nflist.c Include stdlib.h whenever possible.
	(_nl_normalize_codeset): Use tolower, not _tolower.
	* loadmsgcat.c: Include stdlib.h whenever possible.
	Include headers needed for alloca().
	(freea): New macro.
	(_nl_load_domain): Add fallback code for platforms lacking strtoul,
	like SunOS4. Add fallback code for platforms lacking alloca.
	* localealias.c: Include stdlib.h whenever possible.
	(ADD_BLOCK, FREE_BLOCK): Remove macros.
	(freea): New macro.
	(read_alias_file): Simplify fallback code for platforms lacking alloca.
	* plural.y (new_exp_0, new_exp_2, new_exp_3): New functions.
	(new_exp): Remove function.
	(__gettext_free_exp, yylex, yyerror): Convert to K&R C syntax.
	* textdomain.c: Include stdlib.h whenever possible.
	* gettext.c: Likewise.
	* ngettext.c: Likewise.
	* localcharset.c (volatile): Define to empty if not using ANSI C.

2001-01-01  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (mostlyclean): Remove intlh.inst, charset.alias,
	ref-add.sed, ref-del.sed.
	(distclean): In the gettext package, remove VERSION.

2001-01-01  Bruno Haible  <haible@clisp.cons.org>

	Finish implementation of plural form handling.
	* dcigettext.c (known_translation_t): Rename 'domain' field to
	'domainname'. Remove 'plindex' field. Add 'domain' and
	'translation_length' fields.
	(transcmp): Don't compare 'plindex' fields.
	(plural_lookup): New function.
	(DCIGETTEXT): Change cache handing in the plural case. Don't call
	plural_eval before the translation and its catalog file have been
	found. Remove plindex from cache key. Add 'translation_length' and
	'domain' to cache result.
	(_nl_find_msg): Remove index argument, return length of translation
	to the caller instead. Weaken comparison of string lengths, to account
	for plural entries. Call iconv() on the entire result string, not
	only on the portion needed so far.
	* loadinfo.h (_nl_find_msg): Remove index argument, add lengthp
	argument.
	* loadmsgcat.c (_nl_load_domain): Adapt to _nl_find_msg change.

	* intl-compat.c (dcngettext, dngettext, ngettext): New functions.
	* libgettext.h (ngettext__, dngettext__, dcngettext__): New
	declarations.
	(ngettext, dngettext): Add missing macro argument.

	* intlh.inst.in (ngettext, dngettext): Add missing macro argument.

2000-12-31  Bruno Haible  <haible@clisp.cons.org>

	* gettextP.h (ZERO): New macro.
	(struct binding): Always use ZERO.
	* bindtextdom.c (set_binding_values): Use offsetof, not sizeof.
	Include <stddef.h> whenever possible.
	* dcigettext.c (ZERO): Remove macro.
	(struct transmem_list): Use ZERO.
	(DCIGETTEXT): Use offsetof, not sizeof.
	Include <stddef.h> whenever possible.

	* config.charset: Update from libiconv-1.5.1.
	* localcharset.c: Likewise.

2000-12-30  Bruno Haible  <haible@clisp.cons.org>

	* locale.alias: New file, moved here from ../misc/locale.alias. Add
	"Packages using this file" line.
	* Makefile.in (DISTFILES.common): Add locale.alias.
	(install-exec, uninstall): Install/deinstall locale.alias.

2000-10-30  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (guess_category_value): For libc always use the
	setlocale() method.

2000-10-20  Ulrich Drepper  <drepper@redhat.com>

	* libintl.glibc (ngettext macro): Add missing parameter.
	(dngettext macro): Likewise.

2000-10-14  Ulrich Drepper  <drepper@redhat.com>

	* localealias.c (read_alias_file): Update string pointers in map[]
	if realloc() changed the values.
	Patch by Jakub Jelinek <jakub@redhat.com>.

2000-08-31  Ulrich Drepper  <drepper@redhat.com>

	* loadmsgcat.c: Use *stat64 instead of *stat internally.

	* dcigettext.c (free_mem): Correct freeing of _nl_domain_bindings
	list.

2000-08-27  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (DCIGETTEXT): Remove _nl_find_language in code to
	determine invalid locale name.

2000-08-20  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c: Unify use of function aliases to make more compact
	PLT.

	* loadmsgcat.c (_nl_unload_domain): Also free conv_tab element.
	Pretty printing.
	* plural.y (new_exp): Take number of optional parameters in second
	parameter.  Test for correct number of parameters and free correctly
	in case of failure.  Adjust all callers.
	(yylex): Fix handling of '\0'.  Allow ';' as terminator character.

2000-07-14  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (dcigettext): Call plural_eval on all platforms, not
	only those having tsearch.

2000-06-30  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (_nl_find_msg): Correct reallocation of buffers in
	case the translation is too large.  Remember allocated memory blocks
	in a list.
	(free_mem): Free memory for translations.

2000-06-16  Ulrich Drepper  <drepper@redhat.com>

	* loadmsgcat.c (_nl_load_domain): Call norm_add_slashes with new
	parameter to always enable transliteration.

1998-10-20  Paul Eggert  <eggert@twinsun.com>

	* po2tbl.sin: Escape trigraphs.

2000-10-12  Bruno Haible  <haible@clisp.cons.org>

	* finddomain.c: Remove unneeded includes.

2000-10-12  Bruno Haible  <haible@clisp.cons.org>

	* localealias.c (memcpy): Return first argument, just like the real
	memcpy function does.
	* bindtextdom.c (memcpy): Likewise.
	* finddomain.c (memcpy): Likewise.
	* l10nflist.c (memcpy): Likewise.
	* textdomain.c (memcpy): Likewise.
	From Paul Eggert <eggert@twinsun.com>.

2000-09-29  Bruno Haible  <haible@clisp.cons.org>

	* libintl.glibc: Update from current glibc version.

2000-09-18  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c: Outside libc, use local variable names that don't
	clash with those in libc.
	* bindtextdom.c: Likewise.
	* textdomain.c: Likewise.

2000-07-31  Bruno Haible  <haible@clisp.cons.org>

	* plural.y: Include config.h. Needed to define 'inline' away for C
	compilers that don't support it.
	(yylex): Don't use gcc specific case range syntax.
	* loadmsgcat.y (INIT_GERMANIC_PLURAL): New macro, for old compilers.

2000-07-28  Bruno Haible  <haible@clisp.cons.org>

	Simplification: In all cases where $(gnulocaledir) is used, it is
	identical to $(localedir).
	* Makefile.in (DEFS): Remove setting for GNULOCALEDIR.
	* dcigettext.c (_nl_default_dirname): Initialize with LOCALEDIR.

2000-07-28  Bruno Haible  <haible@clisp.cons.org>

	* xopen-msg.sed: Renamed to ...
	* po2msg.sin: ... here.
	* linux-msg.sed: Remove file.
	* Makefile.in (DISTFILES.common): Update.

2000-07-28  Bruno Haible  <haible@clisp.cons.org>

	* po2tbl.sed.in: Renamed to ...
	* po2tbl.sin: ... here.
	* Makefile.in (DISTFILES.common): Update.

2000-07-28  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (uninstall): Synchronize with the install target.
	Really remove charset.alias when its reference count drops to 0.

2000-07-28  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (mkinstalldirs): New macro. Needed when configured with
	--srcdir=<relative pathname>; then ac_aux_dir will be a relative
	pathname rooted at the top builddir, and @MKINSTALLDIRS@ likewise.
	(install-exec, install-data): Use it.

2000-07-26  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (install-exec, install-data): Use $(SHELL) for calling
	$(MKINSTALLDIRS), don't rely on its execution permissions.

	* Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): New variables.
	(libintl.la): Use them.

	* Makefile.in (install-exec, install-data, uninstall): Provide DESTDIR
	support, as recommended by GNU standards. Fix misapplied 2000-06-16
	patch.

2000-06-16  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (COMSRCS): Add localcharset.c.
	(OBJECTS): Add localcharset.$lo.
	(DISTFILES.common): Add config.charset, ref-{add,del}.sin.
	(DEFS): Add -DLIBDIR.
	(all-yes): Add charset.alias, ref-{add,del}.sed.
	(.SUFFIXES): Add .sin and .sed.
	(.sin.sed, charset.alias): New rules.
	(install-exec, uninstall): Install/deinstall charset.alias.
	* localcharset.c: New file, from fileutils-4.0u.
	* config.charset: New file, from fileutils-4.0u.
	* red-add.sin, ref-del.sin: New files, from fileutils-4.0u.

	* intlh.inst.in (bind_textdomain_codeset): New declaration.
	* libgettext.h (bind_textdomain_codeset, bind_textdomain_codeset__):
	New declarations.
	(bind_textdomain_codeset) [!ENABLE_NLS]: New macro.
	* cat-compat.c (bind_textdomain_codeset): New function.
	* intl-compat.c (bind_textdomain_codeset): New function.

	* libgettext.h (ngettext, dngettext, dcngettext): New
	declarations.
	(dcgettext): Remove macro definition.
	(textdomain, bindtextdomain) [!ENABLE_NLS]: Parenthesize argument.
	* intlh.inst.in (ngettext, dngettext, dcngettext): New
	declarations.
	(dcgettext): Remove macro definition.

	* *.h, *.c, *.y: Change copyright notice from LGPL to GPL.

2000-05-21  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c: Fix typo in comment.

2000-05-08  Andreas Jaeger  <aj@suse.de>

	* bindtextdom.c (set_binding_values): Add prototype.

2000-05-05  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (alignof): New macro.
	(_nl_find_msg): Use it instead of __alignof__. Pass correct output
	buffer length to __gconv/iconv. If malloc (freemem_size) fails, set
	freemem_size to 0.

2000-05-05  Bruno Haible  <haible@clisp.cons.org>

	* dcigettext.c (dcigettext): Fix interpretation of tsearch
	return value.

2000-05-06  Ulrich Drepper  <drepper@redhat.com>

	* dcigettext.c (DCIGETTEXT): Always define local variable `index'.
	(mempcpy): Correct typo in parameter list.

	* hash-string.h: Don't include <values.h>.

	* *.c, *.h, *.y: Update from glibc version.

1998-04-29  Paul Eggert  <eggert@twinsun.com>

	* Makefile.in (aliaspath): Don't put `.' at the end.

1998-06-01  Ulrich Drepper  <drepper@cygnus.com>

	* localealias.c (read_alias_file): Undo last change.
	* l10nflist.c (_nl_normalize_codeset): Likewise.
	* loadinfo.h: Likewise.

1998-05-23  Ulrich Drepper  <drepper@cygnus.com>

	* dcgettext.c: Don't use any alloca hack when C_ALLOCA is defined.

1998-05-01 08:47  Ulrich Drepper  <drepper@cygnus.com>

	* gettext-0.10.35 released.

1998-04-29  Ulrich Drepper  <drepper@cygnus.com>

	* intl/localealias.c (read_alias_file): Use unsigned char for
	local variables.  Remove unused variable tp.
	* intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char *
	for type of codeset.  For losing Solaris systems.
	* intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset.
	* intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable
	len if not needed.
	Patches by Jim Meyering.

1998-04-28  Ulrich Drepper  <drepper@cygnus.com>

	* loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if
	mmap is not supported.

	* hash-string.h: Don't include <values.h>.

1998-04-27  Ulrich Drepper  <drepper@cygnus.com>

	* textdomain.c: Use strdup is available.

	* localealias.c: Define HAVE_MEMPCPY so that we can use this
	function.  Define and use semapahores to protect modfication of
	global objects when compiling for glibc.  Add code to allow
	freeing alias table.

	* l10nflist.c: Don't assume stpcpy not being a macro.

	* gettextP.h: Define internal_function macri if not already done.
	Use glibc byte-swap macros instead of defining SWAP when compiled
	for glibc.
	(struct loaded_domain): Add elements to allow unloading.

	* Makefile.in (distclean): Don't remove libintl.h here.

	* bindtextdomain.c: Carry over changes from glibc.  Use strdup if
	available.

	* dcgettext.c: Don't assume stpcpy not being a macro.  Mark internal
	functions.  Add memory freeing code for glibc.

	* dgettext.c: Update copyright.

	* explodename.c: Include stdlib.h and string.h only if they exist.
	Use strings.h eventually.

	* finddomain.c: Mark internal functions.  Use strdup if available.
	Add memory freeing code for glibc.

1997-10-10 20:00  Ulrich Drepper  <drepper@cygnus.com>

	* libgettext.h: Fix dummy textdomain and bindtextdomain macros.
	They should return reasonable values.
	Reported by Tom Tromey <tromey@cygnus.com>.

1997-09-16 03:33  Ulrich Drepper  <drepper@cygnus.com>

	* libgettext.h: Define PARAMS also to `args' if __cplusplus is defined.
	* intlh.inst.in: Likewise.
	Reported by Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>.

	* libintl.glibc: Update from current glibc version.

1997-09-06 02:10  Ulrich Drepper  <drepper@cygnus.com>

	* intlh.inst.in: Reformat copyright.

1997-08-19 15:22  Ulrich Drepper  <drepper@cygnus.com>

	* dcgettext.c (DCGETTEXT): Remove wrong comment.

1997-08-16 00:13  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.in (install-data): Don't change directory to install.

1997-08-01 14:30  Ulrich Drepper  <drepper@cygnus.com>

	* cat-compat.c: Fix copyright.

	* localealias.c: Don't define strchr unless !HAVE_STRCHR.

	* loadmsgcat.c: Update copyright.  Fix typos.

	* l10nflist.c: Don't define strchr unless !HAVE_STRCHR.
	(_nl_make_l10nflist): Handle sponsor and revision correctly.

	* gettext.c: Update copyright.
	* gettext.h: Likewise.
	* hash-string.h: Likewise.

	* finddomain.c: Remoave dead code.  Define strchr only if
	!HAVE_STRCHR.

	* explodename.c: Include <sys/types.h>.

	* explodename.c: Reformat copyright text.
	(_nl_explode_name): Fix typo.

	* dcgettext.c: Define and use __set_errno.
	(guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is
	not defined.

	* bindtextdom.c: Pretty printing.

1997-05-01 02:25  Ulrich Drepper  <drepper@cygnus.com>

	* dcgettext.c (guess_category_value): Don't depend on
	HAVE_LC_MESSAGES.  We don't need the macro here.
	Patch by Bruno Haible <haible@ilog.fr>.

	* cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL
	macro.  Instead use HAVE_LOCALE_NULL and define it when using
	glibc, as in dcgettext.c.
	Patch by Bruno Haible <haible@ilog.fr>.

	* Makefile.in (CPPFLAGS): New variable.  Reported by François
	Pinard.

Mon Mar 10 06:51:17 1997  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.in: Implement handling of libtool.

	* gettextP.h: Change data structures for use of generic lowlevel
	i18n file handling.

Wed Dec  4 20:21:18 1996  Ulrich Drepper  <drepper@cygnus.com>

	* textdomain.c: Put parentheses around arguments of memcpy macro
	definition.
	* localealias.c: Likewise.
	* l10nflist.c: Likewise.
	* finddomain.c: Likewise.
	* bindtextdom.c: Likewise.
	Reported by Thomas Esken.

Mon Nov 25 22:57:51 1996  Ulrich Drepper  <drepper@cygnus.com>

	* textdomain.c: Move definition of `memcpy` macro to right
	position.

Fri Nov 22 04:01:58 1996  Ulrich Drepper  <drepper@cygnus.com>

	* finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using
 	bcopy if not already defined.  Reported by Thomas Esken.
	* bindtextdom.c: Likewise.
	* l10nflist.c: Likewise.
	* localealias.c: Likewise.
	* textdomain.c: Likewise.

Tue Oct 29 11:10:27 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.in (libdir): Change to use exec_prefix instead of
 	prefix.  Reported by Knut-HåvardAksnes <etokna@eto.ericsson.se>.

Sat Aug 31 03:07:09 1996  Ulrich Drepper  <drepper@cygnus.com>

	* l10nflist.c (_nl_normalize_codeset): We convert to lower case,
	so don't prepend uppercase `ISO' for only numeric arg.

Fri Jul 19 00:15:46 1996  Ulrich Drepper  <drepper@cygnus.com>

	* l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after
	definition of _GNU_SOURCE.  Patch by Roland McGrath.

	* Makefile.in (uninstall): Fix another bug with `for' loop and
	empty arguments.  Patch by Jim Meyering.  Correct name os
	uninstalled files: no intl- prefix anymore.

	* Makefile.in (install-data): Again work around shells which
	cannot handle mpty for list.  Reported by Jim Meyering.

Sat Jul 13 18:11:35 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.in (install): Split goal.  Now depend on install-exec
        and install-data.
	(install-exec, install-data): New goals.  Created from former
	install goal.
	Reported by Karl Berry.

Sat Jun 22 04:58:14 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.in (MKINSTALLDIRS): New variable.  Path to
        mkinstalldirs script.
	(install): use MKINSTALLDIRS variable or if the script is not present
	try to find it in the $top_scrdir).

Wed Jun 19 02:56:56 1996  Ulrich Drepper  <drepper@cygnus.com>

	* l10nflist.c: Linux libc *partly* includes the argz_* functions.
	Grr.  Work around by renaming the static version and use macros
	for renaming.

Tue Jun 18 20:11:17 1996  Ulrich Drepper  <drepper@cygnus.com>

	* l10nflist.c: Correct presence test macros of __argz_* functions.

	* l10nflist.c: Include <argz.h> based on test of it instead when
	__argz_* functions are available.
	Reported by Andreas Schwab.

Thu Jun 13 15:17:44 1996  Ulrich Drepper  <drepper@cygnus.com>

	* explodename.c, l10nflist.c: Define NULL for dumb systems.

Tue Jun 11 17:05:13 1996  Ulrich Drepper  <drepper@cygnus.com>

	* intlh.inst.in, libgettext.h (dcgettext): Rename local variable
	result to __result to prevent name clash.

	* l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to
        get prototype for stpcpy and strcasecmp.

	* intlh.inst.in, libgettext.h: Move declaration of
	`_nl_msg_cat_cntr' outside __extension__ block to prevent warning
	from gcc's -Wnested-extern option.

Fri Jun  7 01:58:00 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.in (install): Remove comment.

Thu Jun  6 17:28:17 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.in (install): Work around for another Buglix stupidity.
	Always use an `else' close for `if's.  Reported by Nelson Beebe.

	* Makefile.in (intlh.inst): Correct typo in phony rule.
	Reported by Nelson Beebe.

Thu Jun  6 01:49:52 1996  Ulrich Drepper  <drepper@cygnus.com>

	* dcgettext.c (read_alias_file): Rename variable alloca_list to
	block_list as the macro calls assume.
	Patch by Eric Backus.

	* localealias.c [!HAVE_ALLOCA]: Define alloca as macro using
        malloc.
	(read_alias_file): Rename varriabe alloca_list to block_list as the
	macro calls assume.
	Patch by Eric Backus.

	* l10nflist.c: Correct conditional for <argz.h> inclusion.
	Reported by Roland McGrath.

	* Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not
        all-@USE_NLS@.

	* Makefile.in (install): intlh.inst comes from local dir, not
        $(srcdir).

	* Makefile.in (intlh.inst): Special handling of this goal.  If
	used in gettext, this is really a rul to construct this file.  If
	used in any other package it is defined as a .PHONY rule with
	empty body.

	* finddomain.c: Extract locale file information handling into
	l10nfile.c.  Rename local stpcpy__ function to stpcpy.

	* dcgettext.c (stpcpy): Add local definition.

	* l10nflist.c: Solve some portability problems.  Patches partly by
	Thomas Esken.  Add local definition of stpcpy.

Tue Jun  4 02:47:49 1996  Ulrich Drepper  <drepper@cygnus.com>

	* intlh.inst.in: Don't depend including <locale.h> on
	HAVE_LOCALE_H.  Instead configure must rewrite this fiile
	depending on the result of the configure run.

	* Makefile.in (install): libintl.inst is now called intlh.inst.
	Add rules for updating intlh.inst from intlh.inst.in.

	* libintl.inst: Renamed to intlh.inst.in.

	* localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1
        because gcc has __buitlin_alloca.
	Reported by Roland McGrath.

Mon Jun  3 00:32:16 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.in (installcheck): New goal to fulfill needs of
        automake's distcheck.

	* Makefile.in (install): Reorder commands so that VERSION is
        found.

	* Makefile.in (gettextsrcdir): Now use subdirectory intl/ in
        @datadir@/gettext.
	(COMSRCS): Add l10nfile.c.
	(OBJECTS): Add l10nfile.o.
	(DISTFILES): Rename to DISTFILE.normal.  Remove $(DISTFILES.common).
	(DISTFILE.gettext): Remove $(DISTFILES.common).
	(all-gettext): Remove goal.
	(install): If $(PACKAGE) = gettext install, otherwose do nothing.  No
	package but gettext itself should install libintl.h + headers.
	(dist): Extend goal to work for gettext, too.
	(dist-gettext): Remove goal.

	* dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc.

Sun Jun  2 17:33:06 1996  Ulrich Drepper  <drepper@cygnus.com>

	* loadmsgcat.c (_nl_load_domain): Parameter is now comes from
        find_l10nfile.

Sat Jun  1 02:23:03 1996  Ulrich Drepper  <drepper@cygnus.com>

	* l10nflist.c (__argz_next): Add definition.

	* dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca
	code.  Use new l10nfile handling.

	* localealias.c [!HAVE_ALLOCA]: Add code for handling missing
        alloca code.

	* l10nflist.c: Initial revision.

Tue Apr  2 18:51:18 1996  Ulrich Drepper  <drepper@myware>

	* Makefile.in (all-gettext): New goal.  Same as all-yes.

Thu Mar 28 23:01:22 1996  Karl Eichwalder  <ke@ke.central.de>

	* Makefile.in (gettextsrcdir): Define using @datadir@.

Tue Mar 26 12:39:14 1996  Ulrich Drepper  <drepper@myware>

	* finddomain.c: Include <ctype.h>.  Reported by Roland McGrath.

Sat Mar 23 02:00:35 1996  Ulrich Drepper  <drepper@myware>

	* finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing
        with external declaration.

Sat Mar  2 00:47:09 1996  Ulrich Drepper  <drepper@myware>

	* Makefile.in (all-no): Rename from all_no.

Sat Feb 17 00:25:59 1996  Ulrich Drepper  <drepper@myware>

	* gettextP.h [loaded_domain]: Array `successor' must now contain up
        to 63 elements (because of codeset name normalization).

	* finddomain.c: Implement codeset name normalization.

Thu Feb 15 04:39:09 1996  Ulrich Drepper  <drepper@myware>

	* Makefile.in (all): Define to `all-@USE_NLS@'.
	(all-yes, all_no): New goals.  `all-no' is noop, `all-yes'
	is former all.

Mon Jan 15 21:46:01 1996  Howard Gayle  <howard@hal.com>

	* localealias.c (alias_compare): Increment string pointers in loop
        of strcasecmp replacement.

Fri Dec 29 21:16:34 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (install-src): Who commented this goal out ? :-)

Fri Dec 29 15:08:16 1995  Ulrich Drepper  <drepper@myware>

	* dcgettext.c (DCGETTEXT): Save `errno'.  Failing system calls
	should not effect it because a missing catalog is no error.
	Reported by Harald K<o:>nig <koenig@tat.physik.uni-tuebingen.de>.

Tue Dec 19 22:09:13 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (Makefile): Explicitly use $(SHELL) for running
        shell scripts.

Fri Dec 15 17:34:59 1995  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile.in (install-src): Only install library and header when
	we use the own implementation.  Don't do it when using the
	system's gettext or catgets functions.

	* dcgettext.c (find_msg): Must not swap domain->hash_size here.

Sat Dec  9 16:24:37 1995  Ulrich Drepper  <drepper@myware>

	* localealias.c, libintl.inst, libgettext.h, hash-string.h,
	gettextP.h, finddomain.c, dcgettext.c, cat-compat.c:
	Use PARAMS instead of __P.  Suggested by Roland McGrath.

Tue Dec  5 11:39:14 1995  Larry Schwimmer  <rosebud@cyclone.stanford.edu>

	* libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if
	!_LIBINTL_H' because Solaris defines _LIBINTL_H as empty.

Mon Dec  4 15:42:07 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (install-src):
	Install libintl.inst instead of libintl.h.install.

Sat Dec  2 22:51:38 1995  Marcus Daniels  <marcus@sysc.pdx.edu>

	* cat-compat.c (textdomain):
	Reverse order in which files are tried you load.  First
	try local file, when this failed absolute path.

Wed Nov 29 02:03:53 1995  Nelson H. F. Beebe  <beebe@math.utah.edu>

	* cat-compat.c (bindtextdomain): Add missing { }.

Sun Nov 26 18:21:41 1995  Ulrich Drepper  <drepper@myware>

	* libintl.inst: Add missing __P definition.  Reported by Nelson Beebe.

	* Makefile.in:
	Add dummy `all' and `dvi' goals.  Reported by Tom Tromey.

Sat Nov 25 16:12:01 1995  François Pinard  <pinard@iro.umontreal.ca>

	* hash-string.h: Capitalize arguments of macros.

Sat Nov 25 12:01:36 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (DISTFILES): Prevent files names longer than 13
	characters.  libintl.h.glibc->libintl.glibc,
	libintl.h.install->libintl.inst.  Reported by Joshua R. Poulson.

Sat Nov 25 11:31:12 1995  Eric Backus  <ericb@lsid.hp.com>

	* dcgettext.c: Fix bug in preprocessor conditionals.

Sat Nov 25 02:35:27 1995  Nelson H. F. Beebe  <beebe@math.utah.edu>

	* libgettext.h: Solaris cc does not understand
	 #if !SYMBOL1 && !SYMBOL2.  Sad	but true.

Thu Nov 23 16:22:14 1995  Ulrich Drepper  <drepper@myware>

	* hash-string.h (hash_string):
	Fix for machine with >32 bit `unsigned long's.

	* dcgettext.c (DCGETTEXT):
	Fix horrible bug in loop for alternative translation.

Thu Nov 23 01:45:29 1995  Ulrich Drepper  <drepper@myware>

	* po2tbl.sed.in, linux-msg.sed, xopen-msg.sed:
	Some further simplifications in message number generation.

Mon Nov 20 21:08:43 1995  Ulrich Drepper  <drepper@myware>

	* libintl.h.glibc: Use __const instead of const in prototypes.

	* Makefile.in (install-src):
	Install libintl.h.install instead of libintl.h.  This
	is a stripped-down version.  Suggested by Peter Miller.

	* libintl.h.install, libintl.h.glibc: Initial revision.

	* localealias.c (_nl_expand_alias, read_alias_file):
	Protect prototypes in type casts by __P.

Tue Nov 14 16:43:58 1995  Ulrich Drepper  <drepper@myware>

	* hash-string.h: Correct prototype for hash_string.

Sun Nov 12 12:42:30 1995  Ulrich Drepper  <drepper@myware>

	* hash-string.h (hash_string): Add prototype.

	* gettextP.h: Fix copyright.
	(SWAP): Add prototype.

Wed Nov  8 22:56:33 1995  Ulrich Drepper  <drepper@myware>

	* localealias.c (read_alias_file): Forgot sizeof.
	Avoid calling *printf function.  This introduces a big overhead.
	Patch by Roland McGrath.

Tue Nov  7 14:21:08 1995  Ulrich Drepper  <drepper@myware>

	* finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy.

	* finddomain.c (stpcpy):
	Define substitution function local.  The macro was to flaky.

	* cat-compat.c: Fix typo.

	* xopen-msg.sed, linux-msg.sed:
	While bringing message number to right place only accept digits.

	* linux-msg.sed, xopen-msg.sed: Now that the counter does not have
	leading 0s we don't need to remove them.  Reported by Marcus
	Daniels.

	* Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in
	dependency.  Reported by Marcus Daniels.

	* cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement.
	Generally cleanup using #if instead of #ifndef.

	* Makefile.in: Correct typos in comment.  By François Pinard.

Mon Nov  6 00:27:02 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (install-src): Don't install libintl.h and libintl.a
	if we use an available gettext implementation.

Sun Nov  5 22:02:08 1995  Ulrich Drepper  <drepper@myware>

	* libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS.  Reported
	by François Pinard.

	* libgettext.h: Use #if instead of #ifdef/#ifndef.

	* finddomain.c:
	Comments describing what has to be done should start with FIXME.

Sun Nov  5 19:38:01 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (DISTFILES): Split.  Use DISTFILES with normal meaning.
	DISTFILES.common names the files common to both dist goals.
	DISTFILES.gettext are the files only distributed in GNU gettext.

Sun Nov  5 17:32:54 1995  Ulrich Drepper  <drepper@myware>

	* dcgettext.c (DCGETTEXT): Correct searching in derived locales.
	This was necessary since a change in _nl_find_msg several weeks
	ago.  I really don't know this is still not fixed.

Sun Nov  5 12:43:12 1995  Ulrich Drepper  <drepper@myware>

	* loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL.  This
	might mark a special condition.

	* finddomain.c (make_entry_rec): Don't make illegal entry as decided.

	* Makefile.in (dist): Suppress error message when ln failed.
	Get files from $(srcdir) explicitly.

	* libgettext.h (gettext_const): Rename to gettext_noop.

Fri Nov  3 07:36:50 1995  Ulrich Drepper  <drepper@myware>

	* finddomain.c (make_entry_rec):
	Protect against wrong locale names by testing mask.

	* libgettext.h (gettext_const): Add macro definition.
	Capitalize macro arguments.

Thu Nov  2 23:15:51 1995  Ulrich Drepper  <drepper@myware>

	* finddomain.c (_nl_find_domain):
	Test for pointer != NULL before accessing value.
	Reported by Tom Tromey.

	* gettext.c (NULL):
	Define as (void*)0 instad of 0.  Reported by François Pinard.

Mon Oct 30 21:28:52 1995  Ulrich Drepper  <drepper@myware>

	* po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.

Sat Oct 28 23:20:47 1995  Ulrich Drepper  <drepper@myware>

	* libgettext.h: Disable dcgettext optimization for Solaris 2.3.

	* localealias.c (alias_compare):
	Peter Miller reported that tolower in some systems is
	even dumber than I thought.  Protect call by `isupper'.

Fri Oct 27 22:22:51 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (libdir, includedir): New variables.
	(install-src): Install libintl.a and libintl.h in correct dirs.

Fri Oct 27 22:07:29 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c.

	* po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques.

	* localealias.c:
	Fix typo and superflous test.  Reported by Christian von Roques.

Fri Oct  6 11:52:05 1995  Ulrich Drepper  <drepper@myware>

	* finddomain.c (_nl_find_domain):
	Correct some remainder from the pre-CEN syntax.  Now
	we don't have a constant number of successors anymore.

Wed Sep 27 21:41:13 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (DISTFILES): Add libintl.h.glibc.

	* Makefile.in (dist-libc): Add goal for packing sources for glibc.
	(COMSRCS, COMHDRS): Splitted to separate sources shared with glibc.

	* loadmsgcat.c: Forget to continue #if line.

	* localealias.c:
	[_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name
	space clean.

	* dcgettext.c, finddomain.c: Better comment to last change.

	* loadmsgcat.c:
	[_LIBC]: Rename fstat, open, close, read, mmap, and munmap to
	__fstat, __open, __close, __read, __mmap, and __munmap resp
	to keep ANSI C name space clean.

	* finddomain.c:
	[_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean.

	* dcgettext.c:
	[_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to
	keep ANSI C name space clean.

	* libgettext.h:
	Include sys/types.h for those old SysV systems out there.
	Reported by Francesco Potorti`.

	* loadmsgcat.c (use_mmap): Define if compiled for glibc.

	* bindtextdom.c: Include all those standard headers
	unconditionally if _LIBC is defined.

	* finddomain.c: Fix 2 times defiend -> defined.

	* textdomain.c: Include libintl.h instead of libgettext.h when
	compiling for glibc.  Include all those standard headers
	unconditionally if _LIBC is defined.

	* localealias.c, loadmsgcat.c: Prepare to be compiled in glibc.

	* gettext.c:
	Include libintl.h instead of libgettext.h when compiling for glibc.
	Get NULL from stddef.h if we compile for glibc.

	* finddomain.c: Include libintl.h instead of libgettext.h when
	compiling for glibc.  Include all those standard headers
	unconditionally if _LIBC is defined.

	* dcgettext.c: Include all those standard headers unconditionally
	if _LIBC is defined.

	* dgettext.c: If compiled in glibc include libintl.h instead of
	libgettext.h.
	(locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc.

	* dcgettext.c: If compiled in glibc include libintl.h instead of
	libgettext.h.
	(getcwd): Don't rely on HAVE_GETCWD when compiling for glibc.

	* bindtextdom.c:
	If compiled in glibc include libintl.h instead of libgettext.h.

Mon Sep 25 22:23:06 1995  Ulrich Drepper  <drepper@myware>

	* localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0.
	Reported by Marcus Daniels.

	* cat-compat.c (bindtextdomain):
	String used in putenv must not be recycled.
	Reported by Marcus Daniels.

	* libgettext.h (__USE_GNU_GETTEXT):
	Additional symbol to signal that we use GNU gettext
	library.

	* cat-compat.c (bindtextdomain):
	Fix bug with the strange stpcpy replacement.
	Reported by Nelson Beebe.

Sat Sep 23 08:23:51 1995  Ulrich Drepper  <drepper@myware>

	* cat-compat.c: Include <string.h> for stpcpy prototype.

	* localealias.c (read_alias_file):
	While expand strdup code temporary variable `cp' hided
	higher level variable with same name.  Rename to `tp'.

	* textdomain.c (textdomain):
	Avoid warning by using temporary variable in strdup code.

	* finddomain.c (_nl_find_domain): Remove unused variable `application'.

Thu Sep 21 15:51:44 1995  Ulrich Drepper  <drepper@myware>

	* localealias.c (alias_compare):
	Use strcasecmp() only if available.  Else use
	implementation in place.

	* intl-compat.c:
	Wrapper functions now call *__ functions instead of __*.

	* libgettext.h: Declare prototypes for *__ functions instead for __*.

	* cat-compat.c, loadmsgcat.c:
	Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
	of the standard libc and so prevent libintl.a from being used
	standalone.

	* bindtextdom.c:
	Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
	of the standard libc and so prevent libintl.a from being used
	standalone.
	Rename to bindtextdomain__ if not used in GNU C Library.

	* dgettext.c:
	Rename function to dgettext__ if not used in GNU C Library.

	* gettext.c:
	Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
	of the standard libc and so prevent libintl.a from being used
	standalone.
	Functions now called gettext__ if not used in GNU C Library.

	* dcgettext.c, localealias.c, textdomain.c, finddomain.c:
	Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
	of the standard libc and so prevent libintl.a from being used
	standalone.

Sun Sep 17 23:14:49 1995  Ulrich Drepper  <drepper@myware>

	* finddomain.c: Correct some bugs in handling of CEN standard
 	locale definitions.

Thu Sep  7 01:49:28 1995  Ulrich Drepper  <drepper@myware>

	* finddomain.c: Implement CEN syntax.

	* gettextP.h (loaded_domain): Extend number of successors to 31.

Sat Aug 19 19:25:29 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (aliaspath): Remove path to X11 locale dir.

	* Makefile.in: Make install-src depend on install.  This helps
 	gettext to install the sources and other packages can use the
 	install goal.

Sat Aug 19 15:19:33 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (uninstall): Remove stuff installed by install-src.

Tue Aug 15 13:13:53 1995  Ulrich Drepper  <drepper@myware>

	* VERSION.in: Initial revision.

	* Makefile.in (DISTFILES):
	Add VERSION file.  This is not necessary for gettext, but
	for other packages using this library.

Tue Aug 15 06:16:44 1995  Ulrich Drepper  <drepper@myware>

	* gettextP.h (_nl_find_domain):
	New prototype after changing search strategy.

	* finddomain.c (_nl_find_domain):
	We now try only to find a specified catalog.  Fall back to other
	catalogs listed in the locale list is now done in __dcgettext.

	* dcgettext.c (__dcgettext):
	Now we provide message fall back even to different languages.
	I.e. if a message is not available in one language all the other
 	in the locale list a tried.  Formerly fall back was only possible
 	within one language.  Implemented by moving one loop from
 	_nl_find_domain to here.

Mon Aug 14 23:45:50 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (gettextsrcdir):
	Directory where source of GNU gettext library are made
	available.
	(INSTALL, INSTALL_DATA): Programs used for installing sources.
	(gettext-src): New.  Rule to install GNU gettext sources for use in
	gettextize shell script.

Sun Aug 13 14:40:48 1995  Ulrich Drepper  <drepper@myware>

	* loadmsgcat.c (_nl_load_domain):
	Use mmap for loading only when munmap function is
	also available.

	* Makefile.in (install): Depend on `all' goal.

Wed Aug  9 11:04:33 1995  Ulrich Drepper  <drepper@myware>

	* localealias.c (read_alias_file):
	Do not overwrite '\n' when terminating alias value string.

	* localealias.c (read_alias_file):
	Handle long lines.  Ignore the rest not fitting in
	the buffer after the initial `fgets' call.

Wed Aug  9 00:54:29 1995  Ulrich Drepper  <drepper@myware>

	* gettextP.h (_nl_load_domain):
	Add prototype, replacing prototype for _nl_load_msg_cat.

	* finddomain.c (_nl_find_domain):
	Remove unneeded variable filename and filename_len.
	(expand_alias): Remove prototype because functions does not
 	exist anymore.

	* localealias.c (read_alias_file):
	Change type of fname_len parameter to int.
	(xmalloc): Add prototype.

	* loadmsgcat.c: Better prototypes for xmalloc.

Tue Aug  8 22:30:39 1995  Ulrich Drepper  <drepper@myware>

	* finddomain.c (_nl_find_domain):
	Allow alias name to be constructed from the four components.

	* Makefile.in (aliaspath): New variable.  Set to preliminary value.
	(SOURCES): Add localealias.c.
	(OBJECTS): Add localealias.o.

	* gettextP.h: Add prototype for _nl_expand_alias.

	* finddomain.c: Aliasing handled in intl/localealias.c.

	* localealias.c: Aliasing for locale names.

	* bindtextdom.c: Better prototypes for xmalloc and xstrdup.

Mon Aug  7 23:47:42 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (DISTFILES): gettext.perl is now found in misc/.

	* cat-compat.c (bindtextdomain):
	Correct implementation.  dirname parameter was not used.
	Reported by Marcus Daniels.

	* gettextP.h (loaded_domain):
	New fields `successor' and `decided' for oo, lazy
	message handling implementation.

	* dcgettext.c:
	Adopt for oo, lazy message handliing.
  	Now we can inherit translations from less specific locales.
	(find_msg): New function.

	* loadmsgcat.c, finddomain.c:
	Complete rewrite.  Implement oo, lazy message handling :-).
  	We now have an additional environment variable `LANGUAGE' with
 	a higher priority than LC_ALL for the LC_MESSAGE locale.
  	Here we can set a colon separated list of specifications each
 	of the form `language[_territory[.codeset]][@modifier]'.

Sat Aug  5 09:55:42 1995  Ulrich Drepper  <drepper@myware>

	* finddomain.c (unistd.h):
	Include to get _PC_PATH_MAX defined on system having it.

Fri Aug  4 22:42:00 1995  Ulrich Drepper  <drepper@myware>

	* finddomain.c (stpcpy): Include prototype.

	* Makefile.in (dist): Remove `copying instead' message.

Wed Aug  2 18:52:03 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (ID, TAGS): Do not use $^.

Tue Aug  1 20:07:11 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (TAGS, ID): Use $^ as command argument.
	(TAGS): Give etags -o option t write to current directory,
 	not $(srcdir).
	(ID): Use $(srcdir) instead os $(top_srcdir)/src.
	(distclean): Remove ID.

Sun Jul 30 11:51:46 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (gnulocaledir):
	New variable, always using share/ for data directory.
	(DEFS): Add GNULOCALEDIR, used in finddomain.c.

	* finddomain.c (_nl_default_dirname):
	Set to GNULOCALEDIR, because it always has to point
	to the directory where GNU gettext Library writes it to.

	* intl-compat.c (textdomain, bindtextdomain):
	Undefine macros before function definition.

Sat Jul 22 01:10:02 1995  Ulrich Drepper  <drepper@myware>

	* libgettext.h (_LIBINTL_H):
	Protect definition in case where this file is included as
	libgettext.h on Solaris machines.  Add comment about this.

Wed Jul 19 02:36:42 1995  Ulrich Drepper  <drepper@myware>

	* intl-compat.c (textdomain): Correct typo.

Wed Jul 19 01:51:35 1995  Ulrich Drepper  <drepper@myware>

	* dcgettext.c (dcgettext): Function now called __dcgettext.

	* dgettext.c (dgettext): Now called __dgettext and calls
 	__dcgettext.

	* gettext.c (gettext):
	Function now called __gettext and calls __dgettext.

	* textdomain.c (textdomain): Function now called __textdomain.

	* bindtextdom.c (bindtextdomain): Function now called
 	__bindtextdomain.

	* intl-compat.c: Initial revision.

	* Makefile.in (SOURCES): Add intl-compat.c.
	(OBJECTS): We always compile the GNU gettext library functions.
  	OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o,
 	and intl-compat.o.
  	(GETTOBJS): Contains now only intl-compat.o.

	* libgettext.h:
	Re-include protection matches dualistic character of libgettext.h.
	For all functions in GNU gettext library define __ counter part.

	* finddomain.c (strchr): Define as index if not found in C library.
	(_nl_find_domain): For relative paths paste / in between.

Tue Jul 18 16:37:45 1995  Ulrich Drepper  <drepper@myware>

	* loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h.

	* xopen-msg.sed: Fix bug with `msgstr ""' lines.
	A little bit better comments.

Tue Jul 18 01:18:27 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in:
	po-mode.el, makelinks, combine-sh are now found in ../misc.

	* po-mode.el, makelinks, combine-sh, elisp-comp:
	Moved to ../misc/.

	* libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__.

Sun Jul 16 22:33:02 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (INSTALL, INSTALL_DATA): New variables.
	(install-data, uninstall): Install/uninstall .elc file.

	* po-mode.el (Installation comment):
	Add .pox as possible extension of .po files.

Sun Jul 16 13:23:27 1995  Ulrich Drepper  <drepper@myware>

	* elisp-comp: Complete new version by François: This does not
 	fail when not compiling in the source directory.

Sun Jul 16 00:12:17 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (../po/cat-id-tbl.o):
	Use $(MAKE) instead of make for recursive make.

	* Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh.
	(install-exec): Add missing dummy goal.
	(install-data, uninstall): @ in multi-line shell command at
 	beginning, not in front of echo.  Reported by Eric Backus.

Sat Jul 15 00:21:28 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (DISTFILES):
	Rename libgettext.perl to gettext.perl to fit in 14 chars
	file systems.

	* gettext.perl:
 	Rename to gettext.perl to fit in 14 chars file systems.

Thu Jul 13 23:17:20 1995  Ulrich Drepper  <drepper@myware>

	* cat-compat.c: If !STDC_HEADERS try to include malloc.h.

Thu Jul 13 20:55:02 1995  Ulrich Drepper  <drepper@myware>

	* po2tbl.sed.in: Pretty printing.

	* linux-msg.sed, xopen-msg.sed:
	Correct bugs with handling substitute flags in branches.

	* hash-string.h (hash_string):
	Old K&R compilers don't under stand `unsigned char'.

	* gettext.h (nls_uint32):
	Some old K&R compilers (eg HP) don't understand `unsigned int'.

	* cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes.

Thu Jul 13 01:34:33 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (ELCFILES): New variable.
	(DISTFILES): Add elisp-comp.
	Add implicit rule for .el -> .elc compilation.
	(install-data): install $ELCFILES
	(clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp.

	* elisp-comp: Initial revision

Wed Jul 12 16:14:52 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in:
	cat-id-tbl.c is now found in po/.  This enables us to use an identical
	intl/ directory in all packages.

	* dcgettext.c (dcgettext): hashing does not work for table size <= 2.

	* textdomain.c: fix typo (#if def -> #if defined)

Tue Jul 11 18:44:43 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (stamp-cat-id): use top_srcdir to address source files
	(DISTFILES,distclean): move tupdate.perl to src/

	* po-to-tbl.sed.in:
	add additional jump to clear change flag to recognize multiline strings

Tue Jul 11 01:32:50 1995  Ulrich Drepper  <drepper@myware>

	* textdomain.c: Protect inclusion of stdlib.h and string.h.

	* loadmsgcat.c: Protect inclusion of stdlib.h.

	* libgettext.h: Protect inclusion of locale.h.
	Allow use in C++ programs.
	Define NULL is not happened already.

	* Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of
	po-to-tbl.sed.
	(distclean): remove po-to-tbl.sed and tupdate.perl.

	* tupdate.perl.in: Substitute Perl path even in exec line.
	Don't include entries without translation from old .po file.

Tue Jul  4 00:41:51 1995  Ulrich Drepper  <drepper@myware>

	* tupdate.perl.in: use "Updated: " in msgid "".

	* cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR).
 	Define getenv if !__STDC__.

	* bindtextdom.c: Protect stdlib.h and string.h inclusion.
 	Define free if !__STDC__.

	* finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
 	Define free if !__STDC__.

	* cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.

Mon Jul  3 23:56:30 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR.
	Remove unneeded $(srcdir) from Makefile.in dependency.

	* makelinks: Add copyright and short description.

	* po-mode.el: Last version for 0.7.

	* tupdate.perl.in: Fix die message.

	* dcgettext.c: Protect include of string.h.

	* gettext.c: Protect include of stdlib.h and further tries to get NULL.

	* finddomain.c: Some corrections in includes.

	* Makefile.in (INCLUDES): Prune list correct path to Makefile.in.

	* po-to-tbl.sed: Adopt for new .po file format.

	* linux-msg.sed, xopen-msg.sed: Adopt for new .po file format.

Sun Jul  2 23:55:03 1995  Ulrich Drepper  <drepper@myware>

	* tupdate.perl.in: Complete rewrite for new .po file format.

Sun Jul  2 02:06:50 1995  Ulrich Drepper  <drepper@myware>

	* First official release.  This directory contains all the code
	needed to internationalize own packages.  It provides functions
	which allow to use the X/Open catgets function with an interface
	like the Uniforum gettext function.  For system which does not
	have neither of those a complete implementation is provided.
