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

	* linebreak.c (mbs_possible_linebreaks): Return immediately if n = 0.
	(mbs_width_linebreaks): Likewise.

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

	* mkdtemp.c: Use the simpler macro names HAVE_STDINT_H,
	HAVE_INTTYPES_H. (Including <stdint.h> or <inttypes.h> even when not
	necessary doesn't hurt.)

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

	* setenv.c (alloca): Fall back to malloc.
	(freea): New macro.
	(setenv): Use freea() to free memory allocated with alloca().

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

	* classpath.h: New file.
	* classpath.c: Turn into an independent source file.
	(new_classpath, set_classpath, reset_classpath): Make non-static.
	* javacomp.c: Include classpath.h instead of classpath.c.
	* javaexec.c: Likewise.
	* Makefile.am (libgettextlib_la_SOURCES): Add classpath.h, classpath.c.
	(EXTRA_DIST): Remove classpath.c.

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

	* localcharset.h: New file.
	* localcharset.c: Include it.
	* Makefile.am (libgettextlib_la_SOURCES): Add localcharset.h.

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

	* alloca_.h: New file, from gnulib.
	* liballoca.h: Remove file.
	* Makefile.am: Add snippet from gnulib module alloca.
	(LIBADD_SOURCE): Remove liballoca.h.
	* javacomp.c: Include alloca.h instead of liballoca.h.
	* javaexec.c: Likewise.
	* setenv.c: Likewise.

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

	* Makefile.am: Make use of += for variables.
	(install-exec-local): Avoid creating $(libdir) if it would be empty.

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

	* linebreak.c (iconv_string_keeping_offsets): Add an assertion, to
	protect against Solaris 2.9 iconv() bug.

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

	* linebreak.c (mbs_possible_linebreaks, mbs_width_linebreaks):
	Work around Solaris 2.9 iconv() bug.

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

	* safe-read.h: Update from current gnulib version.
	* safe-read.c: Update from current gnulib version.
	* safe-write.h: Update from current gnulib version.
	* safe-write.c: Update from current gnulib version.
	* full-write.h: Update from current gnulib version.
	* full-write.c: Update from current gnulib version.

2002-12-16  Bruno Haible  <bruno@clisp.org>

	* copy-file.c: Include <sys/utime.h> if <utime.h> doesn't exist.
	Needed for mingw32.
	Reported by Steven Edwards <Steven_Ed4153@yahoo.com>.

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

	* safe-write.h: New file, from current gnulib version.
	* safe-write.c: New file, from current gnulib version.
	* full-write.h: Update from current gnulib version.
	* full-write.c: Update from current gnulib version.
	* copy-file.c (copy_file): Change test of full_write return value.
	* Makefile.am (libgettextlib_la_SOURCES): Add safe-write.h,
	safe-write.c.

	* safe-read.h: Update from current gnulib version.
	* safe-read.c: Update from current gnulib version.

	* argmatch.h: Update from current gnulib version.
	* argmatch.c: Update from current gnulib version, with simplifications.

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

	* pathmax.h: Update from current gnulib version.
	* obstack.h: Update from current gnulib version.
	* obstack.c: Update from current gnulib version.

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

	* gcd.h (gcd): Change argument type to 'unsigned long'.
	* gcd.c (gcd): Likewise.

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

	* alloca.c: Update from current gnulib version.
	* memset.c: Update from current gnulib version.

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

	Assume ANSI C.
	* libstdarg.h: Remove file.
	* Makefile.am (LIBADD_SOURCE): Remove libstdarg.h.
	* addext.c (addext): Use ANSI C function declarations.
	* alloca.c (alloca): Likewise.
	* argmatch.h (PARAMS): Remove macro.
	(argmatch, argmatch_exit_fn, argmatch_invalid, argmatch_valid,
	__xargmatch_internal, argmatch_to_argument): Use ANSI C function
	declarations.
	* argmatch.c (argmatch, argmatch_invalid, argmatch_valid,
	__xargmatch_internal, argmatch_to_argument): Likewise.
	* backupfile.h (PARAMS): Remove macro.
	(find_backup_file_name, get_version, xget_version, addext): Use ANSI C
	function declarations.
	* backupfile.c (find_backup_file_name, max_backup_version,
	version_number, get_version, xget_version): Likewise.
	* basename.h (gnu_basename): Likewise.
	* basename.c (basename): Likewise.
	* c-ctype.h (PARAMS): Remove macro.
	(c_isascii, c_isalnum, c_isalpha, c_isblank, c_iscntrl, c_isdigit,
	c_islower, c_isgraph, c_isprint, c_ispunct, c_isspace, c_isupper,
	c_isxdigit, c_tolower, c_toupper): Use ANSI C function declarations.
	* c-ctype.c (c_isascii, c_isalnum, c_isalpha, c_isblank, c_iscntrl,
	c_isdigit, c_islower, c_isgraph, c_isprint, c_ispunct, c_isspace,
	c_isupper, c_isxdigit, c_tolower, c_toupper): Likewise.
	* classpath.c (new_classpath, set_classpath, reset_classpath):
	Likewise.
	* concatpath.c (concatenated_pathname): Likewise.
	* copy-file.h (copy_file): Likewise.
	* copy-file.c (copy_file): Likewise.
	* execute.h (execute): Likewise.
	* execute.c (nonintr_close, nonintr_open, execute): Likewise.
	* findprog.h (find_in_path): Likewise.
	* findprog.c (find_in_path): Likewise.
	* fstrcmp.h (fstrcmp): Likewise.
	* fstrcmp.c (diag, compareseq, fstrcmp): Likewise.
	* full-write.h (full_write): Likewise.
	* full-write.c (full_write): Likewise.
	* gcd.h (PARAMS): Remove macro.
	(gcd): Use ANSI C function declarations.
	* gcd.c (gcd): Likewise.
	* getline.h (PARAMS): Remove macro.
	(getline, getdelim): Use ANSI C function declarations.
	* getline.c (getstr, getline, getdelim): Likewise.
	* hash.h (PARAMS): Remove macro.
	(init_hash, delete_hash, insert_entry, find_entry, iterate_table,
	next_prime): Use ANSI C function declarations.
	* hash.c (init_hash, delete_hash, insert_entry, insert_entry_2,
	find_entry, iterate_table, lookup, compute_hashval, next_prime,
	is_prime): Likewise.
	* javacomp.h (compile_java_class): Likewise.
	* javacomp.c (compile_java_class): Likewise.
	* javaexec.h (execute_fn, execute_java_class): Likewise.
	* javaexec.c (execute_java_class): Likewise.
	* linebreak.h (PARAMS): Remove macro.
	(locale_charset, uc_width, u8_width, u16_width, u32_width,
	u8_possible_linebreaks, u16_possible_linebreaks,
	u32_possible_linebreaks, mbs_possible_linebreaks, u8_width_linebreaks,
	u16_width_linebreaks, u32_width_linebreaks, mbs_width_linebreaks): Use
	ANSI C function declarations.
	* linebreak.c (u32_mbtouc, is_cjk_encoding, is_utf8_encoding,
	uc_width, u8_width, u16_width, u32_width, lbrkprop_lookup,
	u8_possible_linebreaks, u16_possible_linebreaks,
	u32_possible_linebreaks, u8_width_linebreaks, u16_width_linebreaks,
	u32_width_linebreaks, read_file, main, iconv_string_length,
	iconv_string_keeping_offsets, is_all_ascii, mbs_possible_linebreaks,
	mbs_width_linebreaks, read_file, main): Likewise.
	* mbswidth.h (PARAMS): Remove macro.
	(mbswidth, mbsnwidth): Use ANSI C function declarations.
	* mbswidth.c (mbswidth, mbsnwidth): Likewise.
	* memmove.c (memmove): Likewise.
	* memset.c (memset): Likewise.
	* mkdtemp.h (PARAMS): Remove macro.
	(mkdtemp): Use ANSI C function declarations.
	* mkdtemp.c (gen_tempname, mkdtemp): Likewise.
	* pathname.h (PARAMS): Remove macro.
	(concatenated_pathname): Use ANSI C function declarations.
	* pfnmatch.h (PARAMS): Remove macro.
	(fnmatch): Use ANSI C function declarations.
	* pfnmatch.c (fnmatch): Likewise.
	* pipe.h (create_pipe_out, create_pipe_in, create_pipe_bidi):
	Likewise.
	* pipe-bidi.c (nonintr_close, create_pipe_bidi): Likewise.
	* pipe-in.c (nonintr_close, nonintr_open, create_pipe_in): Likewise.
	* pipe-out.c (nonintr_close, nonintr_open, create_pipe_out): Likewise.
	* progname.h (set_program_name, maybe_print_progname): Likewise.
	* progname.c (set_program_name): Likewise.
	* safe-read.h (safe_read): Likewise.
	* safe-read.c (safe_read): Likewise.
	* setenv.h (PARAMS): Remove macro.
	(setenv, unsetenv): Use ANSI C function declarations.
	* setenv.c (compar_fn_t, __add_to_environ, setenv): Likewise.
	* sh-quote.h (shell_quote_length, shell_quote_copy, shell_quote,
	shell_quote_argv): Likewise.
	* sh-quote.c (shell_quote_length, shell_quote_copy, shell_quote,
	shell_quote_argv): Likewise.
	* stpcpy.h (PARAMS): Remove macro.
	(stpcpy): Use ANSI C function declarations.
	* stpcpy.c (__stpcpy): Likewise.
	* stpncpy.h (PARAMS): Remove macro.
	(gnu_stpncpy): Use ANSI C function declarations.
	* stpncpy.c (__stpncpy): Likewise.
	* strcase.h (PARAMS): Remove macro.
	(strcasecmp, strncasecmp): Use ANSI C function declarations.
	* strcasecmp.c (__strcasecmp): Likewise.
	* strncasecmp.c (__strncasecmp): Likewise.
	* strcspn.c (strcspn): Likewise.
	* strpbrk.h (PARAMS): Remove macro.
	(strpbrk): Use ANSI C function declarations.
	* strpbrk.c (strpbrk): Likewise.
	* strstr.h (PARAMS): Remove macro.
	(strstr): Use ANSI C function declarations.
	* strstr.c (strstr): Likewise.
	* tmpdir.h (PARAMS): Remove macro.
	(path_search): Use ANSI C function declarations.
	* tmpdir.c (direxists, path_search): Likewise.
	* ucs4-utf8.h (u8_uctomb_aux, u8_uctomb): Likewise.
	* ucs4-utf16.h (u16_uctomb_aux, u16_uctomb): Likewise.
	* unsetenv.c (unsetenv): Likewise.
	* utf8-ucs4.h (u8_mbtouc_aux, u8_mbtouc): Likewise.
	* utf16-ucs4.h (u16_mbtouc_aux, u16_mbtouc): Likewise.
	* vasprintf.h (PARAMS): Remove macro.
	Include <stdarg.h> instead of libstdarg.h.
	(asprintf, vasprintf): Use ANSI C function declarations.
	* vasprintf.c: Include <stdarg.h> instead of libstdarg.h.
	(int_vasprintf, asprintf, checkit): Use ANSI C function declarations.
	Use va_start instead of VA_START.
	* wait-process.h (wait_subprocess): Likewise.
	* wait-process.c (wait_subprocess): Likewise.
	* xerror.h (xasprintf, multiline_warning, multiline_error): Likewise.
	* xerror.c: Include <stdarg.h> instead of libstdarg.h.
	(xasprintf, multiline_warning, multiline_error): Use ANSI C function
	declarations. Use va_start instead of VA_START.
	* xgetcwd.h (PARAMS): Remove macro.
	(xgetcwd): Use ANSI C function declarations.
	* xmalloc.h (xmalloc, xcalloc, xrealloc, xstrdup): Likewise.
	* xmalloc.c (fixup_null_alloc, xmalloc, xcalloc, xrealloc): Likewise.
	* xsetenv.h (xsetenv): Likewise.
	* xsetenv.c (xsetenv): Likewise.
	* xstrdup.c (xstrdup): Likewise.

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

	* argmatch.c: Include gettext.h instead of <locale.h> and <libintl.h>.
	* error.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
	* getopt.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
	* obstack.c [!_LIBC]: Include gettext.h instead of <libintl.h>.

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

	* getopt.c: Don't test HAVE_LIBINTL_H.

	* getopt.h: Update from current gnulib version.
	* getopt.c: Likewise.
	* getopt1.c: Likewise.

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

	* libstdarg.h: Treat SunPro C like ANSI C; it defines __STDC__ to 0.

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

	* liballoca.h: Put under LGPL.
	* libstdarg.h: Likewise.

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

	* vasprintf.c (int_vasprintf): Treat 'F' like 'f'.

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

	* Makefile.am (MOSTLYCLEANFILES): Add stdbool.h unconditionally.

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

	* mkdtemp.c: Test HAVE_STDINT_H_WITH_UINTMAX instead of HAVE_STDINT_H.
	Test HAVE_INTTYPES_H_WITH_UINTMAX instead of HAVE_INTTYPES_H.

2002-07-17  Bruno Haible  <bruno@clisp.org>

	* gettext-0.11.3 released.

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

	* javaexec.h (execute_java_class): Add argument exe_dir.
	* javaexec.c (execute_java_class): Add argument exe_dir. If given,
	attempt to run a native executable.
	* Makefile.am (DEFS): Define EXEEXT.
	* javacomp.sh.in: Use HAVE_GCJ_C instead of HAVE_GCJ.

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

	* javacomp.c (compile_java_class): Ignore gcj versions that start with
	"3.0" or "3.1". (gcj 3.0.4 compiles GetURL.java to invalid bytecode,
	that crashes with an IllegalAccessError when executed by gij 3.0.4 or
	with a VerifyError when executed by Sun Java. Likewise for gcj 3.1.)

2002-05-29  Bruno Haible  <bruno@clisp.org>

	* linebreak.c (nonspacing_table_data, uc_width): Upgrade to
	Unicode 3.2.0.

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

	* basename.h: Use __GLIBC__ >= 2, because BeOS (which defines __GLIBC__
	to -2) doesn't declare basename() properly.
	* basename.c: Likewise.

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

	* Makefile.am (RM): New variable.
	(install-exec-am): Depend on install-exec-clean.
	(install-exec-clean): New rule.

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

	* gettext.h: On Solaris, include <locale.h>.

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

	* javacomp.c (compile_java_class): Ignore non-digits in the first
	line of the output of "gcj --version". Needed for gcj 3.1.

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

	* stdbool.h.in (_Bool): Omit the definition if _Bool is already known
	as a builtin primitive type. Needed for cc on OSF/1 5.1.
	* Makefile.am (stdbool.h): Substitute the value of HAVE__BOOL.

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

	* basename.h: Use __GLIBC__ instead of __GNU_LIBRARY__, because
	Linux libc5 doesn't declare basename() properly.
	* basename.c: Likewise.

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

	* gettext-0.11.2 released.

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

	* gettext-0.11.1 released.

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

	Upgrade to Unicode-3.1.
	* Combining.txt: New file, extracted from Unicode-3.0 PropList.txt.
	* gen-lbrkprop.c: Replace 0x10000 with 0x110000 everywhere.
	(fill_width): Adapt to changed format of EastAsianWidth.txt in
	Unicode-3.1.
	(get_lbp): Make more compatible to Unicode-3.1 LineBreak.txt.
	(debug_output_lbp): Avoid gcc-3.0 warning.
	(unicode_org_lbp): New variable.
	(fill_org_lbp): New function.
	(debug_output_org_lbp): New function.
	(debug_output_org_tables): New function.
	(output_lbp): Handle new negative entries in level1[] correctly.
	Pretty-print level1 contents.
	(main): Expect one more argument.
	* lbrkprop.h: Regenerated with Unicode-3.1 tables.
	* linebreak.c (nonspacing_table_data): Add one more block.
	(nonspacing_table_ind): Extend up to 0x1dfff.
	(uc_width): Update for Unicode-3.1.
	* Makefile.am (EXTRA_DIST): Add Combining.txt.

2001-08-07  Andreas Jaeger  <aj@suse.de>
	    Andreas Schwab  <schwab@suse.de>
	    Bruno Haible  <bruno@clisp.org>

	* 3level.h (EMPTY): New macro.
	(*_get, *_add, *_iterate, *_finalize): Use it instead of ~(uint32_t) 0.

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

	Portability to AIX 4.3.3.
	* stpncpy.h (gnu_stpncpy): Renamed from stpncpy.
	(stpncpy): Define as an alias.
	* stpncpy.c: Compile nothing on glibc systems is set. Otherwise name
	the function gnu_stpncpy.
	* Makefile.am (LIBADD_SOURCE): Remove stpncpy.h, stpncpy.c.
	(libgettextlib_la_SOURCES): Add stpncpy.h, stpncpy.c.

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

	Portability to AIX 4.3.3.
	* unsetenv.c: New file, extracted from setenv.c.
	* setenv.c: Move the unsetenv() function to unsetenv.c.
	* setenv.h: Cope with systems that have setenv() but not unsetenv().
	* Makefile.am (LIBADD_SOURCE): Add unsetenv.c.
	(c-ctype.lo, tmpdir.lo): Depend on stdbool.h.

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

	* strncasecmp.c (__strncasecmp): Trivial simplification.

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

	* libstdarg.h: New file.
	* vasprintf.c: Include it.
	(asprintf): Modernize varargs handling.
	(checkit): Likewise.
	* xerror.c: Include libstdarg.h.
	(xasprintf): Modernize varargs handling.
	* Makefile.am (LIBADD_SOURCE): Add libstdarg.h.

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

	* vasprintf.h: New file.
	* vasprintf.c: Include it.
	* xerror.c: Likewise.
	* Makefile.am (LIBADD_SOURCE): Add vasprintf.h.

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

	* utf8-ucs4.h (u8_mbtouc_aux): Stricter range checking.

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

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

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

	* c-ctype.h (c_is*): Change return type to bool.
	* c-ctype.c (c_is*): Likewise.

	* tmpdir.h (path_search): Change last argument's type to bool.
	* tmpdir.c (path_search): Likewise.
	(direxists): Change return type to bool.

	* vasprintf.c (int_vasprintf): Change total_width to size_t.

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

	* config.charset: Add support for NetBSD.

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

	* ucs4-utf8.h: New file.
	* ucs4-utf16.h: New file.
	* Makefile.am (libgettextlib_la_SOURCES): Add them.

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

	* xerror.c (multiline_warning): Remove temporary hack.

2002-01-31  Bruno Haible  <bruno@clisp.org>

	* gettext-0.11 released.

2002-01-30  Bruno Haible  <bruno@clisp.org>

	* error.c: Compile nothing if HAVE_ERROR_AT_LINE is set.
	* strtoul.c: Compile nothing if HAVE_STRTOUL is set.
	* Makefile.am (libgettextlib_la_SOURCES): Add error.h, error.c,
	strtoul.c.
	(LIBADD_SOURCE): Remove error.h, error.c, strtoul.c.

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

	* getline.c: Remove NDEBUG. It killed the effect of assert().

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

	* Makefile.am (libgettextlib_la_LDFLAGS): Use @LTLIBINTL@ instead of
	@INTLLIBS@, and @LTLIBICONV@ instead of @LIBICONV@.

2002-01-19  Bruno Haible  <bruno@clisp.org>

	* xerror.c (multiline_warning): Add a newline if the message doesn't
	terminate with a newline.

2002-01-12  Bruno Haible  <bruno@clisp.org>

	* gettext.h (gettext_noop): Remove the parentheses around the
	expansion.

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

	* liballoca.h: Fix typo.

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.

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

	* setenv.h: Make it possible to include this file from C++.
	* xsetenv.h: Likewise.

2002-01-05  Bruno Haible  <bruno@clisp.org>

	* Makefile.am (libgettextlib_la_LDFLAGS): Add -lc. Needed on AIX.

2002-01-05  Bruno Haible  <bruno@clisp.org>

	* wait-process.c (WIFSIGNALED): Make it return false when WIFSTOPPED
	returns true.
	(wait_subprocess): Use WIFSIGNALED instead of WCOREDUMP || WTERMSIG.
	On AIX and OSF/1, WTERMSIG has a negative value if !WIFSIGNALED. And
	WCOREDUMP is a BSDism, not POSIX.

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

	* xsetenv.h: New file.
	* xsetenv.c: New file.
	* Makefile.am (libgettextlib_la_SOURCES): Add them.
	* classpath.c (set_classpath): Use xsetenv instead of setenv.
	(reset_classpath): Likewise.
	* javacomp.c (compile_java_class): Likewise.
	* javaexec.c (execute_java_class): Likewise.

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

	* Makefile.am (libgettextlib_la_SOURCES): Add the contents of
	libgettextlib_la_HEADER, except liballoca.h.
	(LIBADD_SOURCE): Add the contents of LIBADD_HEADER, plus liballoca.h.
	(UNUSED_SOURCE): Add the contents of UNUSED_HEADER.
	(libgettextlib_la_HEADER, LIBADD_HEADER, UNUSED_HEADER): Remove
	variables.
	(noinst_HEADERS): Update.

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

	* localcharset.c (ISSLASH): Provide definition for DOS-like systems.
	* basename.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Likewise.

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

	* binary-io.h: New file, extracted from system.h.
	* exit.h: New file, extracted from system.h.
	* liballoca.h: New file, extracted from system.h.
	* pathname.h: New file, extracted from system.h.
	* stpcpy.h: New file, extracted from system.h.
	* stpncpy.h: New file, extracted from system.h.
	* strcase.h: New file, extracted from system.h.
	* xgetcwd.h: New file, extracted from system.h.
	* system.h: Remove file.
	* Makefile.am (libgettextlib_la_SOURCES): Remove xgetcwd.c.
	(libgettextlib_la_HEADER): Add binary-io.h, exit.h, liballoca.h,
	pathname.h. Remove system.h.
	(LIBADD_HEADER): Add stpcpy.h, stpncpy.h, strcase.h.
	(UNUSED_SOURCE): Add xgetcwd.c.
	(UNUSED_HEADER): Add xgetcwd.h.
	* argmatch.c: Include exit.h instead of <stdlib.h>.
	(EXIT_FAILURE): Remove fallback definition.
	* concatpath.c: Include pathname.h, <string.h>, stpcpy.h instead of
	system.h.
	* copy-file.c: Include <unistd.h>, binary-io.h, exit.h instead of
	system.h.
	(O_BINARY): Remove fallback definition.
	* execute.c: Include exit.h.
	(EXIT_FAILURE): Remove fallback definition.
	* findprog.c: Include pathname.h instead of system.h.
	* javacomp.c: Include liballoca.h. Remove alloca() declaration stuff.
	* javaexec.c: Likewise.
	* setenv.c: Likewise.
	* linebreak.h: Include <stddef.h> instead of <stdlib.h>.
	* linebreak.c: Include <stdlib.h> instead of <stddef.h>.
	* pipe-bidi.c: Include exit.h.
	(EXIT_FAILURE): Remove fallback definition.
	* pipe-in.c: Include exit.h.
	(EXIT_FAILURE): Remove fallback definition.
	* pipe-out.c: Include exit.h.
	(EXIT_FAILURE): Remove fallback definition.
	* wait-process.c: Include exit.h.
	(EXIT_FAILURE): Remove fallback definition.
	* xerror.c: Include exit.h.
	(EXIT_FAILURE): Remove fallback definition.
	* xmalloc.c: Include exit.h.
	(EXIT_FAILURE): Remove fallback definition.

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

	* minmax.h: New file, extracted from system.h.
	* system.h (MIN, MAX): Remove macros.
	* Makefile.am (libgettextlib_la_HEADER): Add minmax.h.

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

	* gettext.h: Moved here from ../intl/libgettext.h.
	* Makefile.am (noinst_HEADERS): Add it.
	(gettextsrcdir, gettextsrc_DATA): New variables.
	* copy-file.c: Include gettext.h instead of libgettext.h.
	* execute.c: Likewise.
	* javacomp.c: Likewise.
	* javaexec.c: Likewise.
	* pipe-bidi.c: Likewise.
	* pipe-in.c: Likewise.
	* pipe-out.c: Likewise.
	* wait-process.c: Likewise.
	* xerror.c: Likewise.
	* xmalloc.c: Likewise.

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

	* execute.c (nonintr_open): Omit prototype. On some platforms mode_t
	promotes to int, not mode_t.
	* pipe-in.c (nonintr_open): Likewise.
	* pipe-out.c (nonintr_open): Likewise.

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

	* setenv.c (__add_to_environ): Don't call realloc(NULL,...), use
	malloc instead. For SunOS4.

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

	* pfnmatch.h: New file, from fileutils-4.1/lib/fnmatch.h with
	modifications.
	* pfnmatch.c: New file, from fileutils-4.1/lib/fnmatch.c with
	modifications.
	* Makefile.am (LIBADD_SOURCE): Add pfnmatch.c.
	(LIBADD_HEADER): Add pfnmatch.h.
	(DISTCLEANFILES): New variable.

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

	* getline.h: Include <stddef.h>, for size_t.

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

	* localcharset.c: Add OS/2 support.

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

	* argmatch.c: Include <stdlib.h>, to declare exit().
	* copy-file.c: Include <sys/stat.h>, for struct stat.
	* gcd.c: Include <stdlib.h>, to declare abort().
	* setenv.c: Declare alloca.
	(compar_fn_t): New typedef.
	(KNOWN_VALUE, STORE_VALUE): Use it.

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

	* pipe-in.c (create_pipe_in): Don't redirect stdin if prog_stdin
	is NULL.
	* pipe-out.c (create_pipe_out): Don't redirect stdout if prog_stdout
	is NULL.

2001-11-24  Bruno Haible  <bruno@clisp.org>

	* javaexec.h (execute_java_class): New argument 'quiet'.
	* javaexec.c (execute_java_class): Likewise.

2001-11-17  Bruno Haible  <haible@clisp.cons.org>

	* hash.c (lookup_2): Remove function, identical to 'lookup'.
	(init_hash): Remove test for NULL that can never succeed.
	(insert_entry_2): Resize at 75%, not 90%. Call 'lookup' instead of
	'lookup_2'.
	(compute_hashval): Shift by 9 bits, not by 4 bits. This drastically
	improves the quality of the hash function, especially for short
	strings.

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

	* javaexec.sh.in: Use HAVE_JAVA instead of HAVE_JAVA_JVM.
	The problem seen with automake-1.4 is gone with automake-1.5.

2001-11-10  Bruno Haible  <haible@clisp.cons.org>

	* argmatch.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.
	* c-ctype.h (PARAMS): Likewise.
	* gcd.h (PARAMS): Likewise.
	* getline.h (PARAMS): Likewise.
	* hash.h (PARAMS): Likewise.
	* linebreak.h (PARAMS): Likewise.
	* mbswidth.h (PARAMS): Likewise.
	* mkdtemp.h (PARAMS): Likewise.
	* setenv.h (PARAMS): Likewise.
	* strpbrk.h (PARAMS): Likewise.
	* strstr.h (PARAMS): Likewise.
	* system.h (PARAMS): Likewise.
	* tmpdir.h (PARAMS): Likewise.

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

	* tmpdir.c: Include string.h.

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

	* execute.c (execute): If the subprocess fails, exit with return code
	127, not -1 (which becomes 255).
	* pipe-bidi.c (create_pipe_bidi): Likewise.
	* pipe-in.c (create_pipe_in): Likewise.
	* pipe-out.c (create_pipe_out): Likewise.

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

	* Makefile.am (execute.lo, javacomp.lo, javaexec.lo, pipe-bidi.lo,
	pipe-in.lo, pipe-out.lo, progname.lo, wait-process.lo, xerror.lo):
	Depend on @STDBOOL_H@.
	* execute.c (EXIT_FAILURE): Provide a fallback definition, for SunOS 4.
	* pipe-bidi.c (EXIT_FAILURE): Likewise.
	* pipe-in.c (EXIT_FAILURE): Likewise.
	* pipe-out.c (EXIT_FAILURE): Likewise.
	* wait-process.c (EXIT_FAILURE): Likewise.
	* xerror.c (EXIT_FAILURE): Likewise.
	(xasprintf): Use VA_START instead of va_start.
	* javacomp.c: Include alloca() declaration stuff.
	* javaexec.c: Likewise.

2001-10-28  Bruno Haible  <haible@clisp.cons.org>

	* progname.c (set_program_name) [BeOS]: Make program_name absolute
	before removing "lt-".

2001-10-21  Bruno Haible  <haible@clisp.cons.org>

	Create a libgettextlib shared library.
	* Makefile.am (noinst_LIBRARIES): Remove variable.
	(lib_LTLIBRARIES): New variable.
	(libgettextlib_la_SOURCES): Renamed from libnlsut_a_SOURCES.
	(libgettextlib_la_HEADER): Renamed from libnlsut_a_HEADER.
	(libgettextlib_la_LIBADD): Renamed from libnlsut_a_LIBADD.
	(libgettextlib_la_LDFLAGS): New variable.

2001-10-21  Bruno Haible  <haible@clisp.cons.org>

	* mkdtemp.c: Include <inttypes.h> if it exists. Needed on platforms
	which have <inttypes.h> but not <stdint.h>, like BeOS.

2001-10-21  Bruno Haible  <haible@clisp.cons.org>

	* stdbool.h.in: Avoid syntax error on BeOS if <sys/socket.h> has
	already been included.

2001-10-21  Bruno Haible  <haible@clisp.cons.org>

	* basename.c: #undef basename before defining it. This avoids a
	warning on non-glibc platforms.

2001-10-09  Bruno Haible  <haible@clisp.cons.org>

	* localcharset.c (getc): Define as getc_unlocked if available.

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

	* wait-process.h (wait_subprocess): New argument 'exit_on_error'.
	* wait-process.c (wait_subprocess): Implement 'exit_on_error' handling.
	Treat exitcode 127 like a failure to create the subprocess.
	* execute.h (execute): New argument 'exit_on_error'.
	* execute.c (execute): Implement 'exit_on_error' handling.
	* pipe.h (create_pipe_out, create_pipe_in, create_pipe_bidi): New
	arguments 'null_stderr' and 'exit_on_error'.
	* pipe-in.c (create_pipe_in): Implement 'null_stderr' and
	'exit_on_error' handling.
	* pipe-out.c (create_pipe_out): Likewise.
	* pipe-bidi.c (create_pipe_bidi): Likewise.
	* javacomp.c: Include pipe.h, wait-process.h, safe-read.h.
	(compile_java_class): Update for changed execute(). When testing for
	gcj, ignore gcj version 2.xx, require at least gcj 3.0.
	* javaexec.c (execute_java_class): Update for changed execute().
	* Makefile.am (libnlsut_a_SOURCES): Add safe-read.c.
	(libnlsut_a_HEADER): Add safe-read.h.
	(UNUSED_SOURCE): Remove safe-read.c.
	(UNUSED_HEADER): Remove safe-read.h.

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

	Upgrade to automake-1.5.
	* Makefile.am (AUTOMAKE_OPTIONS): Add 'no-dependencies'.

2001-10-20  Bruno Haible  <haible@clisp.cons.org>

	Assume strchr() exists.
	* system.h (strchr): Remove fallback definition.

2001-09-17  Bruno Haible  <haible@clisp.cons.org>

	* backupfile.h: New file, from fileutils-4.1 with modifications.
	* backupfile.c: New file, from fileutils-4.1 with modifications.
	* addext.c: New file, from fileutils-4.1 with modifications.
	* Makefile.am (libnlsut_a_SOURCES): Add backupfile.c, addext.c.
	(libnlsut_a_HEADER): Add backupfile.h.

2001-09-17  Bruno Haible  <haible@clisp.cons.org>

	* argmatch.h: New file, from fileutils-4.1 with simplifications.
	* argmatch.c: New file, from fileutils-4.1 with simplifications.
	* Makefile.am (libnlsut_a_SOURCES): Add argmatch.c.
	(libnlsut_a_HEADER): Add argmatch.h.

2001-09-17  Bruno Haible  <haible@clisp.cons.org>

	* copy-file.h: New file.
	* copy-file.c: New file.
	* Makefile.am (libnlsut_a_SOURCES): Add copy-file.c.
	(libnlsut_a_HEADER): Add copy-file.h.

2001-09-17  Bruno Haible  <haible@clisp.cons.org>

	* basename.h: New file.
	* basename.c: Include it. Don't compile the function if already
	present in the GNU C library.
	* Makefile.am (libnlsut_a_HEADER): Add basename.h.
	* system.h (gnu_basename, basename): Remove.

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

	* xmalloc.h: New file.
	* strstr.h: New file.
	* system.h (xmalloc, xrealloc, xstrdup): Remove declarations, now in
	xmalloc.h.
	(parse_printf_format, asprintf): Remove declarations.
	(strstr): Remove declaration, now in strstr.h.
	* xmalloc.c: Include xmalloc.h. Modernize. Assume <stdlib.h> exists.
	* xstrdup.c: Include xmalloc.h. Modernize. Assume <string.h> exists.
	* concatpath.c: Include xmalloc.h.
	* findprog.c: Likewise.
	* fstrcmp.c: Include xmalloc.h instead of system.h.
	* javacomp.c: Likewise.
	* javaexec.c: Likewise.
	* sh-quote.c: Likewise.
	* hash.c: Include xmalloc.h. Don't declare xmalloc, xcalloc.
	* xgetcwd.c: Include stdlib.h and xmalloc.h. Don't declare xmalloc,
	xstrdup, free.
	* Makefile.am (libnlsut_a_HEADER): Add xmalloc.h.
	(LIBADD_HEADER): Add strstr.h.

	* Makefile.am (INCLUDES): Add -I$(top_srcdir)/intl. Needed because
	some files include "libgettext.h", in the case $builddir != $srcdir.

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

	* javacomp.c (compile_java_class): Recognize javac exit code 2.

2001-09-16  Bruno Haible  <haible@clisp.cons.org>

	* Makefile.am (libnlsut_a_SOURCES): Remove safe-read.c.
	(libnlsut_a_HEADER, LIBADD_SOURCE, LIBADD_HEADER, UNUSED_SOURCE,
	UNUSED_HEADER): New variables.
	(noinst_HEADERS, EXTRA_DIST): Use them.

2001-09-08  Bruno Haible  <haible@clisp.cons.org>

	* pipe-bidi.c (nonintr_close): Add function prototypes.
	* pipe-in.c (nonintr_close, nonintr_open): Likewise.
	* pipe-out.c (nonintr_close, nonintr_open): Likewise.

2001-09-08  Bruno Haible  <haible@clisp.cons.org>

	* findprog.c: Include specification header before all other headers.
	* fstrcmp.c: Likewise.
	* full-write.c: Likewise.
	* hash.c: Likewise.
	* linebreak.c: Likewise.
	* mbswidth.c: Likewise.
	* progname.c: Likewise.
	* safe-read.c: Likewise.
	* wait-process.c: Likewise.
	* xerror.c: Likewise.
	* getline.c: Include getline.h.
	* mbswidth.h: Include <stddef.h>, for size_t.
	* wait-process.h: Include <unistd,h> and <sys/types.h>, for pid_t.

2001-09-08  Bruno Haible  <haible@clisp.cons.org>

	* javacomp.sh.in: New file.
	* javaexec.sh.in: New file.

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

	* javacomp.h: New file.
	* javacomp.c: New file.
	* javaexec.h: New file.
	* javaexec.c: New file.
	* classpath.c: New file.
	* Makefile.am (EXTRA_DIST): Add classpath.c.
	(libnlsut_a_SOURCES): Add javacomp.c, javaexec.c.
	(noinst_HEADERS): Add javacomp.h, javaexec.h.

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

	* sh-quote.h: New file.
	* sh-quote.c: New file.
	* Makefile.am (libnlsut_a_SOURCES): Add sh-quote.c.
	(noinst_HEADERS): Add sh-quote.h.

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

	* strpbrk.h: New file.
	* strpbrk.c: New file, from glibc-2.2.4.
	* Makefile.am (EXTRA_DIST): Add strpbrk.c.
	(noinst_HEADERS): Add strpbrk.h.

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

	* setenv.h: New file.
	* setenv.c: New file, from glibc-2.2.4.
	* Makefile.am (EXTRA_DIST): Add setenv.c.
	(noinst_HEADERS): Add setenv.h.

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

	* mkdtemp.h: New file.
	* mkdtemp.c: New file, mostly taken from glibc-2.2.4.
	* tmpdir.h: New file.
	* tmpdir.c: New file, mostly taken from glibc-2.2.4.
	* Makefile.am (EXTRA_DIST): Add mkdtemp.c.
	(libnlsut_a_SOURCES): Add tmpdir.c.
	(noinst_HEADERS): Add mkdtemp.h, tmpdir.h.

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

	* execute.h: New file.
	* execute.c: New file.
	* Makefile.am (libnlsut_a_SOURCES): Add execute.c.
	(noinst_HEADERS): Add execute.h.

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

	* gcd.h: New file.
	* gcd.c: New file.
	* Makefile.am (libnlsut_a_SOURCES): Add gcd.c.
	(noinst_HEADERS): Add gcd.h.

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

	* pipe.h: Ensure pid_t gets declared.
	* pipe-bidi.c: Include pipe.h.
	* pipe-in.c: Likewise.
	* pipe-out.c: Likewise.

2001-08-26  Bruno Haible  <haible@clisp.cons.org>

	* printf-parse.h: Remove file.
	* printf.h: Remove file.
	* printf-prs.c: Remove file.
	* Makefile.am (EXTRA_DIST): Remove printf-prs.c.
	(noinst_HEADERS): Remove printf-parse.h, printf.h.
	* system.h (MIN): New macro.

2001-07-28  Bruno Haible  <haible@clisp.cons.org>

	* printf-parse.h: Don't include <ctype.h>.
	(ISDIGIT): New macro.
	(read_int, parse_one_spec): Use ISDIGIT instead of isdigit.

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

	* stdbool.h.in (_Bool): Define differently in C++ mode.

2001-07-23  Bruno Haible  <haible@clisp.cons.org>

	* system.h: Assume <limits.h> exists.
	* fstrcmp.c: Likewise.

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

	* utf8-ucs4.h: New file, extracted from linebreak.c.
	* utf16-ucs4.h: New file, extracted from linebreak.c.
	* linebreak.c (u8_mbtouc_aux, u8_mbtouc): Moved to utf8-ucs4.h.
	(u16_mbtouc_aux, u16_mbtouc): Moved to utf16-ucs4.h.
	* Makefile.am (noinst_HEADERS): Add utf8-ucs4.h, utf16-ucs4.h.

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

	* stdbool.h.in: New file.
	* Makefile.am (EXTRA_DIST): Add stdbool.h.in.
	(all-local): Depend on @STDBOOL_H@.
	(stdbool.h): New rule.
	(MOSTLYCLEANFILES): New variable.
	* progname.h: Include stdbool.h.
	(error_with_progname): Change type to bool.
	* progname.c (error_with_progname): Likewise.

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

	* findprog.h: New file.
	* findprog.c: New file.
	* full-write.h: New file.
	* full-write.c: New file.
	* pipe.h: New file.
	* pipe-bidi.c: New file.
	* pipe-in.c: New file.
	* pipe-out.c: New file.
	* safe-read.h: New file.
	* safe-read.c: New file.
	* wait-process.h: New file.
	* wait-process.c: New file.
	* Makefile.am (libnlsut_a_SOURCES): Add findprog.c, full-write.c,
	pipe-bidi.c, pipe-in.c, pipe-out.c, safe-read.c, wait-process.c.
	(noinst_HEADERS): Add findprog.h, full-write.h, pipe.h, safe-read.h,
	wait-process.h.

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

	* progname.h (set_program_name): New declaration.
	* progname.c: Include <string.h>.
	(set_program_name): New function.

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

	* xerror.h: New file.
	* xerror.c: New file.
	* Makefile.am (libnlsut_a_SOURCES): Add xerror.c.
	(noinst_HEADERS): Add xerror.h.

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

	Prefix most error messages with the program name, except those
	starting with "filename:lineno:".
	* progname.h: New file.
	* progname.c: New file.
	* Makefile.am (libnlsut_a_SOURCES): Add progname.c.
	(noinst_HEADERS): Add progname.h.

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

	* vasprintf.c (int_vasprintf): Upon allocation failure, return -1,
	not 0, to be consistent with glibc documentation.

2001-09-13  Bruno Haible  <haible@clisp.cons.org>

	* gettext-0.10.40 released.

2001-09-13  Bruno Haible  <haible@clisp.cons.org>

	* alloca.c (alloca): Replace 'REGISTER' with 'register'.
	Reported by Len Makin <len@hpc.csiro.au>.

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

	* mbswidth.c (mbsinit): Define to 1 if not defined. For SCO 3.2v5.0.2.

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

	* linebreak.c (mbs_possible_linebreaks): Avoid broken EUC-KR
	conversion in glibc-2.1.
	(mbs_width_linebreaks): Likewise.

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

	* linebreak.c (iconv_string_keeping_offsets): Work around a glibc-2.1
	bug.

2001-04-19  Bruno Haible  <haible@clisp.cons.org>

	* gettext-0.10.37 released.

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

	* mbswidth.h: New file, from textutils-2.0.13 with modifications.
	* mbswidth.c: Likewise.
	* Makefile.am (noinst_HEADERS): Add mbswidth.h.
	(libnlsut_a_SOURCES): Add mbswidth.c.

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

	* linebreak.h (UC_BREAK_UNDEFINED): New enum value.
	(u8_width_linebreaks, u16_width_linebreaks, u32_width_linebreaks,
	mbs_width_linebreaks): Add overrides argument.
	* linebreak.c (u8_width_linebreaks, u16_width_linebreaks,
	u32_width_linebreaks, mbs_width_linebreaks): Add overrides argument.

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

	* gettext-0.10.36 released.

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

	* linebreak.c: Include string.h, needed for memset() declaration.

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

	* xmalloc.c (fixup_null_alloc): Unify messages.

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

	* linebreak.c (iconv_string_length): Don't call
	iconv(cd,NULL,NULL,NULL,NULL) on glibc-2.1; it crashes.

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

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

	* config.charset: Update from libiconv-1.6.
	* localcharset.c: Likewise.

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

	* system.h (ISSLASH, HAS_DEVICE, IS_ABSOLUTE_PATH, IS_PATH_WITH_DIR,
	FILESYSTEM_PREFIX_LEN): New macros.
	(concatenated_pathname): New declaration.
	(SET_BINARY): New macro.
	* concatpath.c: New file.
	* Makefile.am (libnlsut_a_SOURCES): Add concatpath.c.

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

	* gen-lbrkprop.c: New file.
	* 3level.h: New file.
	* lbrkprop.h: New file, generated by gen-lbrkprop.
	* linebreak.h: New file.
	* linebreak.c: New file.
	* Makefile.am (EXTRA_DIST): Add gen-lbrkprop.c, 3level.h.
	(libnlsut_a_SOURCES): Add linebreak.c.
	(noinst_HEADERS): Add linebreak.h, lbrkprop.h.

	* c-ctype.h: New file.
	* c-ctype.c: New file.
	* Makefile.am (libnlsut_a_SOURCES): Add c-ctype.c.
	(noinst_HEADERS): Add c-ctype.h.

	Allow the use of locale_charset() in src.
	* config.charset: New file, from ../intl/.
	* localcharset.c: New file, from ../intl/.
	* ref-add.sin: New file, from ../intl/.
	* ref-del.sin: New file, from ../intl/.
	* Makefile.am (EXTRA_DIST): Add config.charset, ref-{add,del}.sin.
	(libnlsut_a_SOURCES): Add localcharset.c.
	(DEFS): Define to set LIBDIR.
	(INCLUDES): Add -I. -I$(srcdir) -I.. to compensate for automake's
	default DEFS setting.
	(all-local, install-exec-local, uninstall-local, charset.alias): New
	targets.
	(SUFFIXES): New variable.
	(.sin.sed): New rule.
	(CLEANFILES): New variable.

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

	* printf.h (PARAMS): GNU C always supports prototypes.
	* system.h (PARAMS): Likewise.

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

	* vasprintf.c (int_vasprintf): Cast second arg of strtoul, to avoid
	warning.

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

	* system.h (O_BINARY, O_TEXT, setmode, fileno): New macros for systems
	that distinguish between text and binary I/O.

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

	* error.c: Include <libintl.h> only if ENABLE_NLS || _LIBC.
	* getopt.c: Test ENABLE_NLS instead of 'defined HAVE_LIBINTL_H'.
	* obstack.c: Likewise.

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

	* system.h: Assume <stdlib.h>, <string.h> exist.
	* fstrcmp.c: Likewise.
	* vasprintf.c: Likewise.

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

	* basename.c: Include <stdio.h>, needed by assert on SunOS4.
	(basename): Convert to K&R C syntax.
	* vasprintf.c (int_vasprintf): Don't use fabs, it needs -lm on some
	platforms.

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

	* hash.c (insert_entry): Use obstack_copy instead of obstack_copy0.

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

	* system.h (open_po_file): Remove declaration.

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

	* printf.h (printf_info): New fields is_char, is_longlong.
	(PA_FLAG_CHAR): New macro.
	* printf-parse.h: Include inttypes.h.
	(long_long_int): Define depending on HAVE_UNSIGNED_LONG_LONG.
	(ptrdiff_t): Define depending on HAVE_PTRDIFF_T.
	(parse_one_spec): Handle new ISO C99 length modifiers 'j', 't', 'z'.

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

	* basename.c: Update from current fileutils version, keeping the
	function name as `basename' or `gnu_basename'.

	* error.c: Update from glibc-2.2 version.

	* fstrcmp.h: extern declaration.

	* getline.h: Comment out declarations on glibc2 systems.
	* getline.c: Make getstr() static, to avoid conflict with libncurses.

	* getopt.h: Update from glibc-2.2 version.
	* getopt.c: Likewise.

	* hash.h: Update from glibc-2.2 version. Don't assume keys are NUL
	terminated.
	(insert_entry, find_entry): Change argument type from 'const char*' to
	'const void*'.
	(iterate_table): Add keylen argument.
	* hash.c: Update from glibc-2.2 version. Don't assume keys are NUL
	terminated.
	(xcalloc): New declaration.
	(struct hash_entry): Add keylen field.
	(init_hash): Use xcalloc instead of xmalloc.
	(insert_entry_2): Add keylen argument. Use xcalloc instead of xmalloc.
	(iterate_table): Add keylen argument.
	(lookup): Compare using memcmp, not strncmp.
	(lookup_2): Add keylen argument. Compare using memcmp, not strcmp.

	* memmove.c: Revert to gettext-0.10.35 version, independent of glibc.
	* memset.c: Likewise.

	* obstack.h: Update from glibc-2.2 version. Add a few consts.
	* obstack.c: Update from glibc-2.2 version.

	* pathmax.h: Update from current fileutils version.

	* printf-prs.c: Revert to old, not multibyte aware version. Since the
	messages in the catalog can be in any encoding, use of the current
	locale's encoding is wrong here.
	* printf-parse.h (find_spec): Likewise.

	* strtol.c: Update from glibc-2.2 version.

	* strstr.c (strstr): Add an empty statement after 'shloop' label.

	* vasprintf.c: Include stdlib.h if it exists.
	(int_vasprintf): Increase buffer size for float/double values with
	positive exponent only. Recognize new ISO C99 length modifiers 'j',
	't', 'z'.
	(main): Add more tests.

	* xgetcwd.c (xgetcwd): If the required pathname length is smaller
	than 1024, return a memory chunk of least possible size, instead
	of size PATH_MAX + 2. In the loop, increment the size proportionally.
	Use free/xmalloc instead of xrealloc to avoid copying for very long
	paths.

	* xmalloc.c: Use NULL where appropriate.

	* xstrdup.c (xstrdup): Change argument type to 'const char *'.

1999-12-27  Geoff Keating  <geoffk@cygnus.com>

	* vasprintf.c (int_vasprintf): Don't re-read the format character
	as this mishandles strings like '%%s'.

1998-01-18  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* vasprintf.c (int_vasprintf): Increase buffer size for float/double
	values.

2000-05-06  Ulrich Drepper  <drepper@redhat.com>

	* Makefile.am (EXTRA_DIST): Add basename.c.
	(libnlsut_a_SOURCES): Add basename.c.

1998-06-01  Ulrich Drepper  <drepper@cygnus.com>

	* printf-parse.h: Change back from using `unsigned char' to `char'.

1998-05-01 08:47  Ulrich Drepper  <drepper@cygnus.com>

	* gettext-0.10.35 released.

1998-04-29  Ulrich Drepper  <drepper@cygnus.com>

	* printf-parse.h: Use unsigned char for parameters to read_int and
	parse_one_spec (for losing Solaris systems).
	Patch by Jim Meyering.

1998-04-28 11:42  Ulrich Drepper  <drepper@cygnus.com>

	* hash.c: Include malloc.h if stdlib.h is not available.
	Include either string.h or strings.h.

	* system.h: Include limits.h before defining MAX to prevent
	redefinitions.

	* Makefile.am: Move basename.c from EXTRA_DIST to libnlsut_a_SOURCES.

1998-04-27 20:51  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile (EXTRA_DIST): Remove obstack.c here.
	(libnlsut_a_SOURCES): Add obstack.c here.

	* alloca.c: Include string.h and stdlib.h if available.  Fix typos.

	* getopt.c: Update from glibc version.

	* hash.c: Include stdlib.h.  Use #if instead of #ifdef while testing
	HAVE_* macros.  Don't include system.h.

	* printf-parse.h: Use #if instead of #ifdef.

1997-08-18 13:47  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* xstrdup.c (sys/types.h): File included.
	* system.h (strstr): Function prototype added.

1997-08-15 03:01  Ulrich Drepper  <drepper@cygnus.com>

	* stpcpy.c, stpncpy.c: Copy version from glibc to fix severe bugs.

1997-08-01 15:47  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.am (AUTOMAKE_OPTIONS): Require version 1.2.

Mon Mar 10 06:52:59 1997  Ulrich Drepper  <drepper@cygnus.com>

	* xstrdup.c: Add more compatibility handling.  Pretty-print
	preprocessor directives.

	* printf-parse.h: Define _GNU_SOURCE not __USE_GNU.

	* Makefile.am: Change for use with automake-1.1.

1997-02-08 04:26  Ulrich Drepper  <drepper@cygnus.com>

	* stpncpy.c: Update from version in GNU libc 2.0.  This corrects
	a long standing bug in xgettext.

Fri Dec  6 04:20:56 1996  Ulrich Drepper  <drepper@cygnus.com>

	* system.h: Use PARAMS not __P for basename prototype.
	Reported by Kaveh R. Ghazi <ghazi@caip.rutgers.edu>.

Tue Dec  3 17:50:34 1996  Ulrich Drepper  <drepper@cygnus.com>

	* system.h: Add prototype for basename.

	* Makefile.am (EXTRA_DIST): Add basename.c.

Fri Nov 22 03:32:34 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.am (EXTRA_DIST): Rename strncase.c to strncasecmp.c.

Sat Aug 31 04:52:56 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.am (nlsut_SOURCES): Move error.c to EXTRA_DIST.

Wed Jun 19 02:45:02 1996  Ulrich Drepper  <drepper@cygnus.com>

	* system.h: Add prototypes for stpncpy, strcasecmp, and
	strncasecmp.

	* Makefile.am (EXTRA_DIST): Add strncase and stpncpy.

Fri Jun 14 03:56:23 1996  Ulrich Drepper  <drepper@cygnus.com>

	* getline.c (_GNU_SOURCE): Define this macro, not __USE_GNU.

	* Makefile.am (nlsut_SOURCES): Move getline.c and printf-prs.c to
	EXTRA_DIST.  Reported by Kaveh R. Ghazi.

Tue Jun 11 15:28:17 1996  Ulrich Drepper  <drepper@cygnus.com>

	* printf-prs.c: Add some casts for `n'.

	* printf-parse.h: Add prototypes and __USE_GNU definition.

	* getline.c: Define __USE_GNU to get prototype.

	* Makefile.am (AUTOMAKE_OPTIONS): Add variable.  Must be defined
	in all subdirs.

Wed Jun  5 16:54:43 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile.am (INCLUDES): Define include paths to intl/ dir for
	<libintl.h> file.

Mon Jun  3 19:13:36 1996  Ulrich Drepper  <drepper@cygnus.com>

	* getopt.c: Update from latest GNU libc source.  We don't need
	the AC_REPLACE_GNU_GETOPT anymore.

	* Makefile.am (EXTRA_DIST): Remove files mentioned in
	nlsut_SOURCES from EXTRA_DIST.
	(nlsut_SOURCES): Add getopt.c and getopt1.c.

Wed Apr 24 23:48:42 1996  Ulrich Drepper  <drepper@myware>

	* Makefile.in (GETOPT): Remove variable.
	(OBJECTS): Don't use $(GETOPT).  If not present the getopt are now
	listed in @LIBOBJS@.

Fri Apr  5 12:00:51 1996  Ulrich Drepper  <drepper@myware>

	* Makefile.in (SOURCES): Remove whoami.c.
	(OBJECTS): Remove whoami.o.

	* system.h: Remove prototype for `get_submitter'.

Thu Apr  4 21:14:51 1996  Ulrich Drepper  <drepper@myware>

	* system.h: Add prototype for asprintf.

Tue Apr  2 18:53:38 1996  Ulrich Drepper  <drepper@myware>

	* Makefile.in (all-gettext): New goal.  Same as all.

Tue Apr  2 12:57:44 1996  Ulrich Drepper  <drepper@myware>

	* error.c, error.h: Update from version in GNU libc.

Tue Mar 26 12:35:56 1996  Ulrich Drepper  <drepper@myware>

	* error.c, error.h: Applied François' patches for more
	portability.

Mon Mar 25 01:21:31 1996  Ulrich Drepper  <drepper@myware>

	* Makefile.in (SOURCES): Add strstr.c.

Sun Mar 24 18:41:42 1996  Ulrich Drepper  <drepper@myware>

	* error.c (error_with_loc): In `one error per line' mode check for
	old_file_name to be NULL first.  Reported by François Pinard.

Fri Mar  1 13:38:26 1996  Ulrich Drepper  <drepper@myware>

	* getopt.c: Update from latest version in GNU C Library.
	* getopt1.c: Ditto.
	* getopt.h: Ditto.

	* error.c (error_with_loc): Not simply compare string pointers to
	test for same file name.
	(error_with_loc): file_name parameter is really const.

	* error.c (error_one_per_line): New variable.
	(error_with_loc): If error_one_per_line != 0, print at most one
	error per line.

	* error.h: Declare new variable error_one_per_line.

Mon Jan  1 03:12:08 1996  Ulrich Drepper  <drepper@myware>

	* Makefile.in (GETOPTSRC): Remove this variable.

Sat Dec 30 16:26:07 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (ERROR, ERRORSRC): New variables.  error.c is now
	part of GNU libc and will not be needed on systems running this
	lib.
	(SOURCES): Replace error.c with $(ERRORSRC).
	(OBJECTS): Replace error.o with $(ERROR).

Tue Dec 19 22:08:10 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (Makefile): Explicitly use $(SHELL) for running
	shell scripts.

Sat Dec  9 16:40:49 1995  Ulrich Drepper  <drepper@myware>

	* whoami.c, system.h, printf.h, printf-parse.h, hash.h, hash.c,
	getline.h, fstrcmp.h, fstrcmp.c, error.h, error.c:
	Use PARAMS instead of __P.  Suggested by Roland McGrath.

Wed Dec  6 16:07:27 1995  ghazi@caip.rutgers.edu  <Kaveh R. Ghazi>

	* system.h: Fix alloca declaration so that it matches the one
	generated by bison on HPUX.

Sat Nov 25 16:13:50 1995  Ulrich Drepper  <drepper@myware>

	* whoami.c: Don't use #ifdef, prefer #if.

	* error.c: Capitalize arguments of macros.  Patch by François Pinard.

Thu Nov 16 22:41:32 1995  Ulrich Drepper  <drepper@myware>

	* whoami.c: Correct prototype declarations.

	* xmalloc.c: Include "error.h" instead of defining error ourself.

	* system.h: Include <stdio.h> to get FILE definition.

	* hash.c: Peter Miller suggested not to use `div' as a variable name.

	* error.c (error_print_progname): For ANSI C provide complete type.
	Include error.h.  Patches by Peter Miller.

Sun Nov 12 12:34:12 1995  Ulrich Drepper  <drepper@myware>

	* whoami.c: Add prototypes.
	(get_submitter): Use stpcpy if available.

Sat Nov 11 00:26:31 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (HEADERS):
	Add missing pathmax.h file.  Reported by François Pinard.

Fri Nov 10 09:59:06 1995  Ulrich Drepper  <drepper@myware>

	* error.h (error_print_progname):
	Provide real prototype, i.e. with argument types.
	Patch by Peter Miller.

Wed Nov  8 23:25:00 1995  Ulrich Drepper  <drepper@myware>

	* system.h: Add prototype for xgetcwd.

	* Makefile.in (SOURCES): Add xgetcwd.c.
	(OBJECTS): Add xgetcwd.o.

Tue Nov  7 11:44:32 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (intldir):
	New variable.  Use its value instead of ../intl.

Sun Nov  5 19:40:03 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (dist-gettext): Make synonym for dist.

Sun Nov  5 18:04:11 1995  Ulrich Drepper  <drepper@myware>

	* hash.c (find_entry): Remove unused variable retval.

Sun Nov  5 11:38:19 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (dist): Suppress error message when ln failed.
	Get files from $(srcdir) explicitly.

Sat Oct 28 14:25:13 1995  Ulrich Drepper  <drepper@myware>

	* fstrcmp.c:
	Revised version by Peter Miller.  Now based on GNU diff's version
	of this algorithm.

Wed Sep 27 20:18:44 1995  Ulrich Drepper  <drepper@myware>

	* system.h: Include sys/types.h for those old SysV systems out there.
	Reported by Francesco Potorti`.

Mon Sep 25 22:26:28 1995  Ulrich Drepper  <drepper@myware>

	* obstack.h (ptrdiff_t):
	Don't define unless HAVE_PTRDIFF_T is not defined.  This
	solves problems with Sun's compiler.  Reported by Marcus Daniels.

Mon Sep 18 10:45:48 1995  Ulrich Drepper  <drepper@myware>

	* fstrcmp.h, fstrcmp.c: Initial revision

Sun Sep 17 23:37:15 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in: Add fstrcmp.[ch] to libgettext.

	* system.h (open_po_file): Remove unused `use_path' parameter.

	* hash.c:
	Rewrite for uniform return values: < 0 for error cases, else >= 0.

	* Makefile.in: hash.[ch] moved from src/ to lib/ subdirectory.

Mon Aug 28 10:05:31 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in: Remove Emacs hints.

	* Makefile.in (libnlsut.a): Use $@ instead of full name.

Sat Aug 19 17:37:24 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (install-src): Make depend on `all'.

Tue Aug 15 05:51:25 1995  Ulrich Drepper  <drepper@myware>

	* system.h (xgetcwd): Remove prototype.

Mon Aug 14 23:52:41 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (install-src): New no-op goal.

Wed Aug  9 10:05:09 1995  Ulrich Drepper  <drepper@myware>

	* system.h (MAX):
	Mark GCC variant with __extension__ and change typeof to __typeof__.

Tue Aug  8 21:02:28 1995  Ulrich Drepper  <drepper@myware>

	* strcasecmp.c: Initial revision.

	* Makefile.in (SOURCES): Add strcasecmp.c.

Mon Aug  7 21:17:51 1995  Ulrich Drepper  <drepper@myware>

	* strcspn.c: Initial revision.

	* Makefile.in (SOURCES): Add strcspn.c.

Fri Aug  4 15:44:00 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (dist): Remove `copying instead' message.

Wed Aug  2 18:51:33 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (ID, TAGS): Do not use $^.

Tue Aug  1 20:07:40 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (distclean): Remove ID file.

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

Wed Jul 19 23:54:32 1995  Ulrich Drepper  <drepper@myware>

	* strtol.c: Change copyright from LGPL to GPL.

Tue Jul 18 20:09:04 1995  Ulrich Drepper  <drepper@myware>

	* strtol.c (ULONG_MAX): Define if not defined in system header.
	Reported by Francesco Potorti`.

	* printf-parse.h (parse_one_spec): Define prototype.

	* obstack.h: Put stddef.h include statement back in.

Tue Jul 18 00:19:54 1995  Ulrich Drepper  <drepper@myware>

	* vasprintf.c, strtol.c, obstack.c, getopt1.c, getopt.c, system.h,
	printf.h, obstack.h, getline.h: Uniform test for __STDC__.

Mon Jul 17 01:13:09 1995  Ulrich Drepper  <drepper@myware>

	* system.h (HAVE_MALLOC_H):
	Remove obsolete #else case.  Was needed when we tried
	to define free ourself.

	* system.h, error.h, strtoul.c, printf-parse.h, memmove.c,
	getline.h: Add `Free' to Software Foundation.

	* getline.h:
	Remove unneeded comment after #endif.  We now use indentation.

	* getline.c: Indent preprocessor directives.

	* strtol.c (NULL): Define manualy if not defined in any included file.

Sat Jul 15 23:59:26 1995  Ulrich Drepper  <drepper@myware>

	* obstack.h: Add accidentally removed #endif.

Sat Jul 15 23:31:45 1995  Ulrich Drepper  <drepper@myware>

	* vasprintf.c, printf-prs.c, obstack.h, obstack.c, memmove.c,
	printf.h, printf-parse.h:
	Exchange old LGPL against new GPL (no LGPL code in normal packages).

	* getline.h: Add copyright.

	* strtoul.c, strtol.c: Initial revision

	* obstack.h (ptrdiff_t):
	Don't include stddef.h.  Try to get it with sys/types.h and
	if _PTRDIFF_T and ptrdiff_t are not defined, define it to off_t
	(which is at least defined in config.h).

	* system.h (HAVE_STDLIB_H):
	Is not useful if STDC_HEADERS is not also defined.

Sat Jul 15 00:49:22 1995  Ulrich Drepper  <drepper@myware>

	* error.h: Correct definition of size_t: don't try to include
	stddef.h, but instead use sys/types.  If it is not found here,
	the config.h file will define it.

	* system.h: Load <stdlib.h> before defining prototypes.  This
	avoids problems with size_t not defined in the prototypes.

	* printf-parse.h (find_spec): Handle missing mblen function.

Thu Jul 13 22:28:38 1995  Ulrich Drepper  <drepper@myware>

	* system.h (MAX):
	Move definition to end to reduce possibility of redefinition.

	* whoami.c (get_username, get_hostname, get_submitter):
	Use K&R prototypes.

	* vasprintf.c: Include config.h.

	* printf.h (printf_info):
	Use `char' and `unsigned' instead of `unsigned char' and
	`unsigned int' resp. to help these dumb K&R compilers.

	* printf-parse.h:
	Compilers other than GCC don't have `long long', K&R compiler
	even don't have	`long double'.

Thu Jul 13 01:41:41 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (check): New goal.

Tue Jul 11 21:37:19 1995  Ulrich Drepper  <drepper@myware>

	* vasprintf.c (HAVE_STRTOUL):
	Not needed anymore because we substitute strtoul if not present.

Tue Jul 11 01:34:06 1995  Ulrich Drepper  <drepper@myware>

	* whoami.c: Define NULL is necessary.

	* obstack.h: Protect inclusion of stddef and define ptrdiff_t if
	necessary.

	* memmove.c: Include sys/types.h and perhaps stdlib.h instead of
	stddef.h for getting size_t defined.

	* system.h: Don't define free, qsort, and strtol when no header
	file is available.
	Define EXIT_{FAILURE,SUCCESS} after stdlib.h is	included.

	* printf.h: Protect non-ANSI header inclusion.
	Protect __P definition.
	Don't use __const in prototypes.

	* printf-prs.c: Include config.h.
	Protect stdlib.h inclusion.

	* printf-parse.h: Protect header inclusion for non-ANSI environments.
	Protect and de-GCC-ify MAX/MIN definition.

	* Makefile.in (SOURCES): New files: strtol.c and strtoul.c.
	Depend $(OBJECT) on config.h,, instead of $(LIBOBJS).
	Better dependency for printf-prs.o.

Tue Jul  4 22:09:00 1995  Ulrich Drepper  <drepper@myware>

	* Makefile.in (SOURCES): add memmove.c.

	* memmove.c: Initial revision.

	* error.h: Make size_t definition correct for !__STDC__.
	Include <stddef.h> for getting size_t defined.

	* vasprintf.c: Don't use strtoul if !HAVE_STRTOUL.

	* system.h: Include <stdlib.h> also if defined HAVE_STDLIB_H.
	Make sure that qsort, free and strtoul are prototyped.

Mon Jul  3 15:02:50 1995  Ulrich Drepper  <drepper@myware>

	* system.h: system.h (MAX): don't use GCC feature if !__STDC__.
	Fix typo in EXIT_FAILURE defintion.

	* xmalloc.c: Include prototype for calloc.c.

	* Makefile.in (INCLUDES): even better path list.
	(INCLUDES): remove unnecessary paths.
	Correct path to original version.

Sun Jul  2 02:01:43 1995  Ulrich Drepper  <drepper@myware>

	* First official release.  This directory contains supplementary
	code taken from GNU C Library and other package's lib/
	directories.
