2019-12-22  Bruno Haible  <bruno@clisp.org>

	Update from gnulib.
	2019-12-22  Bruno Haible  <bruno@clisp.org>
		localcharset: Update support for OpenBSD.
		* localcharset.c (alias_table): Map "US-ASCII" to "ASCII".
	2019-12-17  Bruno Haible  <bruno@clisp.org>
		localcharset: Fix multithread-safety bug on Windows and OS/2.
		* localcharset.c (locale_charset): Use a stack-allocated buffer
		to assemble the result.
	2019-12-17  Bruno Haible  <bruno@clisp.org>
		localcharset: Optimize code for native Windows.
		* localcharset.c (locale_charset): Don't bother calling
		setlocale (LC_ALL, NULL) since we're not interested in its
		result.
	2019-09-23  Paul Eggert  <eggert@cs.ucla.edu>
		Update URLs and associated text

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

	Update from gnulib.
	2019-08-11  Bruno Haible  <bruno@clisp.org>
		Based on patch by KO Myung-Hun <komh78@gmail.com> in
		<https://lists.gnu.org/archive/html/bug-gnu-libiconv/2019-08/msg00004.html>.
		* localcharset.c (alias_table) [OS2]: Add more aliases.

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

	Update from gnulib.
	2019-07-02  Bruno Haible  <bruno@clisp.org>
		* localcharset.c (locale_charset): Return "UTF-8" instead of
		"CPutf8".

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

	Accommodate a shell that is not in /bin/sh.
	* Makefile.in (SHELL): Use the value found by configure.

2018-09-22  Bruno Haible  <bruno@clisp.org>

	Update from gnulib. Move mapping tables into the code.
	* localcharset.c: Update from gnulib.
	2018-05-20  Bruno Haible  <bruno@clisp.org>
		* localcharset.c (alias_table): Comment out no-op mappings for
		platforms where these don't matter. This reduces the table
		size, which in turn reduces the lookup time.
	2018-05-19  Bruno Haible  <bruno@clisp.org>
		* localcharset.c (alias_table): Add mapping for locale
		encodings found in FreeBSD 11, NetBSD 7, Solaris 10,
		Openindiana, HP-UX 11.31, IRIX 6.5, Minix 3.3.
	2018-05-19  Bruno Haible  <bruno@clisp.org>
		* localcharset.c: Don't include <fcntl.h>, <unistd.h>,
		relocatable.h, configmake.h.
		(O_NOFOLLOW, ISSLASH, DIRECTORY_SEPARATOR, getc, volatile):
		Remove macros.
		(charset_aliases): Remove variable.
		(get_charset_aliases): Remove function.
		(struct table_entry): New type.
		(alias_table, locale_table): New constants.
		(locale_charset): Use the alias_table or locale_table to get
		the canonicalized encoding name.
	* config.charset: Remove file.
	* ref-add.sin: Remove file.
	* ref-del.sin: Remove file.
	* relocatable-stub.c: New file.
	* relocatable.c: Remove file.
	* relocatable.h: Remove file.
	* Makefile.in (DEFS): Remove macros only needed for relocatable.[hc].
	(SOURCES): Remove relocatable.c. Add relocatable-stub.c.
	(OBJECTS): Remove relocatable.lo. Add relocatable-stub.lo.
	(relocatable.lo): Remove target.
	(relocatable-stub.lo): New target.
	(charset.alias, ref-add.sed, ref-del.sed): Remove targets.
	(install-lib, install): Don't install charset.alias.
	(uninstall): Don't uninstall charset.alias.
	(clean): Don't remove charset.alias, ref-add.sed, ref-del.sed.
	(SOURCE_FILES): Add relocatable-stub.c.
	(GNULIB_SYNCED_FILES): Remove config.charset, ref-add.sin, ref-del.sin,
	relocatable.h, relocatable.c.

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

	* localcharset.c: Update from gnulib.
	2018-05-03  Bruno Haible  <bruno@clisp.org>
		* localcharset.c: Simplify 'defined _WIN32 || defined __WIN32__'
		to just 'defined _WIN32'.
	2018-04-21  Benno Schulenberg  <bensberg@telfort.nl>  (tiny change)
		* localcharset.c (get_charset_aliases): Add a tautological
		UTF-8 entry to speed up the search for this case.
	2017-09-14  Bruno Haible  <bruno@clisp.org>
		all: Replace many more http URLs by https URLs.

	* relocatable.c: Update from gnulib.

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

	* localcharset.c: Update from gnulib.
	2017-05-16  Bruno Haible  <bruno@clisp.org>
		* localcharset.c (relocate2): Define fallback.
		(get_charset_aliases): Invoke relocate2 instead of relocate.
		Free the allocated memory.
	2017-04-21  Bruno Haible  <bruno@clisp.org>
		* localcharset.c (WINDOWS_NATIVE): Don't define on Cygwin.

	* relocatable.h: Update from gnulib.
	* relocatable.c: Update from gnulib.

2016-12-14  Bruno Haible  <bruno@clisp.org>

	Cleanup useless removals.
	* Makefile.in (distclean): No need to remove config.* and libtool.

2016-12-03  Bruno Haible  <bruno@clisp.org>

	Create tarballs through an Automake-like "make dist" command.
	* Makefile.in (SOURCE_FILES, GNULIB_SYNCED_FILES, IMPORTED_FILES,
	GENERATED_FILES, DISTRIBUTED_BUILT_FILES, DISTFILES): New macros.
	(distdir): New target.

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

	* config.charset: Update from gnulib.
	2015-01-07  KO Myung-Hun  <komh@chollian.net>
		* config.charset: Don't output aliases if "$os" is os2*.
	2012-06-22  Bruno Haible  <bruno@clisp.org>
		* connfig.charset: Write "Mac OS X" instead of "MacOS X".

	* localcharset.c: Update from gnulib.
	2016-12-02  Bruno Haible  <bruno@clisp.org>
		* localcharset.c (locale_charset) [WINDOWS_NATIVE]: Don't use
		the return value from setlocale if it would lead to a buffer
		overrun.
	2015-01-07  KO Myung-Hun  <komh@chollian.net>
		* localcharset.c (get_charset_aliases) [OS2]: Hardcode the
		result for OS/2.
		(locale_charset) [OS2]: Use system codepage if codeset is
		omitted from the locale name which is neither "C" nor "POSIX".
	2014-07-15  Eli Zaretskii  <eliz@gnu.org>
		* localcharset.c (locale_charset) [WINDOWS_NATIVE]: Before
		falling back on the default system codepage, try extracting
		the codepage from what 'setlocale' returns.  This allows to
		take into account changes of the codeset due to non-default
		locale set by a previous call to 'setlocale'.
	2013-07-20  Daiki Ueno  <ueno@gnu.org>
		* localcharset.c (locale_charset) [DARWIN7]: Use MB_CUR_MAX_L
		instead of MB_CUR_MAX.
	2012-09-16  Paul Eggert  <eggert@cs.ucla.edu>
		* 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
		<https://lists.gnu.org/archive/html/bug-gnulib/2012-09/msg00061.html>.
	2012-06-22  Bruno Haible  <bruno@clisp.org>
		* localcharset.c: Write "Mac OS X" instead of "MacOS X".

	* relocatable.c: Update from gnulib.

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

	Update support for building with MSVC.
	* Makefile.in (install-lib, install): Install the .la file with
	$(INSTALL), not $(INSTALL_DATA). Otherwise the native Windows DLL gets
	installed without execution permissions, and programs linked to it fail:
	in a Cygwin shell with exit code 127, or from a cmd.exe window with a
	dialog "The application was unable to start correctly (0xc0000022)."

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".
	* localcharset.c: Update comments to mention native Windows.
	(WINDOWS_NATIVE): Renamed from WIN32_NATIVE.
	* relocatable.c: Likewise.

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

	* relocatable.c: Update from gnulib.

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

	* relocatable.c: Update from gnulib.

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  Bruno Haible  <bruno@clisp.org>

	* relocatable.h: Update from gnulib.
	* relocatable.c: Likewise.

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>

	* config.charset: Untabify.
	* localcharset.c: Untabify.

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-03-26  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (install, installdir): Ensure that $(DESTDIR)$(libdir)
	exists, unconditionally.

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

	* relocatable.h: Update from gnulib.
	* relocatable.c: Likewise.

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, installdirs): Don't install charset.alias on
	MacOS X >= 10.3.

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

	Don't install charset.alias on mingw and Cygwin.
	* Makefile.in (install, 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 <https://savannah.gnu.org/bugs/?25235>.

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

	* config.charset: Treat Haiku like BeOS.

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

	* Makefile.in (install-strip): New target.
	Reported by Alon Bar-Lev <alon.barlev@gmail.com>.

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>.

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>.

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

	Update from GNU gettext.
	2006-09-14  Bruno Haible  <bruno@clisp.org>
		* lib/relocatable.c: Likewise.

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

	* localcharset.c: Do not check HAVE_SETLOCALE.

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

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

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

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

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.

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

	* Makefile.vms: Remove file.

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

	* Makefile.in (libcharset.la): Use the CFLAGS during linking.
	Needed because the CFLAGS can e.g. trigger profiling.
	Reported by Russell Aspinwall <russell.aspinwall@flomerics.co.uk>.

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

	* Makefile.in (clean): Remove also *.stackdump.

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

	* config.charset: Update for NetBSD 3.0.

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

	Cygwin portability.
	* 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-04-05  Bruno Haible  <bruno@clisp.org>

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

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-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.

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

	Tidy up exported symbols.
	* Makefile.in (CFLAGS): Add @CFLAG_VISIBILITY@.
	(DEFS): Also define BUILDING_LIBCHARSET and BUILDING_DLL.
	* relocatable.h (RELOCATABLE_DLL_EXPORTED) [HAVE_VISIBILITY]:
	Define to the gcc visibility attribute.

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-03-22  Bruno Haible  <bruno@clisp.org>

	* Makefile.in (mkinstalldirs): Update.

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

	* Makefile.msvc (CFLAGS): Define also INSTALLPREFIX.
	* Makefile.vms (DEFS): Likewise.
	Reported by Troels Walsted Hansen <Troels.W.Hansen@fast.no>.

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

	* config.charset: Add support for Darwin 7.

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

	* localcharset.c (ISSLASH): Treat Cygwin like Windows, since it now
	accepts Windows pathnames.

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-01-20  Bruno Haible  <bruno@clisp.org>

	Upgrade from gettext-0.14.

	2003-10-09  Bruno Haible  <bruno@clisp.org>
	* relocatable.c: Include xalloc.h instead of xmalloc.h.

	2003-08-24  Bruno Haible  <bruno@clisp.org>
	* relocatable.h: Make this file includable in C++ mode: add extern "C".

	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.
	Reported by Eric Botcazou <ebotcazou@libertysurf.fr>.

	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>.

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

	Upgrade from gettext-0.14.

	2004-01-21  Bruno Haible  <bruno@clisp.org>
	* config.charset: Add support for MacOS X (Darwin).

	2003-12-02  Bruno Haible  <bruno@clisp.org>
	* config.charset: Treat the new country name CS like the old country
	name YU.

	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-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.
	Reported by Eric Botcazou <ebotcazou@libertysurf.fr>.

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-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-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-07  Bruno Haible  <bruno@clisp.org>

	Support for relocatable data files even on VMS.
	* Makefile.vms (bindir): New variable.
	(DEFS): Add flags for relocatability.
	Reported by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.

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

	Support for relocatable data files even on Woe32.
	* Makefile.msvc (IIPREFIX, IIprefix, IIexec_prefix, IIbindir,
	IIlibdir): New variables.
	(PICFLAGS): Also define PIC. Define BUILDING_* flags here.
	(CFLAGS): ... not here. Add flags for relocatability.

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

	* Makefile.msvc (DEBUGFLAGS): New variable.
	(charset.lib): Use it.

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

	* Makefile.vms: New file.

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

	* lib/localcharset.c (get_charset_aliases): Add special case for VMS.

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

	Support for relocatable installation.
	* relocatable.h: New file, from GNU gettext.
	* relocatable.c: New file, from GNU gettext.
	* localcharset.c: Update from GNU gettext.
	2003-02-28  Bruno Haible  <bruno@clisp.org>
		* localcharset.c: Include relocatable.h.
		(get_charset_aliases): Relocate LIBDIR value.
		* localcharset.c: Drop C linkage declaration.
	* Makefile.in (DEFS): New variable.
	(SOURCES): Add relocatable.c.
	(OBJECTS): Add relocatable.lo.
	(localcharset.lo): Use $(DEFS).
	(relocatable.lo): New rule.
	* Makefile.msvc (CFLAGS): Remove $(PICFLAGS).
	(INCLUDES): Simplify.
	(SOURCES): Remove variable.
	(OBJECTS): Add relocatable.obj.
	(localcharset.obj): Add $(PICFLAGS).
	(relocatable.obj): New rule.

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

	* Makefile.msvc (PREFIX): New variable.
	(prefix): Use it.
	(clean): Drop Unix specific removal.

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

	Improved MSVC support.
	* Makefile.msvc (prefix): Use less Unixy value.
	(local_prefix): Remove variable.
	(libdir): Use backslashes.
	(bindir): New variable.
	(INSTALL, INSTALL_PROGRAM, INSTALL_DATA): Set to real values.
	(RESOURCES): Enable charset.res.
	(charset.lib): Set the target library name explicitly.
	(charset.res): New rule.
	(install, installdirs, uninstall): New rules.

	Rename libcharset.h to localcharset.h.
	* localcharset.c: Include localcharset.h.
	* localcharset.h: Remove file.
	* Makefile.in (INCLUDES): Add -I../include.
	* Makefile.msvc (INCLUDES): Add -I../include.

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-01-12  Bruno Haible  <bruno@clisp.org>

	* localcharset.h: New file.
	* localcharset.c: Include it.

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

	* Makefile.in (mkinstalldirs): Renamed from MKINSTALLDIRS.
	(install-lib, install, installdirs): Use it.

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.

2002-02-15  Bruno Haible  <bruno@clisp.org>

	* config.charset [msdosdjgpp]: For Russian, use CP866.

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

	* config.charset: Add support for NetBSD.

2002-01-10  Andrew Zabolotny  <zap@cobra.ru>
	    Bruno Haible  <bruno@clisp.org>

	* localcharset.c: Rework OS/2 support.
	* config.charset: Add OS/2 support.

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

	* localcharset.c (ISSLASH): Provide definition for DOS-like systems.

2001-12-15  Bruno Haible  <bruno@clisp.org>

	* localcharset.c: Add OS/2 support.

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 *'.

2001-06-27  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (clean): Remove also *.o.lock, left there by libtool
	on IRIX.

2001-06-25  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (localcharset.lo): Mention $(INCLUDES) before $(CFLAGS)
	and $(CPPFLAGS).
	* Makefile.msvc (localcharset.obj): Likewise.

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-05-06  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.msvc (charset.lib): Allow the 'del' command to fail.

2001-05-06  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (CPPFLAGS, LDFLAGS): New variables.
	(libcharset.la): Use LDFLAGS.
	(localcharset.lo): Use CPPFLAGS.

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-03-10  Bruno Haible  <haible@clisp.cons.org>

	* localcharset.c (locale_charset): Allow wildcard syntax. Also resolve
	alias if codeset is empty.
	* config.charset (BeOS): Use wildcard syntax.

	* Makefile.in (libcharset.la): Pass flag -no-undefined. Needed on
	platforms like BeOS.

	* Makefile.in (RM): New variable.

2001-01-05  Bruno Haible  <haible@clisp.cons.org>

	* localcharset.c (volatile): Define to empty if not using ANSI C.

2001-03-05  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: Update for OSF/1 5.1.

2001-03-01  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: For DOS/DJGPP, add CP775.

2001-02-24  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: Add support for DOS/DJGPP.

2001-02-25  Bruno Haible  <haible@clisp.cons.org>

	* localcharset.c (locale_charset): Don't return NULL.

2001-02-24  Bruno Haible  <haible@clisp.cons.org>

	* localcharset.c (locale_charset): Don't use setlocale(LC_CTYPE,NULL).

2001-01-30  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: Update for FreeBSD 4.2.

2000-12-19  Jim Meyering  <jim@meyering.net>

	* localcharset.c: Improve WIN32 macrology.
	(locale_charset): Increase size of buffer.

2000-12-18  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: Add support for BeOS.

2000-12-12  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (ref-add.sed, ref-del.sed): Don't use $<, not understood
	by Solaris "make". Reported by Toshimitsu Fujiwara.

2000-12-08  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.in (exec_prefix): Use configure's --exec-prefix argument.

2000-12-02  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.msvc: Replace STATIC with its opposite flag, DLL.

2000-11-21  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.msvc (MFLAGS): New variable.
	(CFLAGS, charset.lib): Use it.
	(INCLUDES): Use "..", not "..\include".

2000-10-31  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.msvc: New file.

2000-10-31  Bruno Haible  <haible@clisp.cons.org>

	* config.charset: Add ISO-8859-3, BIG5HKSCS, GB18030, JOHAB, VISCII,
	CP874, CP949, CP950, CP1250, CP1253, CP1254, CP1255, CP1256, CP1257
	to the list of canonical encodings. Rename EUC-CN to GB2312.
	* localcharset.c (locale_charset): Add support for Win32.
