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

	* gettext-0.15 released.

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

	* gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number.

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

	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:0:2.

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

	* Makefile.am (MOSTLYCLEANFILES): New variable.

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

	* write-csharp.c (msgdomain_write_csharp): Update.
	* write-java.c (msgdomain_write_java): Update.

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

	* write-csharp.c (msgdomain_write_csharp): Update.
	* write-java.c (msgdomain_write_java): Likewise.

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

	Assume <dirent.h> on all Unix platforms. Assume closedir works.
	* msginit.c: Don't include <sys/ndir.h>, <sys/dir.h>, <ndir.h>.
	(find_pot): Use closedir directly.

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

	Assume correct S_ISDIR macro.
	* write-csharp.c: Remove test of STAT_MACROS_BROKEN.
	* write-java.c: Likewise.

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

	Assume autoconf >= 2.60.
	* Makefile.am (localedir): Remove variable.

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

	* x-sh.c (read_word): Recognize the Bash process substitution syntax.

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

	* x-sh.c (read_word): Recognize $(...) and $((...)) also inside
	double-quoted strings. 
	Reported by Michelle Konzack <linux4michelle@freenet.de>.

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

	* msgl-check.c (check_plural_eval): Declare 'distribution' as volatile,
	so that it is unaffected by longjmp.

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

	* xgettext.c (arglist_parser_done): Cast length argument for format
	string.

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

	* x-ycp.c (phase5_pushback, phase5_pushback_length): New variables.
	(phase5_get): Renamed from x_ycp_lex.
	(phase5_unget): New function.
	(phase8_get): New function.
	(extract_parenthesized): Inside i18n construct, use phase8_get
	instead of phase5_get.
	Reported by Karl Eichwalder <ke@suse.de>.

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

	* msgfilter.c: Include <sys/select.h> also on Minix.
	Reported by Leonard den Ottolander <leonard@den.ottolander.nl>.

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

	Cygwin portability.
	* hostname.c (WIN32_NATIVE): Renamed from WIN32.

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

	* Makefile.am (CLEANFILES): Add gettext-po.h.

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

	* xgettext.c (main): Use a size_t index variable for looping over the
	files.
	(arglist_parser_done): Fix a format string.

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

	* msgfilter.c (main): Change type of i.

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

	* Makefile.am: Test flag WOE32DLL instead of CYGWINDLL.

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

	* x-php.c (x_php_lex): Fix handling of here documents.
	Reported by Gaëtan Frenoy <gaetan@frenoy.net>.

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

	* write-csharp.c [MINGW]: Include <io.h>.
	(mkdir): Define using _mkdir.
	* write-java.c [MINGW]: Include <io.h>.
	(mkdir): Define using _mkdir.

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

	* gettext-po.h.in: Renamed from gettext-po.h.
	* Makefile.am: Treat condition WOE32DLL like MINGW. Update file names.
	(libgettextsrc_la_SOURCES, libgettextsrc_la_LDFLAGS): Modify for
	Cygwin.
	libgettextpo_la_SOURCES, libgettextpo_la_LDFLAGS): Likewise.
	(BUILT_SOURCES): Add gettext-po.h.
	(EXTRA_DIST): Add gettext-po.h.in.
	(gettext-po.h): New rule.

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

	* Makefile.am (format_CFLAGS): Remove variable.
	(format.lo): Remove variable.
	(FORMAT_SOURCE) [MINGW]: Use ../mingw/c++format.cc instead of format.c.

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

	* plural-eval.h (USE_SIGINFO): Don't define on Cygwin.

2006-05-02  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* write-mo.h: Remove DLL_VARIABLE declarations, not needed since
	write-mo.c is not compiled into a shared library.
	* lang-table.h: Likewise.

2006-05-02  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* filters.h: Add C++ guards.

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

	* x-perl.c (extract_variable): Fix syntax error introduced on
	2005-10-03.

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

	* format-awk.c: Include xvasprintf.h instead of xerror.h.
	* format-elisp.c: Likewise.
	* format-librep.c: Likewise.
	* format-pascal.c: Likewise.
	* format-php.c: Likewise.
	* format-tcl.c: Likewise.

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

	* write-java.c (msgdomain_write_java): Specify source-version 1.3 and
	require target-version 1.1.

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

	* msginit.c (main): Simplify by use of xasprintf().
	* write-java.c: Include xvasprintf.h.
	(msgdomain_write_java): Simplify by use of xasprintf().
	* x-c.c: Include xvasprintf.h.
	(phase8a_get): Simplify by use of xasprintf().
	* xgettext.c: Don't include stpcpy.h.
	(remember_a_message, remember_a_message_plural): Simplify by use of
	xasprintf().

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

	* msgfmt.c: Include xvasprintf.h.
	* msginit.c: Likewise.
	* msgl-cat.c: Likewise.
	* msgl-charset.c: Likewise.
	* po-xerror.c: Likewise.
	* x-csharp.c: Likewise.
	* x-glade.c: Likewise.
	* x-python.c: Likewise.
	* xgettext.c: Likewise.
	* format-boost.c: Include xvasprintf.h instead of xerror.h.
	* format-c.c: Likewise.
	* format-csharp.c: Likewise.
	* format-gcc-internal.c: Likewise.
	* format-java.c: Likewise.
	* format-lisp.c: Likewise.
	* format-perl.c: Likewise.
	* format-python.c: Likewise.
	* format-qt.c: Likewise.
	* format-scheme.c: Likewise.
	* format-ycp.c: Likewise.
	* msgexec.c: Likewise.
	* msgl-check.c: Likewise.
	* msgl-iconv.c: Likewise.
	* open-po.c: Likewise.
	* po-charset.c: Likewise.
	* po-lex.c: Likewise.
	* po-time.c: Likewise.
	* read-po-abstract.c: Likewise.
	* read-properties.c: Likewise.
	* read-stringtable.c: Likewise.
	* write-po.c: Likewise.

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

	* msginit.c (project_id, project_id_version, get_user_email): Close
	the FILE in case of I/O error.

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

	* write-java.c (msgdomain_write_java): Don't fclose the FILE after
	fwriteerror signalled a failure.
	* write-csharp.c (msgdomain_write_csharp): Likewise.

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

	* msgexec.c: Include <unistd.h> unconditionally.
	* msgfilter.c: Likewise.
	* msggrep.c: Likewise.
	* msginit.c: Likewise.
	* hostname.c: Likewise.
	* urlget.c: Likewise.

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

	* Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs).

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

	* write-csharp.c: Include clean-temp.h. Don't include unistd.h,
	mkdtemp.h, tmpdir.h, pathmax.h, fatal-signal.h, xallocsa.h.
	(cleanup_list): Remove variable.
	(cleanup): Remove function.
	(msgdomain_write_csharp): Simplify handling of temporary directory.
	* write-java.c: Include clean-temp.h. Don't include unistd.h,
	mkdtemp.h, tmpdir.h, pathmax.h, fatal-signal.h.
	(cleanup_list): Remove variable.
	(cleanup): Remove function.
	(msgdomain_write_java): Simplify handling of temporary directory.

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

	* x-glade.c (p_XML_GetCurrentLineNumber, p_XML_GetCurrentColumnNumber):
	Declare differently for expat >= 2.0.0.
	(load_libexpat): Search for a differently library name for expat >=
	2.0.0.
	(do_extract_glade): Update.
	Reported by Mike Frysinger <vapier@gentoo.org>.

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

	* hostname.c: Include propername.h.
	(main): Call proper_name.
	* msgattrib.c: Include propername.h.
	(main): Call proper_name.
	* msgcat.c: Include propername.h.
	(main): Call proper_name.
	* msgcmp.c: Include propername.h.
	(main): Call proper_name.
	* msgcomm.c: Include propername.h.
	(main): Call proper_name.
	* msgconv.c: Include propername.h.
	(main): Call proper_name.
	* msgen.c: Include propername.h.
	(main): Call proper_name.
	* msgexec.c: Include propername.h.
	(main): Call proper_name.
	* msgfilter.c: Include propername.h.
	(main): Call proper_name.
	* msgfmt.c: Include propername.h.
	(main): Call proper_name.
	* msggrep.c: Include propername.h.
	(main): Call proper_name.
	* msginit.c: Include propername.h.
	(main): Call proper_name.
	* msgmerge.c: Include propername.h.
	(main): Call proper_name.
	* msgunfmt.c: Include propername.h.
	(main): Call proper_name.
	* msguniq.c: Include propername.h.
	(main): Call proper_name.
	* recode-sr-latin.c: Include propername.h.
	(main): Call proper_name and proper_name_utf8.
	* urlget.c: Include propername.h.
	(main): Call proper_name.
	* xgettext.c: Include propername.h.
	(main): Call proper_name.

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

	* xgettext.c (main): Treat --keyword= like --keyword.

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

	* filters.h: New file.
	* filter-sr-latin.c: New file, based on code from Danilo Šegan.
	* recode-sr-latin.c: New file.
	* msgfilter.c: Include filters.h, msgl-iconv.h, po-charset.h.
	(filter): New variable.
	(main): Recognize recode-sr-latin as built-in.
	(generic_filter): New function, extracted from process_string.
	(process_string): Call the filter.
	* Makefile.am (bin_PROGRAMS): Add recode-sr-latin.
	(noinst_HEADERS): Add filters.h.
	(msgfilter_SOURCES): Add filter-sr-latin.c.
	(recode_sr_latin_SOURCES, recode_sr_latin_LDADD,
	recode_sr_latin_CPPFLAGS, recode_sr_latin_LDFLAGS): New variables.
	* Makefile.msvc (PROGRAMS): Add recode-sr-latin.exe.
	(msgfilter_OBJECTS): Add filter-sr-latin.obj.
	(recode_sr_latin_OBJECTS): New variable.
	(filter-sr-latin.obj, recode-sr-latin.obj): New rules.
	(recode-sr-latin.exe): New rule.
	(install): Also install recode-sr-latin.exe.
	(uninstall): Also uninstall recode-sr-latin.exe.
	* Makefile.vms (PROGRAMS): Add recode-sr-latin.exe.
	(msgfilter_OBJECTS): Add filter-sr-latin.obj.
	(recode_sr_latin_OBJECTS): New variable.
	(filter-sr-latin.obj, recode-sr-latin.obj): New rules.
	(recode-sr-latin.exe): New rule.
	(install): Also install recode-sr-latin.exe.
	(uninstall): Also uninstall recode-sr-latin.exe.

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

	* msgl-iconv.c: Include iconvstring.h. Don't include <errno.h>.
	(iconv_string): Remove function, moved to ../lib/.

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

	* xgettext.h (struct callshape): New field 'xcomments'.
	(struct partial_call): New field 'xcomments'.
	* xgettext.c (split_keywordspec): Accept the ID:ARGNUM...,"XCOMMENT"
	syntax.
	(insert_keyword_callshape): Store the xcomments from the new shape.
	(arglist_parser_alloc, arglist_parser_clone): Update.
	(arglist_parser_done): After calling remember_a_message, attach the
	specified extracted comments.
	* x-perl.c (extract_variable): Update.
	Suggested by Behdad Esfahbod <behdad@cs.toronto.edu>.

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

	* xgettext.c (arglist_parser_done): Use error_at_line instead of error.

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

	* msggrep.c (grep_task): Increment size.
	(long_options): Add --extracted-comment option.
	(main): Handle --extracted-comment option.
	(no_pass, usage): Update.
	(is_message_selected_no_invert): Implement matching on extracted
	comments.
	Suggested by Behdad Esfahbod <behdad@cs.toronto.edu>.

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

	Handle GNOME glib context syntax.
	* xgettext.h (struct callshape): Add fields argnum1_glib_context,
	argnum2_glib_context.
	(struct partial_call): Add fields argnum1_glib_context,
	argnum2_glib_context.
	* xgettext.c (split_keywordspec): Recognize suffix 'g' and set the
	argnum1_glib_context, argnum2_glib_context fields.
	(insert_keyword_callshape, arglist_parser_alloc, arglist_parser_clone):
	Update.
	(arglist_parser_done): When suffix 'g' was specified, split off the
	context from the msgid and/or msgid_plural.
	* x-perl.c (extract_variable): Update.
	Suggested by Danilo Šegan <danilo@gnome.org>.

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

	* xgettext.c (set_format_flags_from_context): Break long line.

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

	* message.c (fuzzy_search_goal_function): Use 'volatile double'.

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

	Speed up msgmerge with large compendia.
	* message.h (message_list_free): Add keep_messages argument.
	(message_list_list_free): Add keep_level argument.
	(fuzzy_search_goal_function): New declaration.
	(FUZZY_THRESHOLD): New macro.
	* message.c (message_list_free): Add keep_messages argument.
	(fuzzy_search_goal_function): New function, extracted from
	message_list_search_fuzzy_inner.
	(message_list_search_fuzzy_inner): Use it.
	(message_list_search_fuzzy): Use symbolic value FUZZY_THRESHOLD.
	(message_list_list_free): Comment in. Add keep_level argument.
	(message_list_list_search_fuzzy): Comment out. Use symbolic value
	FUZZY_THRESHOLD.
	(msgdomain_free): Update.
	(msgdomain_list_search_fuzzy): Use symbolic value FUZZY_THRESHOLD.
	* po-charset.h: Include stddef.h.
	(character_iterator_t): New type.
	(po_charset_character_iterator): New declaration.
	* po-charset.c (char_iterator, euc_character_iterator,
	euc_jp_character_iterator, euc_tw_character_iterator,
	big5_character_iterator, big5hkscs_character_iterator,
	gbk_character_iterator, gb18030_character_iterator,
	shift_jis_character_iterator, johab_character_iterator,
	utf8_character_iterator, po_charset_character_iterator): New functions.
	* msgl-fsearch.h: New file.
	* msgl-fsearch.c: New file.
	* msgmerge.c: Include po-charset.h, msgl-fsearch.h.
	(compendium_filenames): New variable.
	(compendium): Also put the filename into compendium_filenames.
	(definitions_ty): New structure type.
	(definitions_init, definitions_init_findex, definitions_current_list,
	definitions_set_current_list, definitions_search,
	definitions_search_fuzzy, definitions_destroy): New functions.
	(match_domain): Change type of 'definitions' argument.
	(merge): Also convert the compendium to UTF-8. Use definitions_init,
	definitions_set_current_list, definitions_destroy.
	* msgfmt.c (main): Update.
	* Makefile.am (noinst_HEADERS): Add msgl-fsearch.h.
	(msgmerge_SOURCES): Add msgl-fsearch.c.
	(msgmerge_LDADD): Link with MSGMERGE_LIBM.
	* Makefile.msvc (msgmerge_OBJECTS): Add msgl-fsearch.obj.
	(msgl-fsearch.obj): New rule.
	* Makefile.vms (msgmerge_OBJECTS): Add msgl-fsearch.obj.
	(msgl-fsearch.obj): New rule.
	Reported by Clytie Siddall <clytie@riverland.net.au>.

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

	* Makefile.am (CXXLINK) [!mingw]: Overwrite automake's value. Fixes
	unintended dependency on libstdc++ introduced on 2005-07-05.

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

	* lang-table.h: New file.
	* lang-table.c: New file, extracted from msginit.c.
	* msginit.c: Include lang-table.h.
	(englishname_of_language): Use language_table.
	* Makefile.am (noinst_HEADERS): Add lang-table.h.
	(msginit_SOURCES): Add lang-table.c.
	* Makefile.msvc (MSGINIT_OBJECTS): Add lang-table.obj.
	(lang-table.obj): New rule.
	* Makefile.vms (MSGINIT_OBJECTS): Add lang-table.obj.
	(lang-table.obj): New rule.

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

	* message.h (format_type): New enum value 'format_boost'.
	(NFORMATS): Increment.
	* message.c (format_language): Add format_boost entry.
	(format_language_pretty): Likewise.
	* format.h (formatstring_boost): New declaration.
	* format-boost.c: New file, based on format-c.c.
	* format.c (formatstring_parsers): Add formatstring_boost.
	* x-c.c (init_flag_table_c): Also register flags for boost-format.
	* xgettext.c (flag_table_cxx_qt, flag_table_cxx_boost): New variables.
	(recognize_format_boost): New variable.
	(main): Handle --boost option.
	(usage): Document --boost option.
	(xgettext_record_flag): Also fill flag_table_cxx_qt,
	flag_table_cxx_boost.
	(remember_a_message, remember_a_message_plural): In the heuristics,
	don't mark a string as c-format that is already known to be a qt-format
	or boost-format.
	(language_to_extractor): Use a flag_table_cxx_qt or
	flag_table_cxx_boost that is different from flag_table_c.
	* Makefile.am (FORMAT_SOURCE): Add format-boost.c.
	* Makefile.msvc (OBJECTS): Add format-boost.obj.
	(format-boost.obj): New rule.
	* Makefile.vms (OBJECTS): Add format-boost.obj.
	(format-boost.obj): New rule.
	* FILES: Update.

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

	* xgettext.c (xgettext_record_flag): When asked to set "qt-format",
	really set "qt-format", not "c-format". Fixes bug introduced on
	2003-10-19.

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

	Reduce the number of false positives produced by the c-format guessing
	heuristics.
	* format.h (struct formatstring_parser): Add 'is_unlikely_intentional'
	field.
	* format-awk.c (formatstring_awk): Update.
	* format-c.c (struct spec): Add 'unlikely_unintentional' field.
	(format_parse): Set unlikely_unintentional to true when encountering
	a "%...%" directive other than "%%".
	(format_is_unlikely_intentional): New function.
	(formatstring_c, formatstring_objc): Use it.
	* format-csharp.c (formatstring_csharp): Update.
	* format-elisp.c (formatstring_elisp): Update.
	* format-gcc-internal.c (formatstring_gcc_internal): Update.
	* format-java.c (formatstring_java): Update.
	* format-librep.c (formatstring_librep): Update.
	* format-lisp.c (formatstring_lisp): Update.
	* format-pascal.c (formatstring_pascal): Update.
	* format-perl.c (formatstring_perl): Update.
	* format-perl-brace.c (formatstring_perl_brace): Update.
	* format-php.c (format_php): Update.
	* format-python.c (formatstring_python): Update.
	* format-qt.c (formatstring_qt): Update.
	* format-scheme.c (formatstring_scheme): Update
	* format-sh.c (formatstring_sh): Update.
	* format-tcl.c (formatstring_tcl): Update.
	* format-ycp.c (formatstring_ycp, formatstring_smalltalk): Update.
	* xgettext.c (remember_a_message, remember_a_message_plural): Don't
	mark the message as c-format if the validity as c-format looks
	unintentional.

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

	* msgattrib.c (main): Update year in --version output.
	* msgcat.c (main): Likewise.
	* msgcmp.c (main): Likewise.
	* msgcomm.c (main): Likewise.
	* msgconv.c (main): Likewise.
	* msgen.c (main): Likewise.
	* msgexec.c (main): Likewise.
	* msgfilter.c (main): Likewise.
	* msgfmt.c (main): Likewise.
	* msggrep.c (main): Likewise.
	* msginit.c (main): Likewise.
	* msgmerge.c (main): Likewise.
	* msgunfmt.c (main): Likewise.
	* msguniq.c (main): Likewise.
	* xgettext.c (main): Likewise.

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

	* x-php.c (x_php_lex): Treat byte values >= 127 like alphabetic.
	Reported by Hagen Fritsch <itooktheredpill@gmx.de>.

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

	Tell Python developers to use named arguments in format strings.
	* format.h (get_python_format_unnamed_arg_count): New declaration.
	* format-python.c (get_python_format_unnamed_arg_count): New function.
	* xgettext.c (warn_format_string): New function.
	(remember_a_message, remember_a_message_plural): Call it.
	Suggested by Martin von Löwis.

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

	* msgl-iconv.c (iconv_message_list): Fix syntax error.
	Reported by Dave Patton <dpatton@confluence.org>.

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

	* Makefile.am (CSHARPCOMPFLAGS): Use value set by csharpcomp.m4.

2005-11-29  Colin Watson  <cjwatson@ubuntu.com>

	* msggrep.c (invert_match): New variable.
	(long_options): Add --invert-match option.
	(main): Handle --invert-match option.
	(usage): Document --invert-match option.
	(is_message_selected_no_invert): New function, extracted from
	is_message_selected.
	(is_message_selected): Call it. Handle match inversion.

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

	* write-csharp.c (write_csharp_code): Add culture_name argument.
	Emit an AssemblyCulture note for it.
	(msgdomain_write_csharp): Update.
	Suggested by Pepa <cerna.zelva@seznam.cz>.

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

	* plural-eval.h: New file.
	* plural-eval.c: Include plural-eval.h.
	(sigfpe_exit, sigfpe_code, sigfpe_handler, install_sigfpe_handler,
	uninstall_sigfpe_handler): New definitions, moved here from
	msgl-check.c.
	* msgl-check.c: Include plural.eval.h.
	(sigjmp_buf, sigsetjmp, siglongjmp, USE_SIGINFO): Move to plural-eval.h.
	(sigfpe_exit, sigfpe_code, sigfpe_handler, install_sigfpe_handler,
	uninstall_sigfpe_handler): Move to plural-eval.c.
	* Makefile.am (noinst_HEADERS): Add plural-eval.h.

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

	* msgl-check.c: Include c-ctype.h instead of ctype.h.
	(check_plural): Use c_isspace instead of isspace.
	* x-librep.c: Include c-ctype.h instead of ctype.h.
	(read_token): Use c_isxdigit instead of isxdigit.
	* x-rst.c: Include c-ctype.h instead of ctype.h.
	(extract_rst): Use c_isdigit instead of isdigit.
	* x-ycp.c: Don't include ctype.h.

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

	* plural-exp.c: Renamed from plural.c.
	* Makefile.am (libgettextsrc_la_SOURCES): Update.

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

	Disambiguate overloaded function calls according to argument count.
	* xgettext.h (struct callshape): Add field 'argtotal'.
	(struct partial_call): Likewise.
	(arglist_parser_done): Add argnum argument.
	* xgettext.c (split_keywordspec): Recognize NNt syntax and fill
	argtotal.
	(insert_keyword_callshape, arglist_parser_alloc, arglist_parser_clone):
	Update.
	(arglist_parser_decidedp): Compare also the argtotal if given.
	(arglist_parser_done): Add argnum argument.
	* x-awk.c (extract_parenthesized): Pass arg count to
	arglist_parser_done.
	* x-c.c (extract_parenthesized): Likewise.
	* x-csharp.c (extract_parenthesized): Likewise.
	* x-elisp.c (read_object): Likewise.
	* x-java.c (extract_parenthesized): Likewise.
	* x-librep.c (read_object): Likewise.
	* x-lisp.c (read_object): Likewise.
	* x-perl.c (extract_variable): Update.
	(extract_balanced): Pass arg count to arglist_parser_done.
	* x-php.c (extract_parenthesized): Likewise.
	* x-python.c (extract_parenthesized): Likewise.
	* x-scheme.c (read_object): Likewise.
	* x-sh.c (read_command): Likewise.
	* x-tcl.c (read_command): Likewise.
	Stimulated by a patch from
	Chusslove Illich (Часлав Илић) <caslav.ilic@gmx.net>.

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

	* msginit.c (catalogname_for_locale, language_of_locale): Drop support
	of CEN locale name syntax.

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

	* format.h (check_msgid_msgstr_format): Add plural_distribution
	argument.
	* format.c (check_msgid_msgstr_format): Add plural_distribution
	argument. Use it for index dependent strictness.
	* msgl-check.h (check_message): Add plural_distribution argument.
	* msgl-check.c: Include xalloc.h.
	(check_plural_eval): Create a plural_distribution array as additional
	output parameter.
	(check_plural): Return plural_distribution array as additional output
	parameter.
	(check_pair, check_message): Add plural_distribution argument.
	(check_message_list): Pass the plural_distribution from check_plural
	to check_message.
	* gettext-po.c (po_message_check_format): Update.

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

	Combine all msgfmt checks in a single place.
	* format.h (check_msgid_msgstr_format): Change return type to int.
	* format.c (check_msgid_msgstr_format): Return the number of errors.
	* msgl-check.h (check_plural): Remove declaration.
	* msgl-check.c (check_plural): Make static. Return the number of
	errors.
	(check_pair): Return the number of errors.
	(check_message_list): Likewise.
	* msgfmt.c (main): Perform the message checks here, after all files
	were read. Call check_message_list instead of check_plural and
	check_message. Emit statistics of fatal errors.
	(msgfmt_frob_new_message): Don't call check_message here.

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

	* msgl-check.h (check_message_list): New declaration.
	* msgl-check.c (check_message_list): New function.
	* gettext-po.c (po_file_check_all, po_message_check_all): Call
	check_message_list instead of check_message and check_plural.

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

	Fix handling of obsolete messages.
	* msgl-check.c (check_plural): Ignore obsolete messages.
	* gettext-po.c (po_file_check_all, po_message_check_all,
	po_message_check_format): Likewise.

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

	* msgl-check.h (check_message): Remove msgstr_pos argument.
	* msgl-check.c (check_pair, check_message): Remove msgstr_pos argument.
	* msgfmt.c (msgfmt_frob_new_message): Update.
	* gettext-po.c (po_file_check_all, po_message_check_all,
	po_message_check_format): Update.

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

	Add support for contexts in xgettext.
	* xgettext.h: Include stdbool.h.
	(struct callshape): New structure type.
	(split_keywordspec): Return a struct callshape, not two integers,
	by reference.
	(struct callshapes): New structure type.
	(insert_keyword_callshape): New declaration.
	(remember_a_message): Add msgctxt argument.
	(struct partial_call): New structure type.
	(struct arglist_parser): New structure type.
	(arglist_parser_alloc, arglist_parser_clone, arglist_parser_remember,
	arglist_parser_decidedp, arglist_parser_done): New declarations.
	* xgettext.c (split_keywordspec): Return a struct callshape, not two
	integers, by reference. Handle the notation Nc for a context argument.
	(insert_keyword_callshape): New function.
	(remember_a_message): Add msgctxt argument. Free both strings when
	the message is excluded.
	(arglist_parser_alloc, arglist_parser_clone, arglist_parser_remember,
	arglist_parser_decidedp, arglist_parser_done): New functions.
	* x-awk.c (x_awk_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(extract_parenthesized): Replace commas_to_skip, plural_commas
	arguments with a single argparser argument. Use arglist_parser_* API.
	(extract_awk): Update.
	* x-c.c (add_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(init_keywords): Register the new functions [d[c]][n]pgettext.
	(init_flag_table_c, init_flag_table_objc): Likewise.
	(struct xgettext_token_ty): Replace argnum1, argnum2 with a callshapes
	pointer.
	(x_c_lex): Update.
	(extract_parenthesized): Replace commas_to_skip, plural_commas
	arguments with a single argparser argument. Use arglist_parser_* API.
	(extract_whole_file): Update.
	* x-csharp.c (x_csharp_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(extract_parenthesized): Replace commas_to_skip, plural_commas
	arguments with a single argparser argument. Use arglist_parser_* API.
	(extract_csharp): Update.
	* x-elisp.c (x_elisp_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(read_object): Use arglist_parser_* API.
	* x-glade.c (start_element_handler, end_element_handler): Update.
	* x-java.c (x_java_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(extract_parenthesized): Replace commas_to_skip, plural_commas
	arguments with a single argparser argument. Use arglist_parser_* API.
	(extract_java): Update.
	* x-librep.c (x_librep_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(read_object): Use arglist_parser_* API.
	* x-lisp.c (x_lisp_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(read_object): Use arglist_parser_* API.
	* x-perl.c (x_perl_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(extract_balanced): Replace arg_sg, arg_pl arguments with arg,
	argparser arguments. Use arglist_parser_* API.
	(extract_variable, interpolate_keywords, extract_perl): Update.
	* x-php.c (x_php_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(extract_parenthesized): Replace commas_to_skip, plural_commas
	arguments with a single argparser argument. Use arglist_parser_* API.
	(extract_php): Update.
	* x-python.c (x_python_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(extract_parenthesized): Replace commas_to_skip, plural_commas
	arguments with a single argparser argument. Use arglist_parser_* API.
	(extract_python): Update.
	* x-rst.c (extract_rst): Update.
	* x-scheme.c (x_scheme_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(read_object): Use arglist_parser_* API.
	* x-sh.c (x_sh_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(read_word): Update.
	(read_command): Use arglist_parser_* API.
	* x-smalltalk.c (extract_smalltalk): Update.
	* x-tcl.c (x_tcl_keyword): Use callshape API: split_keywordspec,
	insert_keyword_callshape.
	(read_command): Use arglist_parser_* API.
	* x-ycp.c (extract_parenthesized): Update.

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

	* xgettext.h (savable_comment_to_xgettext_comment): Remove
	declaration.
	(remember_a_message, remember_a_message_plural): Add a comment
	argument.
	* xgettext.c (savable_comment_to_xgettext_comment): Make static.
	(remember_a_message): Add comment argument. Call
	savable_comment_to_xgettext_comment and savable_comment_reset at the
	end.
	(remember_a_message_plural): Add comment argument. Call
	savable_comment_to_xgettext_comment and xgettext_comment_reset,
	savable_comment_reset at the end.
	* x-awk.c (extract_parenthesized): Pass comment to remember_a_message.
	* x-c.c (extract_parenthesized): Likewise.
	* x-csharp.c (extract_parenthesized): Likewise.
	* x-elisp.c (read_object): Likewise.
	* x-glade.c (start_element_handler, end_element_handler): Likewise.
	* x-java.c (extract_parenthesized): Likewise.
	* x-librep.c (read_object): Likewise.
	* x-lisp.c (read_object): Likewise.
	* x-perl.c (extract_variable, interpolate_keywords, extract_balanced):
	Likewise.
	* x-php.c (extract_parenthesized): Likewise.
	* x-python.c (extract_parenthesized): Likewise.
	* x-scheme.c (read_object): Likewise.
	* x-sh.c (read_word, read_command): Likewise.
	* x-smalltalk.c (extract_smalltalk): Likewise.
	* x-tcl.c (read_command): Likewise.
	* x-ycp.c (extract_parenthesized): Likewise.
	* x-rst.c (extract_rst): Update.

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

	* xgettext.h (xgettext_comment_add, xgettext_comment,
	xgettext_comment_reset): Remove declarations.
	* xgettext.c (xgettext_comment_add, xgettext_comment,
	xgettext_comment_reset): Make static.

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

	Use savable_comment_* API instead of xgettext_comment_* API.
	* x-awk.c (phase2_getc): Call savable_comment_add instead of
	xgettext_comment_add.
	(x_awk_lex): Call savable_comment_reset instead of
	xgettext_comment_reset.
	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-elisp.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(read_object): Call savable_comment_reset instead of
	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-glade.c (start_element_handler, end_element_handler): Call
	savable_comment_to_xgettext_comment and savable_comment_reset around
	remember_a_message. Call savable_comment_reset instead of
	xgettext_comment_reset.
	(comment_handler): Call savable_comment_add instead of
	xgettext_comment_add.
	* x-librep.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(read_object): Call savable_comment_reset instead of
	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-lisp.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(read_object): Call savable_comment_reset instead of
	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-perl.c (phase2_getc): Call savable_comment_add instead of
	xgettext_comment_add.
	(extract_variable, interpolate_keywords): Call
	savable_comment_to_xgettext_comment and savable_comment_reset around
	remember_a_message.
	(x_perl_prelex): Call savable_comment_reset instead of
	xgettext_comment_reset.
	(extract_balanced): Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-php.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(x_php_lex): Call savable_comment_reset instead of
	xgettext_comment_reset.
	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-scheme.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(read_object): Call savable_comment_reset instead of
	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-sh.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(read_word): Call savable_comment_reset instead of
	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	(read_command): Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-smalltalk.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(phase2_get): Call savable_comment_reset instead of
	xgettext_comment_reset.
	(extract_smalltalk): Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-tcl.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(read_word): Call savable_comment_reset instead of
	xgettext_comment_reset.
	(read_command): Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.
	* x-ycp.c (phase2_getc): Call savable_comment_add instead of
	xgettext_comment_add.
	(x_ycp_lex): Call savable_comment_reset instead of
	xgettext_comment_reset.
	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
	savable_comment_reset around remember_a_message.

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

	* message.c (message_list_hash_insert_entry): Update.

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

	* message.c (message_list_alloc, message_list_free,
	message_list_hash_insert_entry, message_list_remove_if_not,
	message_list_msgids_changed, message_list_search): Update.
	* write-qt.c (write_qm): Update.
	* xgettext.c (flag_context_list_table_lookup,
	flag_context_list_table_insert): Update.
	* x-awk.c (x_awk_keyword, extract_parenthesized): Update.
	* x-c.c (add_keyword, x_c_lex): Update.
	* x-csharp.c (x_csharp_keyword, extract_parenthesized: Update.
	* x-elisp.c (x_elisp_keyword, read_object): Update.
	* x-glade.c (x_glade_keyword, start_element_handler): Update.
	* x-java.c (x_java_keyword, extract_parenthesized): Update.
	* x-librep.c (x_librep_keyword, read_object): Update.
	* x-lisp.c (x_lisp_keyword, read_object): Update.
	* x-perl.c (x_perl_keyword, extract_variable, interpolate_keywords,
	extract_balanced): Update.
	* x-php.c (x_php_keyword, extract_parenthesized): Update.
	* x-python.c (x_python_keyword, extract_parenthesized): Update.
	* x-scheme.c (x_scheme_keyword, read_object): Update.
	* x-sh.c (x_sh_keyword, read_command): Update.
	* x-tcl.c (x_tcl_keyword, read_command): Update.

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

	Support for context dependent translations in PO files.
	* message.h (MSGCTXT_SEPARATOR): New macro.
	(struct message_ty): Add 'msgctxt' field.
	(message_alloc): Add msgctxt argument.
	(is_header): New macro.
	(message_list_search, message_list_search_fuzzy,
	message_list_list_search, message_list_list_search_fuzzy,
	msgdomain_list_search, msgdomain_list_search_fuzzy): Add msgctxt
	argument.
	* message.c: Include xallocsa.h.
	(message_alloc): Add msgctxt argument.
	(message_copy): Update.
	(message_list_hash_insert_entry): New function.
	(message_list_append, message_list_prepend, message_list_insert_at,
	message_list_msgids_changed): Use it.
	(message_list_search): Add msgctxt argument.
	(message_list_search_fuzzy_inner): Likewise.
	(message_list_search_fuzzy): Likewise.
	(message_list_list_search): Likewise.
	(message_list_list_search_fuzzy): Likewise.
	* msgl-ascii.c (is_ascii_message): Also test the msgctxt.
	* write-po.c (message_print): Warn if some msgctxt has non-ASCII
	characters. Write out the msgctxt.
	(message_print_obsolete): Likewise.
	(msgdomain_list_print_po): Use is_header macro.
	(msgdomain_list_print): Likewise. Bail out if contexts are present and
	cannot be stored in the given output format.
	* write-properties.c (write_message): Use is_header macro.
	* po-lex.c: Include message.h.
	(keyword_p): Also recognize 'msgctxt'.
	(po_gram_lex): Bail out if a string contains the EOT character.
	* read-po-abstract.h (struct abstract_po_reader_class_ty): Add msgctxt
	argument to directive_message function pointer.
	(po_callback_message): Add msgctxt argument.
	* read-po-abstract.c (call_directive_message, po_callback_message): Add
	msgctxt argument.
	* po-gram-gen.y (do_callback_message): Add msgctxt argument. Use
	is_header macro.
	(MSGCTXT): New token type.
	(message_intro, MSGCTXT): Declare return types.
	(message): Use message_intro instead of just MSGID.
	(message_intro): New nonterminal reduction rules.
	* read-properties.c (properties_parse): Update.
	* read-stringtable.c (stringtable_parse): Update.
	* read-po.h (struct default_po_reader_class_ty): Add msgctxt argument
	to add_message field.
	(default_directive_message, default_add_message): Likewise.
	* read-po.c (call_add_message, default_directive_message,
	default_add_message): Add msgctxt argument.
	* msgl-iconv.c (convert_msgid): Also convert the msgctxt.
	(iconv_message_list): Use is_header macro. Test also the msgctxt for
	non-ASCII-ness.
	* msgl-cat.c (is_message_selected, is_message_needed): Use is_header
	macro.
	(catenate_msgdomain_list): Likewise. Update.
	* msgl-equal.c (message_equal): Likewise. Also compare the msgctxt.
	* msgcmp.c (is_message_selected): Use is_header macro.
	(match_domain): Update.
	(compare): Use is_header macro.
	* msgmerge.c (message_merge, match_domain): Use is_header macro.
	Update.
	(merge): Update.
	* msgattrib.c (is_message_selected): Use is_header macro.
	(process_message_list): Likewise. Update.
	* msgl-charset.c (compare_po_locale_charsets): Use is_header macro.
	* msgexec.c (process_string): Also set or unset MSGEXEC_MSGCTXT
	variable.
	* msgfilter.c (process_message): Use is_header macro.
	* msggrep.c (grep_task): Increase size from 3 to 4.
	(long_options): Add --msgctxt option.
	(main): Accept -J/--msgctxt option. Update grep_pass numbers.
	(no_pass): Update.
	(usage): Mention -J option.
	(is_message_selected): Use is_header macro. Perform a new grep pass on
	the msgctxt.
	* msginit.c (fill_header): Use is_header macro. Update.
	(update_msgstr_plurals): Update.
	* read-mo.c (read_mo_file): Split msgid into msgctxt and msgid. Update.
	* read-tcl.c (msgdomain_read_tcl): Use is_header macro.
	* msgl-check.c (check_plural): Update.
	(check_message): Use is_header macro.
	* write-mo.c (write_table): Write msgid with msgctxt, instead of just
	the msgid.
	* write-java.c: Include xerror.h.
	(write_java_code): Update.
	(msgdomain_write_java): Give error if some entries have a context.
	* write-csharp.c: Include xerror.h.
	(write_csharp_code): Update.
	(msgdomain_write_csharp): Give error if some entries have a context.
	* write-resources.c (msgdomain_write_csharp_resources): Bail out if
	contexts are present and cannot be stored in the given output format.
	* write-tcl.c (write_msg): Use is_header macro.
	(msgdomain_write_tcl): Bail out if contexts are present and cannot be
	stored in the given output format.
	* write-qt.c: Include hash.h.
	(write_qm): Use is_header macro. Write out msgctxt if present. Write
	a contexts section if appropriate.
	* msgfmt.c (msgfmt_add_message): Add msgctxt argument.
	(msgfmt_frob_new_message): Use is_header macro.
	* xgettext.c (exclude_directive_message): Add msgctxt argument.
	(remember_a_message, construct_header, finalize_header): Update.
	* x-po.c (extract_add_message): Add msgctxt argument. Update.
	(extract): Update.
	* gettext-po.h (po_message_msgctxt, po_message_set_msgctxt): New
	declarations.
	* gettext-po.c (po_file_domain_header): Use is_header macro.
	(po_message_create): Update.
	(po_message_msgctxt, po_message_set_msgctxt): New functions.
	(po_message_check_all): Use is_header macro.

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

	Avoid a crash when msgcat or msgconv is asked to convert a non-ASCII
	msgid.
	* msgl-iconv.h (iconv_message_list): Change return type to boolean.
	* msgl-iconv.c (iconv_message_list): Likewise. Return true if some
	msgids change.
	* msgl-cat.c (catenate_msgdomain_list): Exit with an error message if
	the msgids change through charset conversion.

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

	* format.c: Include stdbool.h.
	(check_msgid_msgstr_format): Enable strict checking also when
	msgid_plural is present but nplurals = 1.
	Reported by Farzaneh Sarafraz <farzaneh@farsiweb.info>.

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

	Change msgattrib to no longer remove extracted comments and file
	positions when marking messages obsolete.
	* msgmerge.c (merge): When marking a message obsolete, remove the
	extracted comments and file positions.
	* write-po.c (message_print_obsolete): Also print the extracted
	comments and file positions.

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

	Support for Python source encodings (PEP 0263).
	* x-python.c: Include progname.h, basename.h, xerror.h, strstr.h,
	c-ctype.h, utf8-ucs4.h.
	(phase1_pushback): Reduce size.
	(UEOF): New macro.
	(phase2_pushback, phase2_pushback_length): New variables.
	(phase2_getc, phase2_ungetc): New functions.
	(struct unicode_string_buffer): New structure type.
	(init_unicode_string_buffer, unicode_string_buffer_append_unicode_grow,
	unicode_string_buffer_append_unicode, unicode_string_buffer_result,
	free_unicode_string_buffer): New functions.
	(comment_buffer): New variable.
	(buffer, bufmax, buflen): Remove variables.
	(comment_start, comment_add, comment_line_end): Rewritten.
	(comment_at_start): New function.
	(xgettext_current_file_source_encoding): New variable.
	(xgettext_current_file_source_iconv): New variable.
	(set_current_file_source_encoding, try_to_extract_coding): New
	functions.
	(continuation_or_nonblank_line): New variable.
	(phase3_getc): Renamed from phase2_getc. Use phase2_getc instead of
	phase1_getc. Return a Unicode character. Call try_to_extract_coding
	when seeing a comment among the first two lines.
	(phase3_ungetc): Renamed from phase2_ungetc. Use phase2_ungetc instead
	of phase1_ungetc.
	(UNICODE, IS_UNICODE, UNICODE_VALUE): New macros.
	(struct mixed_string_buffer): New structure type.
	(init_mixed_string_buffer, mixed_string_buffer_append_byte,
	mixed_string_buffer_append_unicode_grow,
	mixed_string_buffer_append_unicode,
	mixed_string_buffer_flush_utf16_surr,
	mixed_string_buffer_flush_curr_buffer, mixed_string_buffer_append,
	mixed_string_buffer_result, free_mixed_string_buffer): New functions.
	(phase7_getuc): Use phase2_getc instead of phase1_getc. Return a
	Unicode character except for \ooo and \xnn.
	(phase5_get): Operate on the level of Unicode characters instead of
	at the level of bytes. Use a mixed_string_buffer to accumulate a
	string literal.
	(extract_parenthesized): Set xgettext_current_source_encoding to UTF-8
	while passing UTF-8 strings to the xgettext main code.
	(extract_python): Initialize xgettext_current_file_source_encoding and
	xgettext_current_source_encoding.

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

	* x-csharp.c (phase2_getc): Fix mis-use of iconv() when the source
	encoding is neither ASCII nor UTF-8.

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

	* msgattrib.c (main): Invoke bindtextdomain for bison-runtime.
	* msgcat.c (main): Likewise.
	* msgcmp.c (main): Likewise.
	* msgcomm.c (main): Likewise.
	* msgconv.c (main): Likewise.
	* msgen.c (main): Likewise.
	* msgexec.c (main): Likewise.
	* msgfilter.c (main): Likewise.
	* msggrep.c (main): Likewise.
	* msginit.c (main): Likewise.
	* msgmerge.c (main): Likewise.
	* msgunfmt.c (main): Likewise.
	* msguniq.c (main): Likewise.
	* xgettext.c (main): Likewise.
	* Makefile.am (DEFS): Also define BISON_LOCALEDIR.

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

	* msgl-check.h: New file.
	* msgl-check.c: New file, mostly extracted from msgfmt.c.
	* Makefile.am (noinst_HEADERS): Add msgl-check.h.
	(libgettextsrc_la_SOURCES): Add msgl-check.c, plural-eval.c.
	(msgfmt_SOURCES): Remove plural-eval.c.
	* format.c (check_msgid_msgstr_format): Add const to argument type.
	* format.h (check_msgid_msgstr_format): Add const to argument type.
	* gettext-po.c: Include msgl-check.h.
	(po_file_check_all, po_message_check_all): New functions.
	(po_xerror_logger): Remove function.
	(po_message_check_format): Use new check_message function.
	* gettext-po.h (po_file_check_all, po_message_check_all): New
	declarations.
	* msgfmt.c: Include msgl-check.h instead of setjmp.h, signal.h,
	stdarg.h, po-xerror.h, format.h, plural-exp.h, plural-table.h,
	strstr.h.
	(SIZEOF, sigjmp_buf, sigsetjmp, siglongjmp, USE_SIGINFO,
	sigfpe_exit, sigfpe_code, sigfpe_handler, install_sigfpe_handler,
	uninstall_sigfpe_handler, check_plural_eval, plural_help, check_plural,
	curr_mp, curr_msgid_pos, formatstring_error_logger, check_pair,
	check_header_entry): Move definitions to msgl-check.c.
	(main): Update.
	(msgfmt_frob_new_message): Call check_message instead of
	check_header_entry and check_pair.

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

	Use new error handlers in libgettextpo.
	* gettext-po.h (PO_SEVERITY_WARNING, PO_SEVERITY_ERROR,
	PO_SEVERITY_FATAL_ERROR): New macros.
	(po_xerror_handler): New structure type.
	(po_xerror_handler_t): New type.
	(po_file_read): Change signature; version 3.
	(po_file_write): Change signature; version 2.
	(po_message_check_format): Change signature; version 2.
	* gettext-po.c: Include po-xerror.h.
	(po_file_read): New implementation. Renamed old implementation to
	po_file_read_v2.
	(po_file_write): New implementation. Keep old implementation.
	(po_xerror_logger): New function.
	(po_message_check_format): New implementation. Keep old implementation.

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

	* msgfmt.c (check_plural): Fix broken determination of max_nplurals.

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

	New, higher-level error message output primitives.
	* po-xerror.h: New file.
	* po-xerror.c: New file.
	* open-po.c: Include xerror.h, po-xerror.h, not error.h.
	(open_po_file): Use po_xerror instead of error.
	* po-charset.c: Include po-xerror.h, not po-error.h.
	(po_lex_charset_set): Use po_xerror instead of po_multiline_warning.
	* po-lex.c: Include xerror.h, po-error.h, po-xerror.h.
	(po_gram_error, po_gram_error_at_line): Use po_xerror instead of
	po_error or po_error_at_line. Don't decrement error_message_count;
	let the caller do this instead.
	(mbfile_getc, lex_getc): Use po_xerror instead of po_error.
	* po-lex.h: Don't include po-error.h.
	(po_gram_error, po_gram_error_at_line): Remove optimized macros.
	* read-po-abstract.c: Include xerror.h, po-xerror.h.
	(po_scan): Use po_xerror instead of po_error.
	* read-po.c: Include po-xerror.h.
	(default_add_message): Use po_xerror2 instead of po_gram_error_at_line
	pair.
	* read-properties.c: Include xerror.h, po-xerror.h, not exit.h.
	(phase1_getc, phase4_getuc): Use po_xerror instead of error.
	* read-stringtable.c: Include xerror.h, po-xerror.h, not exit.h.
	(phase1_getc, read_string, stringtable_parse): Use po_xerror instead of
	error.
	* write-po.c: Include po-xerror.h, not exit.h, po-error.h.
	(wrap): Pass the entire message as argument. Use po_xerror instead of
	po_error.
	(message_print, message_print_obsolete): Update. Use po_xerror instead
	of po_multiline_warning.
	(msgdomain_list_print): Use po_xerror instead of po_error or
	po_error_at_line.
	* msgl-iconv.h (struct conversion_context): Add 'message' field.
	* msgl-iconv.c: Include xerror.h, po-xerror.h, not error.h, exit.h.
	(conversion_error): Use po_xerror instead of error.
	(iconv_message_list): Likewise. Set the entire message in the
	conversion context before calling convert_*.
	(iconv_msgdomain_list): Use po_xerror instead of error.
	* xgettext.c (from_current_source_encoding): Set context.message.
	* msgfmt.c: Include po-xerror.h.
	(check_plural_eval): Pass the entire header as argument. Use po_xerror
	instead of error_at_line.
	(plural_help): New function, extracted from check_plural.
	(check_plural): Change type of local variables has_plural, min_pos,
	max_pos. Use po_xerror2 instead of error_at_line pairs. Use po_xerror
	instead of error_at_line.
	(curr_mp): New variable.
	(formatstring_error_logger): Use po_xerror instead of vfprintf.
	(check_pair): Take the entire message as argument. Use po_xerror
	instead of error_at_line. Set curr_mp before calling
	check_msgid_msgstr_format.
	(check_header_entry): Take the entire header message as argument. Use
	po_xerror instead of multiline_error.
	(msgfmt_frob_new_message): Update.
	* msgcmp.c (match_domain): Decrement error_message_count between two
	error messages that belong together.
	* msgmerge.c (match_domain): Decrement error_message_count between two
	error messages that belong together.
	* Makefile.am (noinst_HEADERS): Add po-xerror.h.
	(COMMON_SOURCE): Add po-xerror.c.

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

	* gettext-po.c (po_file_read): Set gram_max_allowed_errors to a large
	integer, so that po_gram_error doesn't cause the program to exit().

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

	* x-csharp.c: Include xerror.h.

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

	* user-email.sh.in: Add support for Mozilla Thunderbird and GNOME
	Evolution 2. Improve mutt support.

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

	* plural-table.c (plural_table): Add an entry about Romanian.
	Explanations by Eddy Petrişor <eddy.petrisor@gmail.com>.

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

	* write-mo.h (byteswap): New variable.
	* write-mo.c: Include byteswap.h.
	(byteswap): New variable.
	(BSWAP32): New macro.
	(write_table): If requested, byteswap all 32-bit values before writing
	them out.
	* msgfmt.c (long_options): Add --endianness.
	(main): Accept --endianness argument and set byteswap.

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

	* msginit.c (catalogname_for_locale): Add support for Old English,
	Hyam, Jju, Tyap, Maithili, Nahuatl, Low Saxon, Northern Sotho, Páez,
	Tetum, Zapotec.
	(englishname_of_language): Add support for Old English, Hyam, Jju,
	Tyap, Kagoma, Maithili, Mayan, Nahuatl, Low Saxon, Northern Sotho,
	Páez, Tetum, Zapotec.

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

	New undocumented option, used by glocale PO files.
	* msgfmt.c (include_fuzzies): Renamed from include_all.
	(include_untranslated): New variable.
	(long_options): Add --use-untranslated.
	(main): Handle --use-untranslated.
	(msgfmt_frob_new_message): Test include_untranslated.
	(msgfmt_comment_special): Update.

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

	* user-email.sh.in (datarootdir): New variable.

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

	Fix compilation error on systems without iconv().
	* xgettext.c (convert_string): Remove fallback macro definition.
	(from_current_source_encoding) [!HAVE_ICONV]: Just abort here.

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

	* po-lex.c (mb_width): Remove gcc warnings on platform with unsigned
	'char' type (e.g. Linux/PowerPC).
	Reported by Jeff Rizzo <riz@netbsd.org>.

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

	* Makefile.am (msgmerge_SOURCES, xgettext_SOURCES, msgattrib_SOURCES,
	msgcat_SOURCES, msgcomm_SOURCES, msgconv_SOURCES, msgen_SOURCES,
	msgfilter_SOURCES, msggrep_SOURCES, msguniq_SOURCES): On mingw, use
	C++ source code.
	(libgettextsrc_la_LDFLAGS, libgettextpo_la_LDFLAGS): Use LTNOUNDEF.
	(format_CFLAGS): New variable.
	(format.lo): New rule.
	(msg*_CFLAGS, xgettext_CFLAGS): Remove variables.
	(msg*_CPPFLAGS, xgettext_CPPFLAGS): New variables.

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

	* write-po.c (wrap): Output \a and \v as an escape sequence, like
	\b, \f, \r.
	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.

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

	* Makefile.am (msgfmt_SOURCES): Add hash-string.c.
	* Makefile.msvc (msgfmt_OBJECTS): Add hash-string.obj.
	(hash-string.obj): New rule.
	* Makefile.vms (msgfmt_OBJECTS): Add hash-string.obj.
	(hash-string.obj): New rule.

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

	* x-sh.c (open_singlequote_terminator): New variable.
	(saw_opening_singlequote): Set it.
	(phase2_getc): Handle the case of open_singlequote_terminator == '"'.
	(read_word): Likewise. Treat i18n quotes like single quotes with
	terminator '"'.
	Reported by Jakub Bogusz <qboosh@pld-linux.org>.

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

	Improved error message.
	* msgl-iconv.h (struct conversion_context): New type.
	(convert_string): Add context argument.
	* msgl-iconv.c (conversion_error): New function.
	(convert_string, convert_string_list, convert_msgid, convert_msgstr):
	Add context argument.
	(iconv_message_list): Construct context for them.
	* xgettext.c (convert_string): Add context argument.
	(from_current_source_encoding): Construct context for convert_string.
	Reported by Hans Ulrich Niedermann <debian@n-dimensional.de>.

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

	* po-lex.h (po_gram_error, po_gram_error_at_line): Test for
	__APPLE_CC__ > 1. Needed because gcc-4.0 defines __APPLE_CC__ and
	implements __VA_ARGS__ correctly.
	* po-lex.c (po_gram_error, po_gram_error_at_line): Likewise.
	* read-stringtable.c (phase2_getc): Optimize UTF-8 code. Avoids
	gcc-4.0 warnings.

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

	* gettext-0.14.6 released.

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

	* Makefile.am (CLEANFILES): Add msgfmt.net.exe.mdb,
	msgunfmt.net.exe.mdb.

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

	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.

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

	* format-gcc-internal.c (struct unnumbered_arg): Remove type.
	(struct numbered_arg): New type.
	(struct spec): Use it.
	(isdigit): New macro.
	(numbered_arg_compare): New function.
	(format_parse, format_free, format_check, format_print): Update to
	GCC 4.1 internal format strings.
	Reported by Göran Uddeborg <goeran@uddeborg.se>.

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

	* gettext-0.14.5 released.

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

	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.

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

	* format-gcc-internal.c: Update for GCC 4.0.
	(FAT_POINTER, FAT_SIZE_LONGLONG, FAT_SIZE_WIDE, FAT_SIZE_MASK): New
	enum items.
	(FAT_*): Update.
	(struct spec): Add uses_err_no field.
	(format_parse): Initialize uses_err_no field. Handle %q flag. Handle
	'll', 'w' size specifiers. Handle %<, %>, %', %m, %p, %J directives.
	(format_check): Also check that the use of err_no is the same.
	Based on a patch by Jakub Jelinek <jakub@redhat.com>.

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

	* gettext-0.14.4 released.

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

	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.

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

	* gettext-0.14.3 released.

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

	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.

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

	* format-scheme.c (format_arg_type): Add FAT_COMPLEX. Remove
	FAT_FUNCTION.
	(make_intersected_element): Simplify also the intersection with
	FAT_COMPLEX.
	(make_union_element): Simplify also the union with FAT_COMPLEX.
	(IIC): New array.
	(nocheck_params): Remove function.
	(parse_upto): Remove handling of ~W, ~<, ~>.
	Implement non-CL handling of ~C, ~I, ~_, ~/, ~T.
	Implement handling of ~Y, ~!, ~Q, ~K.

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

	* format-scheme.c (parse_upto): Remove support for ~!.
	Reported by Kevin Ryde <user42@zip.com.au>.

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

	* gettext-0.14.2 released.

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

	* Makefile.msvc (gettextpo.lib): Link with intl.lib as well.

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

	* Makefile.msvc (msginit_OBJECTS): Add plural-count.obj.
	* Makefile.vms (msginit_OBJECTS): Add plural-count.obj.

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

	* gettext-po.h (po_header_set_field): New declaration.
	* gettext-po.c (po_header_set_field): New function.
	Suggested by Ross Golder <ross@golder.org>.

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

	* gettext-po.h (LIBGETTEXTPO_VERSION): New macro.
	(libgettextpo_version): New declaration.
	* gettext-po.c (libgettextpo_version): New variable.

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

	* gettext-po.h (po_message_remove_filepos, po_message_add_filepos): New
	declarations.
	* gettext-po.c (po_message_remove_filepos, po_message_add_filepos): New
	functions.
	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.

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

	* gettext-po.h (po_message_set_extracted_comments): New declaration.
	* gettext-po.c (po_message_set_extracted_comments): New function.
	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.

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

	* msginit.c (get_user_email): Cast _() to 'char *', to avoid compiler
	warning.

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

	Make the tools work in the tr_TR locale.
	* po-charset.c: Include c-strcase.h instead of strcase.h.
	(po_charset_canonicalize): Use c_strcasecmp.
	* msgcmp.c: Include c-strcase.h instead of strcase.h.
	(compare): Use c_strncasecmp.
	* msginit.c: Include c-strcase.h instead of strcase.h.
	(content_type): Use c_strcasecmp.
	* msgmerge.c: Include c-strcase.h instead of strcase.h.
	(message_merge, merge): Use c_strncasecmp.
	* xgettext.c: Include c-strcase.h instead of strcase.h.
	(language_to_extractor): Use c_strcasecmp.
	Reported by Recai Oktaş <roktas@omu.edu.tr>.

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

	* project-id: Use LC_ALL=C to protect range expression against
	Estonian locale.

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

	Leave #: lines with unknown syntax alone instead of turning them into
	plain comments.
	* po-hash.h: Remove file.
	* po-hash-gen.y: Remove file.
	* read-po-abstract.c: Don't include po-hash.h.
	(po_parse_comment_filepos, po_parse_comment_solaris_filepos): New
	functions.
	(po_callback_comment_dispatcher): Call them instead of the old
	po_parse_comment_filepos.
	* read-stringtable.c: Don't include po-hash.h.
	* Makefile.am (noinst_HEADERS): Remove po-hash.h, po-hash-gen.h.
	(COMMON_SOURCE): Remove po-hash-gen.y.
	(BUILT_SOURCES): Remove po-hash-gen.c, po-hash-gen.h.
	* Makefile.msvc (OBJECTS): Remove po-hash-gen.obj.
	(po-hash-gen.obj): Remove rule.
	* Makefile.vms (OBJECTS): Remove po-hash-gen.obj.
	(po-hash-gen.obj): Remove rule.
	* FILES: Update.
	Reported by David Fraser <davidf@sjsoft.com>.

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

	* plural-table.c (plural_table): Add an entry about Vietnamese.
	Explanations by Clytie Siddall <clytie@riverland.net.au>.

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

	* Makefile.am (msgcmp_LDADD, msgfmt_LDADD, msgmerge_LDADD,
	msgunfmt_LDADD, xgettext_LDADD, msgattrib_LDADD, msgcat_LDADD,
	msgcomm_LDADD, msgconv_LDADD, msgen_LDADD, msgexec_LDADD,
	msgfilter_LDADD, msggrep_LDADD, msguniq_LDADD): Add INTL_MACOSX_LIBS.

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

	* msgfmt.c (formatstring_error_logger): Cast the fprrintf argument,
	to make it work on big-endian 64-bit machines.

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

	Support for Scheme.
	* message.h (format_type): New enum value 'format_scheme'.
	(NFORMATS): Increment.
	* message.c (format_language): Add format_scheme entry.
	(format_language_pretty): Likewise.
	* format.h (formatstring_scheme): New declaration.
	* format-scheme.c: New file, based on format-lisp.c.
	* format.c (formatstring_parsers): Add formatstring_scheme.
	* x-scheme.h: New file.
	* x-scheme.c: New file.
	* xgettext.c: Include x-scheme.h.
	(flag_table_scheme): New variable.
	(main): Invoke init_flag_table_scheme, x_scheme_extract_all,
	x_scheme_keyword.
	(usage): Mention Scheme source language.
	(xgettext_record_flag): Handle format_scheme.
	(language_to_extractor): Add Scheme rule.
	(extension_to_language): Add Scheme rule.
	* Makefile.am (noinst_HEADERS): Add x-scheme.h.
	(FORMAT_SOURCE): Add format-scheme.c.
	(xgettext_SOURCES): Add x-scheme.c.
	* Makefile.msvc (OBJECTS): Add format-scheme.obj.
	(xgettext_OBJECTS): Add x-scheme.obj.
	(format-scheme.obj, x-scheme.obj): New rules.
	* Makefile.vms (OBJECTS): Add format-scheme.obj.
	(xgettext_OBJECTS): Add x-scheme.obj.
	(format-scheme.obj, x-scheme.obj): New rules.
	* FILES: Update.

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

	* msggrep.c (grep_args, grep_path, grep_argv): Remove variables.
	(struct grep_task): New type.
	(grep_task): New variable.
	(main): Initialize grep_task instead of grep_args. Change processing
	of options 'E', 'F' to set a matcher, of 'e', 'f' to append to the
	pattern string, and of 'i' to set a boolean. Compile the patterns.
	(is_string_selected): Execute a compiled pattern instead of calling
	the grep program.
	(is_message_selected): Update.
	* Makefile.am (AM_CPPFLAGS): Add -I option for libgrep.
	(LIBGREP): New variable.
	(msggrep_LDADD): Add $(LIBGREP).
	* Makefile.msvc (INCLUDES): Add libgrep directory.
	(msggrep.exe): Link with libgrep.
	* Makefile.vms (INCLUDES): Add libgrep directory.
	(msggrep.exe): Link with libgrep.

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

	* msgl-ascii.h (is_ascii_msgdomain_list): New declaration.
	* msgl-ascii.c (is_ascii_msgdomain_list): New function.
	* x-po.c (header_charset): New variable.
	(extract_add_message): When seeing the header entry, store the charset
	in header_charset.
	(extract): Store the value of header_charset in the new constructed
	header entry.
	* xgettext.c (main): Convert the existing PO file to UTF-8 if it was
	not entirely ASCII.
	Reported by Jörg Schilling <schilling@fokus.fraunhofer.de>.

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

	* msggrep.c (usage): Explain COMMENT-PATTERN syntax as well.

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

	* x-tcl.c (read_word): Ignore non-space whitespace at the beginning.
	Reported by William J Poser <wjposer@ldc.upenn.edu>.

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

	* write-csharp.c (msgdomain_write_csharp): Don't call fclose after
	fwriteerror.
	* write-java.c (msgdomain_write_java): Likewise.
	* write-mo.c (msgdomain_write_mo): Likewise.
	* write-po.c (msgdomain_list_print): Likewise.
	* write-qt.c (msgdomain_write_qt): Likewise.
	* write-resources.c (execute_writing_input): Likewise.
	* write-tcl.c (msgdomain_write_tcl): Likewise.

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

	* msgattrib.c (main): Update year in --version output.
	* msgcat.c (main): Likewise.
	* msgcmp.c (main): Likewise.
	* msgcomm.c (main): Likewise.
	* msgconv.c (main): Likewise.
	* msgen.c (main): Likewise.
	* msgexec.c (main): Likewise.
	* msgfilter.c (main): Likewise.
	* msgfmt.c (main): Likewise.
	* msggrep.c (main): Likewise.
	* msginit.c (main): Likewise.
	* msgmerge.c (main): Likewise.
	* msgunfmt.c (main): Likewise.
	* msguniq.c (main): Likewise.
	* xgettext.c (main): Likewise.

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

	* gettext-po.c (po_file_read): Interpret "-" and "/dev/stdin" as
	denoting stdin.
	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.

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

	* Makefile.am (libgettextpo_la_LDFLAGS): Add @LTLIBINTL@ @LTLIBICONV@.
	Reported by Sam Steingold <sds@gnu.org>.

2004-10-01  Guido Flohr  <guido@imperia.net>

	* x-perl.c (x_perl_prelex): Recognize function names starting with '-'.
	Reported by Ryan Anderson <ryan@autoweb.net>.

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

	* format.h (formatstring_error_logger_t): Modify decl for GCC <= 3.0.
	Reported by Jens A. Tkotz <jens@peino.de>.

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

	* Makefile.am (msginit_SOURCES): Add plural-count.c.
	* msginit.c (update_msgstr_plurals): New function.
	(main): Call it.
	* msgmerge.c (match_domain): Provide the appropriate number of plural
	forms for messages that don't occur in the Def.po file.
	Reported by Jens A. Tkotz <jens@peino.de>.

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

	* format.h (formatstring_error_logger_t): New type.
	(struct formatstring_parser): Change calling convention of 'check'
	method.
	(check_msgid_msgstr_format): New declaration.
	* format-awk.c (format_check): Use error_logger argument instead of
	noisy and error_at_line.
	* format-c.c (format_check): Likewise.
	* format-csharp.c (format_check): Likewise.
	* format-elisp.c (format_check): Likewise.
	* format-gcc-internal.c (format_check): Likewise.
	* format-java.c (format_check): Likewise.
	* format-librep.c (format_check): Likewise.
	* format-lisp.c (format_check): Likewise.
	* format-pascal.c (format_check): Likewise.
	* format-perl.c (format_check): Likewise.
	* format-perl-brace.c (format_check): Likewise.
	* format-php.c (format_check): Likewise.
	* format-python.c (format_check): Likewise.
	* format-qt.c (format_check): Likewise.
	* format-sh.c (format_check): Likewise.
	* format-tcl.c (format_check): Likewise.
	* format-ycp.c (format_check): Likewise.
	* format.c (check_msgid_msgstr_format): New function, extracted from
	msgfmt.c.
	* msgfmt.c (curr_msgid_pos): New variable.
	(formatstring_error_logger): New function.
	(check_pair): Use check_msgid_msgstr_format, formatstring_error_logger.
	* msgmerge.c (msgfmt_check_pair_fails): Update.
	* gettext-po.h (po_message_check_format): New declaration.
	* gettext-po.c (po_error_logger, po_message_check_format): New
	functions.

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

	* po-error.h: New file.
	* po-error.c: New file.
	* po-charset.c: Include po-error.h.
	(po_lex_charset_set): Use po_multiline_warning instead of
	multiline_warning.
	* po-lex.h: Include po-error.h.
	(po_gram_error): Use po_error instead of error.
	(po_gram_error_at_line): Use po_error_at_line instead of error_at_line.
	* po-lex.c (po_gram_error): Use po_error instead of error.
	(po_gram_error_at_line): Use po_error_at_line instead of error_at_line.
	(mbfile_getc, lex_getc): Use po_error instead of error.
	* read-po-abstract.c (po_scan): Likewise.
	* write-po.c: Include po-error.h instead of error.h.
	(wrap): Use po_error instead of error.
	(message_print, message_print_obsolete): Use po_multiline_warning
	instead of multiline_warning.
	(msgdomain_list_print): Use po_error instead of error, po_error_at_line
	instead of error_at_line.
	* str-list.h (string_list_join): New declaration.
	* str-list.c (string_list_join): New function.
	* message.h (message_list_insert_at): New declaration.
	* message.c (message_list_insert_at): New function.
	* gettext-po.h (po_filepos_t): New type.
	(struct po_error_handler, po_error_handler_t): New types.
	(po_file_create): New declaration.
	(po_file_read): Add handler argument.
	(po_file_write, po_message_insert, po_message_create,
	po_message_set_msgid, po_message_set_msgid_plural,
	po_message_set_msgstr, po_message_set_msgstr_plural,
	po_message_comments, po_message_set_comments,
	po_message_extracted_comments, po_message_filepos,
	po_message_set_obsolete, po_message_set_fuzzy, po_message_set_format,
	po_filepos_file, po_filepos_start_line): New declarations.
	* gettext-po.c (po_file_create): New function.
	(po_file_read): Add handler argument. Keep an old version for backward
	compatibility.
	(po_file_write): New function.
	(po_message_iterator): Store more information, to make
	po_message_insert possible.
	(po_message_iterator_free): Update.
	(po_next_message): Don't crash if iterator->mlp is NULL.
	(po_message_insert): New function.
	(po_message_create): New function.
	(po_message_set_msgid, po_message_set_msgid_plural,
	po_message_set_msgstr, po_message_set_msgstr_plural,
	po_message_comments, po_message_set_comments,
	po_message_extracted_comments, po_message_filepos,
	po_message_set_obsolete, po_message_set_fuzzy, po_message_set_format,
	po_filepos_file, po_filepos_start_line): New functions.
	* Makefile.am (noinst_HEADERS): Add po-error.h.
	(COMMON_SOURCE): Add po-error.c.
	* Makefile.msvc (OBJECTS): Add po-error.obj.
	(po-error.obj): New rule.
	* Makefile.vms (OBJECTS): Add po-error.obj.
	(po-error.obj): New rule.
	* FILES: Update.

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

	* Makefile.am (msginit_LDADD): Use the INTL_MACOSX_LDFLAGS.

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

	* plural-table.c (plural_table): Czech is now like Slovak.
	Reported by Stepan Kasal <kasal@ucw.cz>.

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

	* x-c.c (phase1_getc): Fix phase0_getc invocation.
	Reported by Matt Dreezer <matthew.dreezer@edl.uk.eds.com>.

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

	* format-java.c (message_format_parse): Fix argument of freesa() calls.

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

	* Makefile.am (install-exec-clean): Don't remove libgettextsrc.a on
	AIX.
	Reported by Kouichi Hashikawa <z01a7ksy@cs.ecip.tohoku.ac.jp>.

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

	* format-lisp.c (parse_upto): Add integer restriction for the dispatch
	argument in ~[...~].

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

	* read-csharp.c (msgdomain_read_csharp): Extend the lang -> frobbedlang
	mapping so as to support Serbian and Uzbek locales.
	* write-csharp.c (msgdomain_write_csharp): Likewise.
	Reported by Jorn Baayen <jbaayen@dds.nl>.

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

	* plural-table.c (plural_table): Add an entry about Serbian.
	Reported by Danilo Segan <danilo@gnome.org>.

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

	* msginit.c (catalogname_for_locale): Add entries for Akan, Avaric,
	Bambara, Cree, Divehi (Maldivian), Éwé, Igbo, Kongo, Kanuri, Ganda,
	Luba-Katanga, Ojibwa, Venda.
	(englishname_of_language): Likewise, and also for Fulah (Fulfulde).

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

	* format.h (struct formatstring_parser): Add 'translated' argument to
	parse function.
	(get_sysdep_c_format_directives): Renamed from
	get_c99_format_directives. Add 'translated' argument. Change meaning
	of endpos in returned array.
	* format-c.c (struct spec): Rename field c99_directives to
	sysdep_directives, and c99_directives_count to sysdep_directives_count.
	(format_parse): Add 'translated' argument. Handle 'I' flag. Store the
	pointer past the '>' character instead of the pointer to the '>'.
	(format_c_parse, format_objc_parse): Add 'translated' argument.
	(get_sysdep_c_format_directives): Renamed from
	get_c99_format_directives. Add 'translated' argument.
	* format-awk.c (format_parse): Add 'translated' argument.
	* format-csharp.c (format_parse): Likewise.
	* format-elisp.c (format_parse): Likewise.
	* format-gcc-internal.c (format_parse): Likewise.
	* format-java.c (format_parse): Likewise.
	* format-librep.c (format_parse): Likewise.
	* format-lisp.c (format_parse): Likewise.
	* format-pascal.c (format_parse): Likewise.
	* format-perl-brace.c (format_parse): Likewise.
	* format-perl.c (format_parse): Likewise.
	* format-php.c (format_parse): Likewise.
	* format-python.c (format_parse): Likewise.
	* format-qt.c (format_parse): Likewise.
	* format-sh.c (format_parse): Likewise.
	* format-tcl.c (format_parse): Likewise.
	* format-ycp.c (format_parse): Likewise.
	* msgfmt.c (check_pair): Update.
	* msgmerge.c (msgfmt_check_pair_fails): Likewise.
	* read-mo.c (get_sysdep_string): Don't add '<'...'>' around segments
	of length 1.
	(read_mo_file): Treat major revision 1 like major revision 0.
	* write-mo.c (write_table): Update. Use major revision 1 if "I" occurs
	among the sysdep segments.
	* xgettext.c (set_format_flags_from_context, remember_a_message,
	remember_a_message_plural): Update.

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

	* msginit.c (fill_header): Avoid a NULL pointer access when the header
	has no comment attached to it.
	Reported by Josep Puigdemont <baldrick@terra.es>.

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

	* msgattrib.c (main): Update year in --version output.
	* msgcat.c (main): Likewise.
	* msgcmp.c (main): Likewise.
	* msgcomm.c (main): Likewise.
	* msgconv.c (main): Likewise.
	* msgen.c (main): Likewise.
	* msgexec.c (main): Likewise.
	* msgfilter.c (main): Likewise.
	* msgfmt.c (main): Likewise.
	* msggrep.c (main): Likewise.
	* msginit.c (main): Likewise.
	* msgmerge.c (main): Likewise.
	* msgunfmt.c (main): Likewise.
	* msguniq.c (main): Likewise.
	* xgettext.c (main): Likewise.

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

	* xgettext.h: Include stdlib.h, str-list.h.
	(struct refcounted_string_list_ty): New type.
	(add_reference, drop_reference): New functions.
	(savable_comment, savable_comment_add, savable_comment_reset,
	savable_comment_to_xgettext_comment): New declarations.
	* xgettext.c (savable_comment): New variable.
	(savable_comment_add, savable_comment_reset,
	savable_comment_to_xgettext_comment): New functions.
	* x-java.c (struct refcounted_string_list_ty, comment, add_reference,
	drop_reference, x_java_comment_add, x_java_comment_reset,
	x_java_comment_to_xgettext_comment): Remove. Use replacement from
	xgettext.{h,c} instead.
	* x-csharp.c (struct refcounted_string_list_ty, comment, add_reference,
	drop_reference, x_csharp_comment_add, x_csharp_comment_reset,
	x_csharp_comment_to_xgettext_comment): Remove. Use replacement from
	xgettext.{h,c} instead.
	* x-c.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(struct token_ty): Add 'comment' field.
	(free_token): Free it.
	(phase5_get): Initialize token's 'comment' field.
	(phase6_get): Call savable_comment_reset instead of
	xgettext_comment_reset.
	(phase8a_get): Initialize token's 'comment' field.
	(phase8b_get): Call savable_comment_reset instead of
	xgettext_comment_reset.
	(phase8c_get): In @"...", use the comment of the first token, not of
	the second.
	(struct xgettext_token_ty): Add 'comment' field.
	(x_c_lex): Deal with the token's comment.
	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
	savable_comment_reset. Free the token's comment field.
	* x-python.c (comment_line_end): Call savable_comment_add instead of
	xgettext_comment_add.
	(struct token_ty): Add 'comment' field.
	(phase5_get): Call savable_comment_reset instead of
	xgettext_comment_reset. Initialize token's 'comment' field.
	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
	savable_comment_reset. Free the token's comment field.

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

	* read-mo.h (read_mo_file): Change 'fn' into 'filename'.
	* read-mo.c (read_mo_file): Likewise.

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

	* write-resources.h: New file.
	* write-resources.c: New file.
	* msgfmt.cs: New file.
	* msgfmt.c: Include write-resources.h.
	(csharp_resources_mode): New variable.
	(long_options): Add --csharp-resources.
	(main): Handle --csharp-resources. More generic code for detection of
	contradicting modes. Invoke msgdomain_write_csharp_resources.
	(usage): Document --csharp-resources option.
	(msgfmt_set_domain): Update.
	* read-resources.h: New file.
	* read-resources.c: New file.
	* msgunfmt.cs (DumpResource): Add a constructor that dumps a .resources
	file.
	(Main): Invoke it when only one argument is given.
	* msgunfmt.c: Include read-resources.h.
	(csharp_resources_mode): New variable.
	(long_options): Add --csharp-resources.
	(main): Handle --csharp-resources. More generic code for detection of
	contradicting modes. Invoke read_one_file instead of read_mo_file.
	(usage): Document --csharp-resources option.
	(read_one_file): New function.
	* Makefile.am (noinst_HEADERS): Add read-resources.h and
	write-resources.h.
	(msgfmt_SOURCES): Add write-resources.c.
	(msgunfmt_SOURCES): Add read-resources.c.
	(EXTRA_DIST): Add msgfmt.cs.
	(CLEANFILES): Add msgfmt.net.exe.
	(msgfmt.net.exe): New rule.
	(all-csharp-yes): Depend on it.
	(install-exec-csharp-yes): Also install msgfmt.net.exe.
	(uninstall-csharp-yes): Also uninstall msgfmt.net.exe.
	* Makefile.msvc (msgfmt_OBJECTS): Add write-resources.obj.
	(msgunfmt_OBJECTS): Add read-resources.obj.
	(write-resources.obj, read-resources.obj): New rules.
	* Makefile.vms (msgfmt_OBJECTS): Add write-resources.obj.
	(msgunfmt_OBJECTS): Add read-resources.obj.
	(write-resources.obj, read-resources.obj): New rules.
	* FILES: Update.

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

	Support for C#.
	* write-csharp.h: New file.
	* write-csharp.c: New file.
	* msgfmt.c: Include write-csharp.h.
	(csharp_mode, csharp_resource_name, csharp_locale_name,
	csharp_base_directory): New variables.
	(long_options): Add option --csharp.
	(main): Handle option --csharp. Initialize csharp_resource_name,
	csharp_locale_name, csharp_base_directory. Perform checks for C# mode.
	Invoke msgdomain_write_csharp.
	(usage): Document --csharp option and C# mode.
	(msgfmt_set_domain): Ignore in C# mode.
	* read-csharp.h: New file.
	* read-csharp.c: New file.
	* msgunfmt.cs: New file.
	* msgunfmt.c: Include read-csharp.h.
	(csharp_mode, csharp_resource_name, csharp_locale_name,
	csharp_base_directory): New variables.
	(long_options): Add option --csharp.
	(main): Handle option --csharp. Initialize csharp_resource_name,
	csharp_locale_name, csharp_base_directory. Perform checks for C# mode.
	Invoke msgdomain_read_csharp.
	(usage): Document --csharp option and C# mode.
	* Makefile.am (noinst_HEADERS): Add read-csharp.h, write-csharp.h.
	(CSHARPCOMP, CSHARPCOMPFLAGS): New variables.
	(msgfmt_SOURCES): Add write-csharp.c.
	(msgunfmt_SOURCES): Add read-csharp.c.
	(EXTRA_DIST): Add msgunfmt.cs.
	(CLEANFILES): Add msgunfmt.net.exe.
	(all-csharp-yes, all-csharp-no): New rules.
	(all-local): Depend on them.
	(msgunfmt.net.exe): New rule.
	(install-exec-csharp-yes, install-exec-csharp-no): New rules.
	(install-exec-local): Depend on them.
	(installdirs-csharp): New rule.
	(installdirs-local): Depend on it.
	(uninstall-csharp-yes, uninstall-csharp-no): New rules.
	(uninstall-local): Depend on it.
	* Makefile.msvc (msgfmt_OBJECTS): Add write-csharp.obj.
	(msgunfmt_OBJECTS): Add read-csharp.obj.
	(write-csharp.obj, read-csharp.obj): New rules.
	* Makefile.vms (msgfmt_OBJECTS): Add write-csharp.obj.
	(msgunfmt_OBJECTS): Add read-csharp.obj.
	(write-csharp.obj, read-csharp.obj): New rules.
	* FILES: Update.

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

	* read-java.c (msgdomain_read_java): Relocate also the GETTEXTJAR
	value.
	* urlget.c (fetch): Likewise.

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

	* write-java.c (write_java_code): Emit a static method
	'get_msgid_plural_table' instead of a static field 'plural'.
	* gnu/gettext/DumpResource.java (DumpResource.dump): Exploit a
	'get_msgid_plural_table' method if it exists.

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

	* message.h (format_type): New enum value 'format_csharp'.
	(NFORMATS): Increment.
	* message.c (format_language): Add format_csharp entry.
	(format_language_pretty): Likewise.
	* format.h (formatstring_csharp): New declaration.
	* format-csharp.c: New file.
	* format.c (formatstring_parsers): Add formatstring_csharp.
	* x-csharp.h: New file.
	* x-csharp.c: New file.
	* xgettext.c: Include x-csharp.h.
	(flag_table_csharp): New variable.
	(main): Invoke init_flag_table_csharp, x_csharp_extract_all,
	x_csharp_keyword.
	(usage): Mention C# source language.
	(xgettext_record_flag): Handle format_csharp.
	(language_to_extractor): Add C# rule.
	(extension_to_language): Add C# rule.
	* Makefile.am (noinst_HEADERS): Add x-csharp.h.
	(FORMAT_SOURCE): Add format-csharp.c.
	(xgettext_SOURCES): Add x-csharp.c.
	* Makefile.msvc (OBJECTS): Add format-csharp.obj.
	(xgettext_OBJECTS): Add x-csharp.obj.
	(format-csharp.obj, x-csharp.obj): New rules.
	* Makefile.vms (OBJECTS): Add format-csharp.obj.
	(xgettext_OBJECTS): Add x-csharp.obj.
	(format-csharp.obj, x-csharp.obj): New rules.
	* FILES: Update.

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

	* msgexec.c (process_string): Pass ignore_sigpipe = false.
	* msgfilter.c (process_string): Likewise.
	* msggrep.c (is_string_selected): Likewise.
	* msginit.c (project_id, project_id_version, get_user_email,
	language_team_address): Likewise.
	* read-java.c (execute_and_read_po_output): Likewise.
	* read-tcl.c (msgdomain_read_tcl): Likewise.
	* urlget.c (execute_it): Pass ignore_sigpipe = true.
	(fetch): Pass ignore_sigpipe = true when fetching the file, = false
	otherwise.

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

	* x-c.c (SIZEOF): New macro.
	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
	(phase2_ungetc): Likewise.
	(phase3_ungetc): Likewise.
	(phase5_unget): Likewise.
	(phase6_unget): Likewise.
	* x-java.c (SIZEOF): New macro.
	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
	(phase2_ungetc): Likewise.
	(phase3_ungetc): Likewise.
	(phase5_unget): Likewise.
	(phase6_unget): Likewise.
	* x-php.c (SIZEOF): New macro.
	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
	(phase2_ungetc): Likewise.
	(phase3_ungetc): Likewise.
	* x-python.c (SIZEOF): New macro.
	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
	(phase5_unget): Likewise.
	* x-sh.c (SIZEOF): New macro.
	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
	(phase2_ungetc): Likewise.
	* x-smalltalk.c (SIZEOF): New macro.
	(phase2_unget): Verify that the pushback buffer's size is sufficient.
	* x-tcl.c (SIZEOF): New macro.
	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
	(phase2_ungetc): Likewise.
	* x-ycp.c (SIZEOF): New macro.
	(phase2_unget): Verify that the pushback buffer's size is sufficient.

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

	* x-c.c (phase1_pushback): Reduce size to 2.
	(phase2_pushback): Reduce size to 1.
	(phase3_pushback): Reduce size to 2.
	(phase5_pushback): Reduce size to 1.
	(phase6_pushback): Reduce size to 2.
	* x-java.c (phase2_pushback): Reduce size to 1.
	(phase3_pushback): Reduce size to 2.
	(phase5_pushback): Reduce size to 3.
	(phase6_pushback): Reduce size to 2.
	* x-php.c (phase1_pushback): Reduce size to 2.
	* x-python.c (max): New macro.
	(phase1_pushback): Reduce size to UNINAME_MAX + 3.
	(phase5_pushback): Reduce size to 1.
	* x-sh.c (phase1_pushback): Reduce size to 1.
	(phase2_pushback): Reduce size to 2.
	* x-smalltalk.c (phase2_pushback): Reduce size to 1.
	* x-tcl.c (phase1_pushback): Reduce size to 1.
	(phase2_pushback): Reduce size to 2.

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

	Assume automake-1.8.
	* Makefile.am (install-exec-local): Renamed from install-exec-am.

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

	* format-java.c: Include xallocsa.h.
	(message_format_parse): Use xallocsa instead of alloca.
	(choice_format_parse): Likewise.
	* msgl-cat.c: Include xallocsa.h.
	(catenate_msgdomain_list): Use xallocsa instead of alloca.
	* msgl-charset.c: Include xallocsa.h.
	(compare_po_locale_charsets): Use xallocsa instead of alloca.
	* msgl-iconv.c: Include xallocsa.h.
	(iconv_message_list): Use xallocsa instead of alloca.
	* po-charset.c: Include xallocsa.h.
	(po_lex_charset_set): Use xallocsa instead of alloca.
	* read-tcl.c: Include xallocsa.h.
	(msgdomain_read_tcl): Use xallocsa instead of alloca.
	* write-java.c: Include xallocsa.h.
	(compute_hashsize, msgdomain_write_java): Use xallocsa instead of
	alloca.
	* write-mo.c: Include xallocsa.h.
	(write_table): Use xallocsa instead of alloca.
	* write-po.c: Include xallocsa.h.
	(msgdomain_list_print_po): Use xallocsa instead of alloca.
	* write-tcl.c: Include xallocsa.h.
	(msgdomain_write_tcl): Use xallocsa instead of alloca.
	* msggrep.c: Include xallocsa.h.
	(is_message_selected): Use xallocsa instead of alloca.
	* msginit.c: Include xallocsa.h.
	(subst_string): Use xallocsa instead of alloca.
	* msgmerge.c: Include obstack.h.
	(obstack_chunk_alloc, obstack_chunk_free): New macros.
	(message_merge): Use obstack_alloc instead of alloca.
	* xgettext.c: Include xallocsa.h.
	(flag_context_list_table_insert): Use xallocsa instead of alloca.

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

	* gettext-0.13.1 released.

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

	* x-sh.c (phase2_getc): Call phase1_ungetc instead of phase2_ungetc:
	The next phase2_getc invocation must return QUOTED('"'), not '"'.

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

	* x-c.c (phase7_getc): Remove dead code.
	* x-java.c (accumulate_escaped): More precise error message.

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

	* msginit.c (catalogname_for_locale): Treat sr_CS like sr_YU.

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

	* gettext-0.13 released.

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

	* xgettext.c (set_format_flags_from_context): Add casts, to make it
	compile in C++ mode.

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

	* x-c.c (phase4_getc): Skip leading whitespace in C++ style comments
	as well.
	* x-sh.c (read_word): Skip leading whitespace in comments.
	* x-lisp.c (read_object): Skip leading whitespace in single-line
	comments as well.
	* x-elisp.c (read_object): Skip leading whitespace in comments.
	* x-librep.c (read_object): Skip leading whitespace in single-line
	comments as well.
	* x-java.c (phase4_getc): Skip leading whitespace in C++ style comments
	as well.
	* x-awk.c (phase2_getc): Skip leading whitespace in comments.
	* x-ycp.c (phase2_getc): Skip leading whitespace in single-line
	comments as well.
	* x-tcl.c (read_command): Skip leading whitespace in comments.

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

	* format-lisp.c (check_params): Use ngettext for one of the messages.
	Reported by Rafał Maszkowski <rzm@icm.edu.pl>.

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

	* Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES.

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

	* msginit.c (main): Drop the blank line in --no-translator mode.

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

	* xgettext.c (remember_a_message): Omit the programmer comments of a
	duplicated msgid only if they are redundant.
	Reported by Christian Neumair <chris@gnome-de.org>.

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

	* user-email.sh.in: Renamed from user-email.in. Internationalize, use
	localedir and gettext.
	* FILES: Update.

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

	* read-stringtable.c (read_string, stringtable_parse): Cast
	gram_pos.line_number to 'unsigned long'.
	* x-sh.c (read_word): Case line_number to 'unsigned long'.

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

	* message.h (message_list_msgids_changed): New declaration.
	* message.c (message_list_msgids_changed): New function.
	* msgl-iconv.c (iconv_message_list): Update the message list's hash
	table if it happens to contain non-ASCII msgids.

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

	* message.h (format_type): New enum value 'format_qt'.
	(NFORMATS): Increment.
	* message.c (format_language): Add format_qt entry.
	(format_language_pretty): Likewise.
	* format.h (formatstring_qt): New declaration.
	* format-qt.c: New file.
	* format.c (formatstring_parsers): Add formatstring_qt.
	* xgettext.c (recognize_format_qt): New variable.
	(long_options): Add option "--qt".
	(main): Handle --qt option. Determine the extractor only after option
	processing is complete.
	(usage): Document --qt option.
	(xgettext_record_flag): Handle format_qt.
	(language_to_extractor): For C++, return a different extractor when
	--qt was specified.
	* write-qt.h: New file.
	* write-qt.c: New file.
	* msgfmt.c: Include write-qt.h.
	(qt_mode): New variable.
	(long_options): Add option "--qt".
	(main): Handle --qt option. More checks for contradicting options.
	Call msgdomain_write_qt.
	(usage): Mention Qt mode.
	(format_directive_domain): Ignore domain directive if in Qt mode.
	* Makefile.am (noinst_HEADERS): Add write-qt.h.
	(FORMAT_SOURCE): Add format-qt.c.
	(msgfmt_SOURCES): Add write-qt.c.
	* Makefile.msvc (OBJECTS): Add format-qt.obj.
	(msgfmt_OBJECTS): Add write-qt.obj.
	(format-qt.obj, write-qt.obj): New rules.
	* Makefile.vms (OBJECTS): Add format-qt.obj.
	(msgfmt_OBJECTS): Add write-qt.obj.
	(format-qt.obj, write-qt.obj): New rules.
	* FILES: Update.

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

	Fix compilation errors in C++ mode.
	* msgfilter.c (process_string): Cast the xrealloc expression.
	* xgettext.c (language_to_extractor, extension_to_language): Move the
	typedef after the struct definition.

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

	Support CR/LF line terminators in C sources even on Unix.
	* x-c.c (phase0_getc, phase0_ungetc): New functions.
	(phase1_getc): Use them instead of calling getc/ungetc directly.
	Reported by Christoph Thielecke <u15119@hs-harz.de>.

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

	Support and recognize Objective C specific format strings.
	* message.h (enum format_type): New item format_objc.
	(NFORMATS): Increment.
	* message.c (format_language): Add an entry for format_objc.
	(format_language_pretty): Likewise.
	* format.h (formatstring_objc): New declaration.
	* format-c.c (enum format_arg_type): New item FAT_OBJC_OBJECT.
	(format_parse): Add objc_extensions argument. Handle %@ in ObjC mode.
	(format_c_parse, format_objc_parse): New functions.
	(formatstring_c): Use format_c_parse instead of format_parse.
	(formatstring_objc): New variable.
	(get_c99_format_directives): Update.
	* format.c (formatstring_parsers): Add an entry for format_objc.
	* write-mo.c (write_table): Look for system dependent strings also in
	ObjectiveC format strings.
	* x-c.h (SCANNERS_C): Use separate flag_table for ObjectiveC.
	(x_objc_keyword, init_flag_table_objc): New declarations.
	(x_c_any_keywords): Remove declaration.
	* x-c.c (c_keywords): Renamed from keywords.
	(objc_keywords): New variable.
	(add_keyword): Renamed from x_c_keyword. Add keywords table argument.
	(x_c_keyword, x_objc_keyword): New functions.
	(x_c_any_keywords): Remove function.
	(init_keywords): Also initialize ObjectiveC keyword table.
	(init_flag_table_objc): New function.
	(enum token_type_ty): New item token_type_colon.
	(phase5_get): Recognize colon.
	(enum xgettext_token_type_ty): New item xgettext_token_type_colon.
	(x_c_lex): Use keywords table depending on objc_extensions. Handle
	colon.
	(extract_parenthesized): Change the context_iter and inner_context
	after a keyword/symbol followed by a colon was seen.
	* xgettext.c (flag_table_objc): New variable.
	(main): Invoke init_flag_table_objc, x_objc_keyword. Watch out for
	keywords arguments, instead of calling x_c_any_keywords().
	(flag_context_list_table_insert): New function, extracted from
	xgettext_record_flag.
	(xgettext_record_flag): Call it. For format_c, insert the flags also
	in the flag_table_objc. Handle format_objc.
	(remember_a_message): Don't add a heuristic c-format flag to an entry
	that already carries objc-format.
	(remember_a_message_plural): Likewise.

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

	Support for GNUstep .strings format.
	* read-stringtable.h: New file.
	* read-stringtable.c: New file.
	* read-po-abstract.h (enum input_syntax_ty): New item
	syntax_stringtable.
	(po_callback_comment_dispatcher): Renamed from po_callback_comment.
	(po_callback_comment, po_callback_comment_special): New declarations.
	* read-po-abstract.c: Include read-stringtable.h.
	(po_scan): Add support for syntax_stringtable.
	(po_callback_comment_dispatcher): Renamed from po_callback_comment.
	(po_callback_comment, po_callback_comment_dot): New functions.
	(po_callback_comment_special): New function.
	* read-po.c (read_po): Set mdlp->encoding for syntax_stringtable too.
	* po-gram-gen.y: Update po_callback_comment_dispatcher call.
	* read-properties.c (properties_parse): Likewise.
	* write-stringtable.h: New file.
	* write-stringtable.c: New file.
	* write-po.h (make_format_description_string, significant_format_p):
	New declarations.
	(message_print_syntax_stringtable): New declaration.
	* write-po.c: Include write-stringtable.h.
	(make_format_description_string, significant_format_p): Make
	non-static.
	(use_syntax_stringtable): New variable.
	(message_print_syntax_stringtable): New function.
	(msgdomain_list_print): Add check for plural forms for
	syntax_stringtable too. Add support for writing the .strings format.
	* msgattrib.c (long_options): Add --stringtable-input/output.
	(main): Handle them.
	(usage): Document options --stringtable-input/output.
	* msgcat.c (long_options): Add --stringtable-input/output.
	(main): Handle them. If option --stringtable-output is used, convert to
	UTF-8 and ignore the to_code.
	(usage): Document options --stringtable-input/output.
	* msgcmp.c (long_options): Add --stringtable-input.
	(main): Handle it.
	(usage): Document option --stringtable-input.
	* msgcomm.c (long_options): Add --stringtable-input/output.
	(main): Handle them.
	(usage): Document options --stringtable-input/output.
	* msgconv.c (long_options): Add --stringtable-input/output.
	(main): Handle them. If option --stringtable-output is used, ignore the
	to_code.
	(usage): Document options --stringtable-input/output.
	* msgen.c (long_options): Add --stringtable-input/output.
	(main): Handle them.
	(usage): Document options --stringtable-input/output.
	* msgexec.c: Include limits.h.
	(long_options): Add --stringtable-input.
	(main): Handle it.
	(usage): Document option --stringtable-input.
	* msgfilter.c (long_options): Add --stringtable-input/output.
	(main): Handle them.
	(usage): Document options --stringtable-input/output.
	* msgfmt.c (long_options): Add --stringtable-input.
	(main): Handle it.
	(usage): Document option --stringtable-input.
	* msggrep.c (long_options): Add --stringtable-input/output.
	(main): Handle them.
	(usage): Document options --stringtable-input/output.
	* msginit.c (long_options): Add --stringtable-input/output.
	(main): Handle them.
	(usage): Document options --stringtable-input/output.
	* msgmerge.c (long_options): Add --stringtable-input/output.
	(main): Handle them. In update mode, --stringtable-input implies
	--stringtable-output.
	(usage): Document options --stringtable-input/output.
	* msgunfmt.c (long_options): Add --stringtable-output.
	(main): Handle it.
	(usage): Document option --stringtable-output.
	* msguniq.c (long_options): Add --stringtable-input/output.
	(main): Handle them.
	(usage): Document options --stringtable-input/output.
	* x-stringtable.h: New file.
	* x-po.c: Include x-stringtable.h.
	(extract_stringtable): New function.
	* xgettext.c: Include x-stringtable.h.
	(long_options): Add --stringtable-output.
	(main): Handle it.
	(usage): Document options -L NXStringTable and --stringtable-output.
	(finalize_header): If --stringtable-output was given, set the charset.
	(language_to_extractor): Add support for .strings format.
	(extension_to_language): Likewise.
	* Makefile.am (noinst_HEADERS): Add read-stringtable.h,
	write-stringtable.h, x-stringtable.h.
	(COMMON_SOURCE): Add read-stringtable.c.
	(libgettextsrc_la_SOURCES): Add write-stringtable.c.
	* Makefile.msvc (OBJECTS): Add read-stringtable.obj,
	write-stringtable.obj.
	(read-stringtable.obj, write-stringtable.obj): New rules.
	* Makefile.vms (OBJECTS): Add read-stringtable.obj,
	write-stringtable.obj.
	(read-stringtable.obj, write-stringtable.obj): New rules.
	* FILES: Update.

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

	* hostname.c (xgethostname): Add support for native Woe32 API.

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

	* message.c (message_list_search): Avoid casting a pointer to a local
	variable; it violated strict aliasing.

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

	* write-java.c (mkdir): Redefine on mingw.

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

	Improved ObjectiveC support.
	* x-c.h (extract_objc): New declaration.
	(SCANNERS_C): For ObjectiveC, use extract_objc.
	* x-c.c (objc_extensions): New variable.
	(enum token_type_ty): New item token_type_objc_special.
	(phase5_get): Recognize '@' for ObjectiveC.
	(phase8b_get, phase8b_unget): New functions. Handle
	token_type_white_space and token_type_eoln here instead of in x_c_lex.
	(phase8c_get, phase8c_unget): New functions.
	(phase8_get): Rely on phase8c, not phase8a. No more need to care about
	token_type_white_space and token_type_eoln.
	(x_c_lex): Drop handling of token_type_white_space and token_type_eoln.
	(extract_whole_file): Renamed from extract_c.
	(extract_c, extract_objc): New functions.

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

	* x-java.c (phase3_getc): Fix typo: Use phase2_ungetc, not phase2_getc.

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

	Portability to AIX with cc.
	* xgettext.h (struct flag_context_ty): Define the bitfields of type
	'unsigned int'.

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

	Portability to Solaris with cc.
	* x-java.c (string_buffer_append): Avoid aggregate initializer
	containing non-constant expressions.
	* xgettext.c (flag_context_list_iterator): Likewise.
	(language_to_extractor): Likewise.

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

	* xgettext.c (main): Drop suffix ".in" from input file name, if
	present, before looking at the file extension.

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

	* format-awk.c: Include xalloc.h instead of xmalloc.h.
	* format-c.c: Likewise.
	* format-elisp.c: Likewise.
	* format-gcc-internal.c: Likewise.
	* format-java.c: Likewise.
	* format-librep.c: Likewise.
	* format-lisp.c: Likewise.
	* format-pascal.c: Likewise.
	* format-perl.c: Likewise.
	* format-perl-brace.c: Likewise.
	* format-php.c: Likewise.
	* format-python.c: Likewise.
	* format-sh.c: Likewise.
	* format-tcl.c: Likewise.
	* format-ycp.c: Likewise.
	* gettext-po.c: Likewise.
	* hostname.c: Likewise.
	* message.c: Likewise.
	* msgexec.c: Likewise.
	* msgfilter.c: Likewise.
	* msgfmt.c: Likewise.
	* msggrep.c: Likewise.
	* msginit.c: Likewise.
	* msgl-cat.c: Likewise.
	* msgl-english.c: Likewise.
	* msgl-iconv.c: Likewise.
	* msgmerge.c: Likewise.
	* open-po.c: Likewise.
	* po-gram-gen.y: Likewise.
	* po-hash-gen.y: Likewise.
	* po-lex.c: Likewise.
	* read-mo.c: Likewise.
	* read-po-abstract.c: Likewise.
	* read-po.c: Likewise.
	* read-properties.c: Likewise.
	* str-list.c: Likewise.
	* write-java.c: Likewise.
	* write-mo.c: Likewise.
	* write-po.c: Likewise.
	* write-properties.c: Likewise.
	* write-tcl.c: Likewise.
	* x-awk.c: Likewise.
	* x-c.c: Likewise.
	* x-elisp.c: Likewise.
	* x-glade.c: Likewise.
	* x-java.c: Likewise.
	* x-librep.c: Likewise.
	* x-lisp.c: Likewise.
	* x-perl.c: Likewise.
	* x-php.c: Likewise.
	* x-po.c: Likewise.
	* x-python.c: Likewise.
	* x-rst.c: Likewise.
	* x-sh.c: Likewise.
	* x-smalltalk.c: Likewise.
	* x-tcl.c: Likewise.
	* x-ycp.c: Likewise.
	* xgettext.c: Likewise.

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

	More reliable subprocess cleanup.
	* msgexec.c (process_string): Pass slave_process = true to
	create_pipe_out() and wait_subprocess().
	* msgfilter.c (process_string): Pass slave_process = true to
	create_pipe_bidi() and wait_subprocess().
	* msggrep.c (is_string_selected): Pass slave_process = true to
	create_pipe_out() and wait_subprocess().
	* msginit.c (project_id, project_id_version, get_user_email,
	language_team_address): Pass slave_process = true to create_pipe_in()
	and wait_subprocess().
	* read-java.c (execute_and_read_po_output): Likewise.
	* read-tcl.c (msgdomain_read_tcl): Likewise.
	* urlget.c (execute_it, fetch): Pass slave_process = true to execute().

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

	* write-java.c: Include fatal-signal.h, not signal.h.
	(uninstall_handlers): Remove function.
	(cleanup): Remove signal argument. Don't execute the signal's default
	action; leave that to the caller.
	(install_handlers, init_signal_set, block, unblock): Remove functions.
	(msgdomain_write_java): Invoke at_fatal_signal instead of
	install_handlers/uninstall_handlers. Invoke [un]block_fatal_signals
	instead of [un]block.

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

	* xgettext.c (substring_match): Remove variable.
	(long_options): Remove --keyword-substring option.
	(main): Remove handling of --keyword-substring option.

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

	* message.h (enum is_format): New item yes_according_to_context.
	* message.c (possible_format_p): Handle also yes_according_to_context.
	* write-po.c (make_format_description_string): Likewise.

	* xgettext.h (struct flag_context_ty): New type.
	(null_context, passthrough_context): New declarations.
	(inherited_context): New declaration.
	(struct flag_context_list_ty): New type.
	(struct flag_context_list_iterator_ty): New type.
	(null_context_list_iterator, passthrough_context_list_iterator): New
	declarations.
	(flag_context_list_iterator): New declaration.
	(flag_context_list_iterator_advance): New declaration.
	(flag_context_list_table_ty): New type.
	(flag_context_list_table_lookup): New declaration.
	(xgettext_record_flag): New declaration.
	(remember_a_message, remember_a_message_plural): Add context argument.
	* xgettext.c: Include alloca.h.
	(flag_table_c, flag_table_gcc_internal, flag_table_sh,
	flag_table_python, flag_table_lisp, flag_table_elisp,
	flag_table_librep, flag_table_java, flag_table_awk, flag_table_ycp,
	flag_table_tcl, flag_table_perl, flag_table_php): New variables.
	(long_options): Add option --flag.
	(extractor_func): Add argument flag_table.
	(struct extractor_ty): New type.
	(main): Use type 'extractor_ty' instead of 'extractor_func'.
	Invoke init_flag_table_c(), init_flag_table_gcc_internal(),
	init_flag_table_sh(), init_flag_table_python(), init_flag_table_lisp(),
	init_flag_table_elisp(), init_flag_table_librep(),
	init_flag_table_java(), init_flag_table_awk(), init_flag_table_ycp(),
	init_flag_table_tcl(), init_flag_table_perl(), init_flag_table_php().
	Implement option --flag.
	(usage): Rename a section to "Language specific options". Document
	the languages to which --extract-all, --keyword, --trigraphs are
	applicable. Document option --flag.
	(null_context): New variable.
	(passthrough_context): New variable.
	(inherited_context): New function.
	(null_context_list_iterator): New variable.
	(passthrough_context_circular_list, passthrough_context_list_iterator):
	New variables.
	(flag_context_list_iterator): New function.
	(flag_context_list_iterator_advance): New function.
	(flag_context_list_table_lookup): New function.
	(xgettext_record_flag): New function.
	(extract_from_file): Change argument type to 'extractor_ty' instead of
	'extractor_func'. Set current_formatstring_parser{1,2} before invoking
	the extractor.
	(set_format_flags_from_context): New function.
	(remember_a_message): Add context argument. Set some *-format flag if
	the context specifies it.
	(remember_a_message_plural): Likewise.
	(language_to_extractor): Change return type to 'extractor_ty' instead
	of 'extractor_func'.

	* x-awk.h (SCANNERS_AWK): Refer to flag_table_awk.
	(extract_awk): Add argument flag_table.
	(init_flag_table_awk): New declaration.
	* x-awk.c (init_flag_table_awk): New function.
	(enum token_type_ty): New enum item token_type_semicolon.
	(x_awk_lex): Recognize semicolon.
	(flag_context_list_table): New variable.
	(extract_parenthesized): Add arguments outer_context, context_iter.
	Implement context handling depending on symbol before '('. Also
	recognize argument lists that start without '(', but only up to the
	next semicolon.
	(extract_awk): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-c.h (SCANNERS_C): Refer to flag_table_c, flag_table_gcc_internal.
	(extract_c): Add argument flag_table.
	(init_flag_table_c): New declaration.
	(init_flag_table_gcc_internal): New declaration.
	* x-c.c (init_flag_table_c): New function.
	(init_flag_table_gcc_internal): New function.
	(enum xgettext_token_type_ty): New item xgettext_token_type_other.
	(x_c_lex): For token_type_name, put the string into the resulting
	token instead of freeing it. Return token type
	xgettext_token_type_other instead of xgettext_token_type_symbol in
	some cases.
	(flag_context_list_table): New variable.
	(extract_parenthesized): Add arguments outer_context, context_iter.
	Implement context handling depending on symbol before '('.
	(extract_c): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-elisp.h (SCANNERS_ELISP): Refer to flag_table_elisp.
	(extract_elisp): Add argument flag_table.
	(init_flag_table_elisp): New declaration.
	* x-elisp.c (init_flag_table_elisp): New function.
	(flag_context_list_table): New variable.
	(read_object): Add argument outer_context. Implement context handling
	depending on first symbol after '('.
	(extract_elisp): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-glade.h (SCANNERS_GLADE): Update.
	(extract_glade): Add argument flag_table.
	* x-glade.c (start_element_handler, end_element_handler): Pass null
	context to remember_a_message.
	(extract_glade): Add argument flag_table.

	* x-java.h (SCANNERS_JAVA): Refer to flag_table_java.
	(extract_java): Add argument flag_table.
	(init_flag_table_java): New declaration.
	* x-java.c (init_flag_table_java): New function.
	(flag_context_list_table): New variable.
	(extract_parenthesized): Add arguments outer_context, context_iter.
	Implement context handling depending on symbol before '('.
	(extract_java): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-librep.h (SCANNERS_ELISP): Refer to flag_table_librep.
	(extract_librep): Add argument flag_table.
	(init_flag_table_librep): New declaration.
	* x-librep.c (init_flag_table_librep): New function.
	(flag_context_list_table): New variable.
	(read_object): Add argument outer_context. Implement context handling
	depending on first symbol after '('.
	(extract_librep): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-lisp.h (SCANNERS_LISP): Refer to flag_table_lisp.
	(extract_lisp): Add argument flag_table.
	(init_flag_table_lisp): New declaration.
	* x-lisp.c (init_flag_table_lisp): New function.
	(flag_context_list_table): New variable.
	(read_object): Add argument outer_context. Implement context handling
	depending on first symbol after '('.
	(extract_lisp): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-perl.h (SCANNERS_PERL): Refer to flag_table_perl.
	(extract_perl): Add argument flag_table.
	(init_flag_table_perl): New declaration.
	* x-perl.c (init_flag_table_java): New function.
	(flag_context_list_table): New variable.
	(extract_variable): Update. Implement context handling depending on
	symbol before '{'...'}'.
	(interpolate_keywords): Implement context handling depending on symbol
	before '->' or '{'...'}'.
	(extract_balanced): Add arguments outer_context, context_iter.
	Implement context handling depending on symbol before '('. Also
	recognize argument lists that start without '('.
	(extract_perl): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-php.h (SCANNERS_PHP): Refer to flag_table_php.
	(extract_php): Add argument flag_table.
	(init_flag_table_php): New declaration.
	* x-php.c (init_flag_table_php): New function.
	(flag_context_list_table): New variable.
	(extract_parenthesized): Add arguments outer_context, context_iter.
	Implement context handling depending on symbol before '('.
	(extract_php): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-po.h (SCANNERS_PO): Update.
	(extract_po): Add argument flag_table.
	* x-properties.h (SCANNERS_PROPERTIES): Update.
	(extract_properties): Add argument flag_table.
	* x-po.c (extract_po): Add argument flag_table.
	(extract_properties): Add argument flag_table.

	* x-python.h (SCANNERS_PYTHON): Refer to flag_table_python.
	(extract_python): Add argument flag_table.
	(init_flag_table_python): New declaration.
	* x-python.c (init_flag_table_python): New function.
	(flag_context_list_table): New variable.
	(extract_parenthesized): Add arguments outer_context, context_iter.
	Implement context handling depending on symbol before '('.
	(extract_python): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-rst.h (SCANNERS_RST): Update.
	(extract_rst): Add argument flag_table.
	* x-rst.c (extract_rst): Add argument flag_table.

	* x-sh.h (SCANNERS_SH): Refer to flag_table_sh.
	(extract_sh): Add argument flag_table.
	(init_flag_table_sh): New declaration.
	* x-sh.c (init_flag_table_sh): New function.
	(flag_context_list_table): New variable.
	(read_word): Add context argument.
	(read_command): Add outer_context argument. Implement context handling
	depending on first symbol of command.
	(read_command_list): Add outer_context argument.
	(extract_sh): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-smalltalk.h (SCANNERS_SMALLTALK): Update.
	(extract_smalltalk): Add argument flag_table.
	* x-smalltalk.c (extract_smalltalk): Add argument flag_table.

	* x-tcl.h (SCANNERS_TCL): Refer to flag_table_tcl.
	(extract_tcl): Add argument flag_table.
	(init_flag_table_tcl): New declaration.
	* x-tcl.c (init_flag_table_tcl): New function.
	(flag_context_list_table): New variable.
	(accumulate_word): Add context argument.
	(read_word): Add context argument.
	(read_command): Add outer_context argument. Implement context handling
	depending on first symbol of command.
	(read_command_list): Add outer_context argument.
	(extract_tcl): Add argument flag_table. Initialize
	flag_context_list_table.

	* x-ycp.h (SCANNERS_YCP): Refer to flag_table_ycp.
	(extract_ycp): Add argument flag_table.
	(init_flag_table_ycp): New declaration.
	* x-ycp.c (init_flag_table_ycp): New function.
	(flag_context_list_table): New variable.
	(extract_parenthesized): New function, split off from extract_ycp.
	Implement context handling depending on symbol before '('.
	(extract_ycp): Add argument flag_table. Initialize
	flag_context_list_table. Call extract_parenthesized to do the work.

	* po-lex.c (mbfile_getc, control_sequence): Remove explicit marking of
	strings as c-format, now done by xgettext.

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

	* x-awk.c (extract_parenthesized): Remove optimization of the
	extract_all case.
	* x-c.c (extract_parenthesized): Likewise.
	* x-elisp.c (read_object): Likewise.
	* x-librep.c (read_object): Likewise.
	* x-lisp.c (read_object): Likewise.
	* x-perl.c (x_perl_prelex, extract_balanced): Likewise.
	* x-php.c (extract_parenthesized): Likewise.
	* x-python.c (extract_parenthesized): Likewise.
	* x-sh.c (read_command): Likewise.

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

	* msgmerge.c (main): Make option -N work.
	Reported by Liu Garfield <jackliu9999@hotmail.com>.

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

	New Java backend.
	* x-java.c: New file.
	* x-java.l: Remove file.
	* Makefile.am (xgettext_SOURCES): Add x-java.c, remove x-java.l.
	(x-java.c): Remove rule.
	* FILES: Update.

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

	* x-glade.c (start_element_handler): Implement extract_all behaviour.

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

	* x-glade.c (do_extract_glade): Initialize stack_depth.
	* x-perl.c (extract_perl): Initialize linesize and linepos.

	* x-python.c (phase2_getc): Set last_comment_line.
	(phase5_get): Set last_non_comment_line.

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

	* x-glade.c: Don't include msgl-ascii.h and msgl-iconv.h.
	* x-python.c: Likewise.
	* x-tcl.c: Likewise.

2003-10-06  Guido Flohr  <guido@imperia.net>
            Bruno Haible  <bruno@clisp.org>

	* x-perl.c (enum symbol_type_ty): New enum.
	(struct token_ty): Rename field string_type to sub_type and change its
	type to 'int'.
	(extract_quotelike_pass3, interpolate_keywords): Update.
	(x_perl_prelex): Set sub_type also for symbol tokens.
	(x_perl_lex): Special handling of prototype argument lists.
	Reported by Crispin Flowerday <cflowerday@zeus.com>.

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

	* x-sh.c (read_word): Warn about $"...".

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

	* gettext-po.h (po_file_domain_header, po_header_field,
	po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format): New
	declarations.
	* gettext-po.c (po_file_domain_header, po_header_field,
	po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format): New
	functions.
	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 1:0:1.

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

	* plural-count.c: Include plural-count.h.
	* x-po.c: Include x-properties.h.
	* x-java.l (append_strings): Change argument type to 'const char *'.

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

	* msgfmt.c (check_plural_eval): Mark some strings as c-format.
	(msgfmt_add_message): Make static.
	* po-lex.c (mbfile_getc, control_sequence): Mark some strings as
	c-format.

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

	* FILES: Update.

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

	More reliable checking for read errors.
	* po-lex.c (mbfile_getc): Diagnose read errors also in the middle of
	multibyte characters.
	(lex_getc): Diagnose read errors also right after backslash.
	* x-rst.c (extract_rst): Diagnose read errors also inside ConstName
	and immediately after #.

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

	* write-mo.c: Include fwriterror.h.
	(msgdomain_write_mo): Use fwriteerror, to get right errno value in
	error message about write error.
	* write-po.c: Include fwriterror.h.
	(msgdomain_list_print): Use fwriteerror, to get right errno value in
	error message about write error.
	* write-java.c: Include fwriterror.h.
	(msgdomain_write_java): Use fwriteerror, to get right errno value in
	error message about write error.
	* write-tcl.c: Include fwriterror.h.
	(msgdomain_write_tcl): Use fwriteerror, to get right errno value in
	error message about write error.

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

	* xgettext.c (from_current_source_encoding): Use multiline_error,
	for a prettier error message.

	* x-perl.c (extract_quotelike_pass1): Store counter_delim instead of
	EOF as delimiter, to avoid error during from_current_source_encoding.
	Reported by Crispin Flowerday <cflowerday@zeus.com>.

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

	* format-sh.c (INVALID_SHELL_SYNTAX,
	INVALID_CONTEXT_DEPENDENT_VARIABLE): New macros.
	(format_parse): Reject constructs like ${variable-default} and $?.

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

	Fix behaviour of "<program> --help > /dev/full".
	* hostname.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgattrib.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgcat.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgcmp.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgcomm.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgconv.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgen.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgexec.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgfilter.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgfmt.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msggrep.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msginit.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgmerge.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msgunfmt.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* msguniq.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* urlget.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* xgettext.c: Include closeout.h.
	(main): Register close_stdout for execution at program exit.
	* write-po.c (msgdomain_list_print): Don't fclose (stdout) here.

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

	* po-lex.c (mbfile_getc): Handle unexpected return value of
	u8_mbtouc(). Reported by Jochen Hein <jochen@jochen.org>.

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

	* read-properties.c (phase4_getuc): Cast line_number to 'unsigned long'
	before outputting it.

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

	* po-lex.c: Test HAVE_DECL_GETC_UNLOCKED instead of HAVE_GETC_UNLOCKED.
	* write-po.c: Test HAVE_DECL_PUTC_UNLOCKED instead of
	HAVE_PUTC_UNLOCKED.

2003-09-09  Guido Flohr  <guido@imperia.net>

	* x-perl.c (extract_quotelike_pass3): Change \l handling to no longer
	eat up non-uppercase characters; likewise for \u. Also make \l and \u
	work on characters written using hex or octal escape sequence. Fix \Q
	handling. With option --extract-all, avoid "invalid variable
	interpolation" warnings.
	(x_perl_prelex): With option --extract-all, keep variables inside
	double-quoted strings untouched.

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

	* x-sh.h: New file.
	* x-sh.c: New file.
	* xgettext.c: Include x-sh.h.
	(main): Call x_sh_extract_all, x_sh_keyword.
	(usage): Mention Shell language.
	(language_to_extractor): Add Shell rule.
	(extension_to_language): Add Shell rule.
	* Makefile.am (noinst_HEADERS): Add x-sh.h.
	(xgettext_SOURCES): Add x-sh.c.
	* Makefile.msvc (xgettext_OBJECTS): Add x-sh.obj.
	(x-sh.obj): New rule.
	* Makefile.vms (xgettext_OBJECTS): Add x-sh.obj.
	(x-sh.obj): New rule.

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

	* format-sh.c: New file.
	* message.h (format_sh): New enum value.
	(NFORMATS): Increment.
	* format.h (formatstring_sh): New declaration.
	* format.c (formatstring_parsers): Add entry for sh.
	* message.c (format_language, format_language_pretty): Likewise.
	* Makefile.am (FORMAT_SOURCE): Add format-sh.c.
	* Makefile.msvc (OBJECTS): Add format-sh.obj.
	(format-sh.obj): New rule.
	* Makefile.vms (OBJECTS): Add format-sh.obj.
	(format-sh.obj): New rule.

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

	* format-gcc-internal.c (isdigit): Remove unused macro.
	* format-perl-brace.c (isdigit): Likewise.

2003-09-01  Guido Flohr  <guido@imperia.net>

	* x-perl.c (extract_balanced): Access the global last_token.
	Initialize last_token and prefer_division_over_regexp here. 
	(extract_perl): Not here.

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

	* x-perl.c: Include getline.h.

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

	* Makefile.msvc (format.obj, msgmerge.obj, xgettext.obj, msgattrib.obj,
	msgcat.obj, msgcomm.obj, msgconv.obj, msgen.obj, msgfilter.obj,
	msggrep.obj, msguniq.obj): Compile these in C++ mode. This works around
	the "non-constant initializer" error that we get for addresses of
	variables in DLLs in C mode.

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

	* msgfilter.c (process_message): Cast xrealloc() result.

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

	* msgfilter.c: On Windows, include <io.h> instead of <unistd.h>.
	* msggrep.c: Likewise.

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

	* plural-count.h: New file.
	* plural-count.c: New file, extracted from msgmerge.c.
	* msgmerge.c: Include plural-count.h instead of plural-exp.h.
	(match_domain): Use function get_plural_count().
	* Makefile.am (noinst_HEADERS): Add plural-count.h.
	(msgmerge_SOURCES): Add plural-count.c.
	* Makefile.msvc (msgmerge_OBJECTS): Add plural-count.obj.
	(plural-count.obj): New rule.
	* Makefile.vms (msgmerge_OBJECTS): Add plural-count.obj.
	(plural-count.obj): New rule.

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

	Support for building DLLs on Windows.
	* format.h (formatstring_c, formatstring_python, formatstring_lisp,
	formatstring_elisp, formatstring_librep, formatstring_smalltalk,
	formatstring_java, formatstring_awk, formatstring_pascal,
	formatstring_ycp, formatstring_tcl, formatstring_perl,
	formatstring_perl_brace, formatstring_php, formatstring_gcc_internal,
	formatstring_parsers): Add DLL_VARIABLE attribute.
	* message.h (format_language, format_language_pretty): Likewise.
	* msgl-cat.h (more_than, less_than, use_first, msgcomm_mode,
	omit_header): Likewise.
	* plural-table.h (plural_table, plural_table_size): Likewise.
	* po-charset.h (po_charset_ascii, po_charset_utf8, po_lex_charset,
	po_lex_iconv, po_lex_weird_cjk): Likewise.
	* po-lex.h (gram_pos, gram_pos_column, gram_max_allowed_errors,
	pass_obsolete_entries): Likewise.
	* read-po.h (line_comment, allow_duplicates, input_syntax): Likewise.
	* write-mo.h (alignment, no_hash_table): Likewise.
	* Makefile.am (po-gram-gen2.h): Likewise.

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

	* Makefile.msvc (gettext-po.obj, gettextpo.lib, gettextpo.res): New
	rules.
	(all): Depend on gettextpo.lib.
	(install, installdirs, uninstall): Install/uninstall gettext-po.h,
	gettextpo.dll and gettextpo.lib.
	* Makefile.vms (gettext-po.obj, gettextpo.olb): New rules.
	(all): Depend on gettextpo.olb.
	(install, installdirs, uninstall): Install/uninstall gettext-po.h,
	gettextpo.olb.

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

	* dir-list.h: Make this file includable in C++ mode: add extern "C".
	* file-list.h: Likewise.
	* format.h: Likewise.
	* message.h: Likewise.
	* msgl-ascii.h: Likewise.
	* msgl-cat.h: Likewise.
	* msgl-charset.h: Likewise.
	* msgl-english.h: Likewise.
	* msgl-equal.h: Likewise.
	* msgl-iconv.h: Likewise.
	* open-po.h: Likewise.
	* po-charset.h: Likewise.
	* po-lex.h: Likewise.
	* po-time.h: Likewise.
	* read-po-abstract.h: Likewise.
	* str-list.h: Likewise.
	* write-po.h: Likewise.
	* xgettext.h: Likewise.
	* read-po.h: Likewise.
	(this): Redefine to a different symbol.
	* xgettext.c: Add extern "C" around all "x-*.h" includes.

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

	* format-awk.c: Include error-progname.h instead of progname.h.
	* format-c.c: Likewise.
	* format-elisp.c: Likewise.
	* format-gcc-internal.c: Likewise.
	* format-java.c: Likewise.
	* format-librep.c: Likewise.
	* format-lisp.c: Likewise.
	* format-pascal.c: Likewise.
	* format-perl.c: Likewise.
	* format-perl-brace.c: Likewise.
	* format-php.c: Likewise.
	* format-python.c: Likewise.
	* format-tcl.c: Likewise.
	* format-ycp.c: Likewise.
	* po-lex.h: Likewise.
	* read-properties.c: Likewise.
	* write-po.c: Likewise.
	* x-awk.c: Likewise.
	* x-c.c: Likewise.
	* x-perl.c: Likewise.
	* x-python.c: Likewise.
	* x-rst.c: Likewise.
	* hostname.c: Include error-progname.h.
	* msgattrib.c: Likewise.
	* msgcat.c: Likewise.
	* msgcmp.c: Likewise.
	* msgcomm.c: Likewise.
	* msgconv.c: Likewise.
	* msgen.c: Likewise.
	* msgexec.c: Likewise.
	* msgfilter.c: Likewise.
	* msgfmt.c: Likewise.
	* msggrep.c: Likewise.
	* msginit.c: Likewise.
	* msgmerge.c: Likewise.
	* msgunfmt.c: Likewise.
	* msguniq.c: Likewise.
	* urlget.c: Likewise.
	* xgettext.c: Likewise.
	* po-lex.c: Include error-progname.h and pos.h.

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

	* msginit.c (catalogname_for_locale): Add entries for Aragonese,
	Haitian, Sichuan Yi, Limburgish.
	(englishname_of_language): Likewise.

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

	* format-gcc-internal.c: New file.
	* message.h (format_gcc_internal): New enum value.
	(NFORMATS): Increment.
	* format.h (formatstring_gcc_internal): New declaration.
	* format.c (formatstring_parsers): Add entry for gcc_internal.
	* message.c (format_language, format_language_pretty): Likewise.
	* x-c.h (SCANNERS_C): Add an entry for GCC-source.
	* xgettext.c (usage): Mention GCC-source language.
	* Makefile.am (FORMAT_SOURCE): Add format-gcc-internal.c.
	* Makefile.msvc (OBJECTS): Add format-gcc-internal.obj.
	(format-gcc-internal.obj): New rule.
	* Makefile.vms (OBJECTS): Add format-gcc-internal.obj.
	(format-gcc-internal.obj): New rule.

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

	* x-perl.c (extract_quotelike_pass3): Fix \x handling.
	Reported by Guido Flohr.

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

	* format-perl-brace.c: Renamed from format-perl-bracket.c. Recognize
	braces instead of brackets.
	* format.h (formatstring_perl_brace): Renamed from
	formatstring_perl_bracket.
	* format.c (formatstring_parsers): Add formatstring_perl_brace, remove
	formatstring_perl_bracket.
	* message.h (enum format_type): Add format_perl_brace, remove
	format_perl_bracket.
	* message.c (format_language, format_language_pretty): Update.
	* x-perl.h (SCANNERS_PERL): Update.
	* Makefile.am (FORMAT_SOURCE): Add format-perl-brace.c, remove
	format-perl-bracket.c.
	* Makefile.msvc (OBJECTS): Add format-perl-brace.obj, remove
	format-perl-bracket.obj.
	(format-perl-brace.obj): Renamed from format-perl-bracket.obj.
	* Makefile.vms (OBJECTS): Add format-perl-brace.obj, remove
	format-perl-bracket.obj.
	(format-perl-brace.obj): Renamed from format-perl-bracket.obj.

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

	Support for PHP >= 4.2.0.
	* x-php.c (init_keywords): Add ngettext, dngettext, dcngettext to the
	built-in keywords.
	Reported by A. Sopicki <a.sopicki@gmx.de>.

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

	* xgettext.h (from_current_source_encoding): New declaraction.
	* xgettext.c (from_current_source_encoding): New function.
	(CONVERT_STRING): Use it.
	* x-perl.c: Include po-charset.h.
	(get_here_document): Convert each line to UTF-8.
	(phase2_getc): Convert each comment to UTF-8. Tell xgettext_comment_add
	to not convert it.
	(extract_quotelike_pass1_utf8): New function.
	(extract_quotelike): Use extract_quotelike_pass1_utf8.
	(extract_triple_quotelike): Likewise.
	(extract_variable): Tell remember_a_message to not convert the string.
	(interpolate_keywords): Likewise.
	(extract_balanced): Tell remember_a_message, remember_a_message_plural
	to not convert the string.

2003-06-23  Guido Flohr  <guido@imperia.net>

	* x-perl.c (extract_quotelike_pass3): Fix handling of doubled
	backslashes in single-quoted strings.

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

	* format-perl-bracket.c (format_check): Allow additional bracketed
	items in the msgstr.

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

	* write-properties.c: Don't include exit.h and gettext.h.

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

	* x-php.c (phase3_ungetc): Comment out unused function.

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

	* format-perl.c: Complete rewrite.
	* format-perl-bracket.c: New file.
	* message.h (format_perl_bracket): New enum value.
	(NFORMATS): Increment.
	* format.h (formatstring_perl_bracket): New declaration.
	* format.c (formatstring_parsers): Add entry for perl_bracket.
	* message.c (format_language, format_language_pretty): Likewise.
	* x-perl.h (SCANNERS_PERL): Use formatstring_perl and
	formatstring_perl_bracket.
	* Makefile.am (FORMAT_SOURCE): Add format-perl-bracket.c.
	* Makefile.msvc (OBJECTS): Add format-perl.obj,format-perl-bracket.obj.
	(xgettext_OBJECTS): Add x-perl.obj.
	(format-perl.obj, format-perl-bracket.obj, x-perl.obj): New rules.
	* Makefile.vms (OBJECTS): Add format-perl.obj, format-perl-bracket.obj.
	(xgettext_OBJECTS): Add x-perl.obj.
	(format-perl.obj, format-perl-bracket.obj, x-perl.obj): New rules.

	* x-perl.c (extract_quotelike_pass3): Don't give an invalid
	interpolation error for a backslashed dollar sign.

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

	* x-perl.c (extract_quotelike_pass3): Fix handling of double backslash.

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

	* x-perl.c (enum string_type_ty): Remove trailing comma.
	(interpolate_keywords::enum parser_state): Likewise.
	(extract_quotelike_pass3): Cast first argument of u8_uctomb().

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

	* x-awk.c: Reorder definitions.
	* x-c.c: Reorder definitions.
	* x-perl.c: Reorder definitions.
	* x-php.c: Reorder definitions.
	* x-python.c: Reorder definitions.
	* x-smalltalk.c: Reorder definitions.
	* x-ycp.c: Reorder definitions.

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

	* x-perl.c (struct stack_entry): Remove type.
	(struct stack): Remove type.
	(struct token_stack_ty): New type.
	(token_stack): Change type to 'struct token_stack_ty'.
	(token_stack_dump): Renamed from stack_dump. Update.
	(token_stack_push): Renamed from stack_unshift. Rewritten.
	(token_stack_pop): Renamed from stack_shift. Rewritten.
	(token_stack_peek): Renamed from stack_head. Rewritten.
	(token_stack_free): Renamed from stack_free. Rewritten.
	(x_perl_lex, x_perl_unlex, extract_perl): Update.

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

	* x-perl.c (DEBUG_MEMORY): Remove macro.
	(remember_a_message_debug, remember_a_message_plural_debug,
	xmalloc_debug, xrealloc_debug, xrealloc_static_debug, xstrdup_debug,
	free_debug): Remove functions.
	(xrealloc_static): Remove macro. Use xrealloc instead.

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

	* x-awk.c (phase2_getc, x_awk_lex): Increase bufmax proportionally.
	* x-c.c (comment_add, comment_line_end, phase5_get, phase6_get):
	Likewise.
	* x-elisp.c (comment_add, comment_line_end): Likewise.
	* x-librep.c (comment_add, comment_line_end): Likewise.
	* x-lisp.c (comment_add, comment_line_end): Likewise.
	* x-php.c (comment_add, comment_line_end, x_php_lex): Likewise.
	* x-python.c (comment_add, comment_line_end, phase5_get): Likewise.
	* x-rst.c (extract_rst): Likewise.
	* x-smalltalk.c (comment_add, comment_line_end, phase2_get): Likewise.
	* x-tcl.c (comment_add, comment_line_end): Likewise.
	* x-ycp.c (phase2_getc, x_ycp_lex): Likewise.

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

	* xgettext.c (current_formatstring_parser1,
	current_formatstring_parser2): New variables, replacing
	current_formatstring_parser.
	(remember_a_message, remember_a_message_plural): Try both
	formatstring parsers.
	(language_to_extractor): Allow two formatstring parsers per language,
	not just one.
	* x-perl.h (SCANNERS_PERL): Add formatstring_c as secondary format
	string parser.
	* x-awk.h (SCANNERS_AWK): Update.
	* x-c.h (SCANNERS_C): Update.
	* x-elisp.h (SCANNERS_ELISP): Update.
	* x-glade.h (SCANNERS_GLADE): Update.
	* x-java.h (SCANNERS_JAVA): Update.
	* x-librep.h (SCANNERS_LIBREP): Update.
	* x-lisp.h (SCANNERS_LISP): Update.
	* x-php.h (SCANNERS_PHP): Update.
	* x-po.h (SCANNERS_PO): Update.
	* x-properties.h (SCANNERS_PROPERTIES): Update.
	* x-python.h (SCANNERS_PYTHON): Update.
	* x-rst.h (SCANNERS_RST): Update.
	* x-smalltalk.h (SCANNERS_SMALLTALK): Update.
	* x-tcl.h (SCANNERS_TCL): Update.
	* x-ycp.h (SCANNERS_YCP): Update.

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

	* x-perl.c (case_whitespace): New macro.
	(is_whitespace): New function.
	(interpolate_keywords): Add lineno argument. Track newlines to update
	lineno while processing the string. Use is_whitespace.
	(extract_triple_quotelike): Update. Use is_whitespace.
	(extract_variable): Simplify: add final NUL byte only when done. Use
	is_whitespace.
	(x_perl_prelex): Use is_whitespace. After reading a here document, use
	line_number+1, not line_number. Fix buffer overrun in <<XYZ handling.
	(collect_message): Use is_whitespace.
	(extract_balanced): Call free_token at the end of the loop, not at the
	beginning.

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

	* x-perl.c (enum token_type_ty): Reorder, so as to simplify the
	function free_token().
	(struct token_ty): Fix comments.
	(token2string): Add const.
	(token_stack): Make static.
	(*_debug, stack_dump): Remove all fflushs.
	(linebuf, linesize, linepos, linebuf_size, last_token, here_eaten,
	end_of_file): Make static.
	(last_string, last_string_finished): Remove unused variables.
	(phase1_getc, get_here_document, skip_pod): Test getline() result
	for being < 0, not == EOF.
	(phase1_ungetc): Signal internal error through abort(), not exit().
	(get_here_document): Tweak. Increase bufmax proportionally.
	(phase2_getc): Increase bufmax proportionally.
	(prefer_division_over_regexp): Fix comment.
	(extract_hex, extract_oct): Add const. Simplify.
	(extract_quotelike): Add a safety check.
	(extract_quotelike_pass1): Increase bufmax proportionally. Fix
	insufficient memory allocation at "bufpos + len >= bufmax".
	(extract_quotelike_pass3): Increase bufmax proportionally. Make crs
	const. After \x{ABC} position crs after the closing brace. Simplify \c
	code. Reduce memory allocation when \N{ABC} is seen. Fix bug in \l and
	\u. Fix error message when $ or @ is seen.
	(extract_variable): Increase bufmax proportionally.
	(interpolate_keywords): Likewise. Convert c's value to unsigned char.
	(x_perl_prelex): Increase bufmax proportionally. Compute 4th argument
	to extract_triple_quotelike completely.
	(extract_perl): Initialize token_stack correctly.

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

	* msgexec.c (process_string): Pass null_stderr=false.
	* msgfilter.c (process_string): Likewise.
	* msggrep.c (is_string_selected): Likewise.
	* read-java.c (execute_and_read_po_output): Likewise.
	* read-tcl.c (msgdomain_read_tcl): Likewise.
	* msginit.c (project_id, project_id_version, get_user_email,
	language_team_address): Return a default value if the subprocess
	fails, instead of exiting.

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

	* Makefile.am (noinst_HEADERS): Add x-perl.h.
	(FORMAT_SOURCE): Add format-perl.c.
	(xgettext_SOURCES): Add x-perl.c.
	* message.h (enum format_type): Mention perl between tcl and php.
	* message.c (format_language, format_language_pretty): Likewise.
	* format.h (formatstring_perl): Likewise.
	* format.c (formatstring_parsers): Likewise.
	* format-perl.c: Use GNU coding style. Prefer xmalloc over xcalloc.
	* x-perl.h: Assume ANSI C.
	* x-perl.c: Assume ANSI C. Use GNU coding style. Prefer xmalloc over
	xcalloc.
	(token_buf): Remove unused variable.
	(xcalloc_debug, stack_push, stack_pop): Remove unused functions.
	* xgettext.c: Mention perl between tcl and php.

2003-06-11  Guido Flohr  <guido@imperia.net>

	* message.h (enum format_type): New enum value 'format_perl'.
	(NFORMATS): Increment.
	* message.c (format_language, format_language_pretty): Add entry
	for perl.
	* format.h (formatstring_perl): New declaration.
	* format-perl.c: New file.
	* format.c (formatstring_parsers): Add entry for perl.
	* x-perl.h: New file.
	* x-perl.c: New file.
	* xgettext.c: Include x-perl.h.
	(main): Call x_perl_extract_all, x_perl_keyword.
	(usage): Mention Perl language.
	(language_to_extractor): Add Perl rule.
	(extension_to_language): Add Perl rule.

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

	* Makefile.vms (LDADD): Take options from .opt files.
	(libiconv.opt): New rule.
	(msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe, xgettext.exe,
	msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
	msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
	Depend on it.
	* plural-eval.c: Include "eval-plural.h" without a path, rely on the
	Makefile's -I options instead.
	* read-properties.c (conv_from_java): Change type of q to
	'unsigned char *'.
	Reported by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.

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

	* plural-table.c (plural_table): Correct entry for Slovak.
	Reported by Marcel Telka <marcel@telka.sk>.

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

	* x-glade.h (EXTENSIONS_GLADE): Also recognize the .glade2 extension.
	* x-glade.c (start_element_handler): Also extract strings according to
	Glade 2 conventions.

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

	* gettext-0.12.1 released.

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

	* msggrep.c (main) [Solaris]: Fix syntax error.
	Reported by Valery Beaud <valery.beaud@art.alcatel.fr>.

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

	* xgettext.c (output_syntax): New variable.
	(main): Set it.
	(finalize_header): If --properties-output was given, set the charset.

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

	* Makefile.msvc (DEBUGFLAGS): New variable.
	(gettextsrc.lib): Use it.
	(msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe, xgettext.exe,
	msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
	msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
	Use it, and MFLAGS too.

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

	* gettext-0.12 released.

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

	* Makefile.msvc (msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe,
	msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
	msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
	Link with iconv.lib, needed by intl.lib.

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

	* msginit.c (F_OK): Provide a fallback value.
	Reported by Perry Rapp.

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

	* msgl-iconv.c (iconv_string): Don't return -1 just because the string
	is longer than 4 KB.
	Reported by Denis Barbier <barbier@linuxfr.org>.

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

	* po-lex.h (po_gram_error): Don't use ISO C 99 feature on DEC C.
	* po-lex.c (po_gram_error): LIkewise.

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

	* msgfilter.c: Include <sys/select.h> also on EMX.
	Reported by Andreas Buening <andreas.buening@nexgo.de>.

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

	* message.h (msgdomain_list_ty): Add field 'encoding'.
	* message.c (msgdomain_list_alloc): Initialize it.
	* read-properties.h: New file.
	* read-properties.c: New file.
	* read-po-abstract.h (abstract_po_reader_class_ty): In
	directive_message field, add force_fuzzy argument.
	(po_scan_start, po_scan_end): Remove declarations.
	(input_syntax_ty): New type.
	(po_callback_message): Add force_fuzzy argument.
	* read-po-abstract.c (call_directive_message, po_callback_message):
	Add force_fuzzy argument.
	(po_scan_start, po_scan_end): Make static.
	(po_scan): Add support for syntax_properties. Move
	error_message_count handling to here.
	(po_callback_message): Move po_lex_charset_set invocation away.
	* read-po.h (default_po_reader_class_ty): In add_message field, add
	force_fuzzy argument.
	(default_directive_message, default_add_message): Add force_fuzzy
	argument.
	(inout_syntax): New declaration.
	* read-po.c (call_add_message): Add force_fuzzy argument.
	(default_directive_message, default_add_message): Likewise.
	(input_syntax): New variable.
	(read_po): Pass input_syntax to po_scan(). Set mdlp->encoding if
	possible.
	* po-gram-gen.y: Pass force_fuzzy = false.
	(do_callback_message): New function. Move po_lex_charset_set
	invocation to here.
	* po-lex.c (lex_end): Move error_message_count handling away.
	* write-properties.h: New file.
	* write-properties.c: New file.
	* write-po.h (message_print_syntax_properties): New declaration.
	* write-po.c (use_syntax_properties): New variable.
	(message_print_syntax_properties): New function.
	(msgdomain_list_print_po): New function, extracted from
	msgdomain_list_print.
	(msgdomain_list_print): Add check for plural forms. Add support for
	writing the .properties format.
	(extract_po): Renamed from extract. 
	* write-java.h (msgdomain_write_java): Add canon_encoding argument.
	* write-java.c (msgdomain_write_java): Likewise.
	* write-tcl.h (msgdomain_write_tcl): Likewise.
	* write-tcl.c (msgdomain_write_tcl): Likewise.
	* msgl-cat.c (catenate_msgdomain_list): Use mdlp->encoding if there
	is no header entry. Set total_mdlp->encoding if possible.
	* msgl-iconv.c (iconv_msgdomain_list): Use mdlp->encoding if there
	is no header entry. Set mdlp->encoding.
	* msgattrib.c (long_options): Add --properties-input/output.
	(main): Handle them.
	(usage): Document options -P and -p.
	* msgcat.c (long_options): Add --properties-input/output.
	(main): Handle them. If option -p is used, convert to UTF-8 and
	ignore the to_code.
	(usage): Document options -P and -p.
	* msgcomm.c (long_options): Add --properties-input/output.
	(main): Handle them.
	(usage): Document options -P and -p.
	* msgconv.c (long_options): Add --properties-input/output.
	(main): Handle them. If option -p is used, ignore the to_code.
	(usage): Document options -P and -p.
	* msgen.c (long_options): Add --properties-input/output.
	(main): Handle them.
	(usage): Document options -P and -p.
	* msgfilter.c (long_options): Add --properties-input/output.
	(main): Handle them.
	(usage): Document options -P and -p.
	* msggrep.c (long_options): Add --properties-input/output.
	(main): Handle them.
	(usage): Document options -P and -p.
	* msginit.c (long_options): Add --properties-input/output.
	(main): Handle them.
	(usage): Document options -P and -p.
	* msgmerge.c (long_options): Add --properties-input/output.
	(main): Handle them. In update mode, --properties-input implies
	--properties-output.
	(usage): Document options -P and -p.
	(merge): Set result->encoding if possible.
	* msguniq.c (long_options): Add --properties-input/output.
	(main): Handle them.
	(usage): Document options -P and -p.
	* msgcmp.c (long_options): Add --properties-input.
	(main): Handle it.
	(usage): Document option -P.
	* msgexec.c (long_options): Add --properties-input.
	(main): Handle it.
	(usage): Document option -P.
	* msgfmt.c (long_options): Add --properties-input.
	(main): Handle it. Pass the known canon_encoding to
	msgdomain_write_java and msgdomain_write_tcl.
	(usage): Document option -P.
	(msgfmt_add_message): Add force_fuzzy argument.
	(read_po_file_msgfmt): Pass input_syntax to po_scan().
	* msgunfmt.c (long_options): Add --properties-output.
	(main): Handle it.
	(usage): Document option -p.
	* x-properties.h: New file.
	* x-po.c (extract_add_message): Add force_fuzzy argument.
	(extract): Renamed from extract_po. Pass input_syntax to po_scan().
	(extract_po): New function.
	(extract_properties): New function.
	* xgettext.h: Include read-po.h.
	* xgettext.c (long_options): Add --properties-output.
	(main): Handle it.
	(usage): Document options -L JavaProperties and --properties-output.
	(exclude_directive_message): Add force_fuzzy argument.
	(read_exclusion_file): Pass input_syntax to po_scan().
	(table): Add support for .properties format.
	* Makefile.am (noinst_HEADERS): Add read-properties.h,
	write-properties.h, x-properties.h.
	(COMMON_SOURCE): Add read-properties.c.
	(libgettextsrc_la_SOURCES): Add write-properties.c.
	* Makefile.msvc (OBJECTS): Add read-properties.obj,
	write-properties.obj.
	(read-properties.obj, write-properties.obj): New rules.
	* Makefile.vms (OBJECTS): Add read-properties.obj,
	write-properties.obj.
	(read-properties.obj, write-properties.obj): New rules.
	* FILES: Update.

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

	* read-po-abstract.h (po_scan_file): Remove declaration.
	* read-po-abstract.c (po_scan_file): Remove function.
	* read-po.c (read_po_file): Call read_po.
	* msgfmt.c (read_po_file_msgfmt): Call open_po_file. Invoke po_scan
	instead of po_scan_file.
	* xgettext.c (read_exclusion_file): Call open_po_file. Invoke po_scan
	instead of po_scan_file.

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

	* open-po.h (open_po_file): Add argument 'exit_on_error'.
	* open-po.c (try_open_po_file): Renamed from open_po_file.
	(open_po_file): New function.
	* po-lex.h (lex_end): Change return type to void.
	(lex_open, lex_close): Remove declarations.
	* po-lex.c (lex_end): Change return type to void.
	(lex_open, lex_close): Remove functions.
	* read-po-abstract.c (po_scan_file): Inline lex_open and lex_close.
	Reuse po_scan code.

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

	* hostname.c (usage): Split strings: use one string per option
	description.
	* msgattrib.c (usage): Likewise.
	* msgcat.c (usage): Likewise.
	* msgcmp.c (usage): Likewise.
	* msgcomm.c (usage): Likewise.
	* msgconv.c (usage): Likewise.
	* msgen.c (usage): Likewise.
	* msgexec.c (usage): Likewise.
	* msgfilter.c (usage): Likewise.
	* msgfmt.c (usage): Likewise.
	* msggrep.c (usage): Likewise.
	* msginit.c (usage): Likewise.
	* msgmerge.c (usage): Likewise.
	* msgunfmt.c (usage): Likewise.
	* msguniq.c (usage): Likewise.
	* urlget.c (usage): Likewise.
	* xgettext.c (usage): Likewise.

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

	Unify three PO file parsers.
	* read-po-abstract.h: Renamed from po.h.
	(abstract_po_reader_class_ty): Renamed from po_method_ty.
	(abstract_po_reader_ty): Renamed from po_ty.
	(ABSTRACT_PO_READER_TY): Renamed from PO_BASE_TY.
	(po_reader_alloc): Renamed from po_alloc.
	(po_reader_free): Renamed from po_free.
	* read-po-abstract.c: Renamed from po.c.
	(po_reader_alloc): Renamed from po_alloc.
	(po_reader_free): Renamed from po_free.
	(call_parse_brief): Renamed from po_parse_brief.
	(call_parse_debrief): Renamed from po_parse_debrief.
	(call_directive_domain): Renamed from po_directive_domain.
	(call_directive_message): Renamed from po_directive_message.
	(call_comment): Renamed from po_comment.
	(call_comment_dot): Renamed from po_comment_dot.
	(call_comment_filepos): Renamed from po_comment_filepos.
	(call_comment_special): Renamed from po_comment_special.
	* read-po.h: Include read-po-abstract.h.
	(default_po_reader_class_ty, default_po_reader_ty): New types.
	(ABSTRACT_PO_READER_TY): New macro.
	(default_constructor, default_destructor, default_parse_brief,
	default_parse_debrief, default_directive_domain,
	default_directive_message, default_comment, default_comment_dot,
	default_comment_filepos, default_comment_special, default_set_domain,
	default_add_message): New declarations.
	(default_po_reader_alloc): New declaration.
	* read-po.c (default_po_reader_ty): Renamed from readall_class_ty.
	Add fields handle_comments, handle_filepos_comments,
	allow_domain_directives, allow_duplicates,
	allow_duplicates_if_same_msgstr.
	(call_set_domain, call_add_message, call_frob_new_message): New
	functions.
	(default_constructor): Renamed from readall_constructor. Don't set
	this->mdlp and this->mlp.
	(default_destructor): Renamed from readall_destructor.
	(default_parse_brief): Renamed from readall_parse_brief.
	(default_parse_debrief): New function.
	(default_copy_comment_state, default_reset_comment_state): New
	functions.
	(default_directive_domain): Renamed from readall_directive_domain.
	Call set_domain method.
	(default_directive_message): Renamed from readall_directive_message.
	Call add_message method.
	(default_comment): Renamed from readall_comment.
	(default_comment_dot): Renamed from readall_comment_dot.
	(default_comment_filepos): Renamed from readall_comment_filepos.
	(default_comment_special): Renamed from readall_comment_special.
	(default_set_domain, default_add_message): New functions.
	(default_methods): Renamed from readall_methods.
	(default_po_reader_alloc): New function.
	(read_po, read_po_file): Update.
	* msgfmt.c: Include read-po.h instead of po.h.
	(msgfmt_po_reader_ty): Renamed from msgfmt_class_ty. Inherit
	from default_po_reader_ty.
	(main): Drop po_lex_pass_comments call, done by default_parse_brief.
	(msgfmt_constructor): Renamed from format_constructor. Call superclass
	function.
	(msgfmt_parse_debrief): Renamed from format_debrief. Call superclass
	function.
	(format_directive_domain): Remove function.
	(msgfmt_set_domain): New function.
	(format_directive_message): Remove function.
	(msgfmt_add_message, msgfmt_frob_new_message): New functions.
	(msgfmt_comment_special): Renamed from format_comment_special.
	(msgfmt_methods): Renamed from format_methods.
	(read_po_file_msgfmt): Renamed from read_po_file.
	* x-po.c: Include read-po.h instead of po.h.
	(extract_class_ty, extract_constructor, extract_directive_domain,
	extract_directive_message, extract_parse_brief, extract_comment,
	extract_comment_dot, extract_comment_filepos, extract_comment_special):
	Remove functions.
	(extract_add_message): New function.
	(extract_methods): Update.
	(extract_po): Update.
	* xgettext.c: Include read-po-abstract.h instead of po.h.
	(exclude_directive_domain, exclude_directive_message, exclude_methods,
	read_exclusion_file): Update.
	* msgcmp.c: Don't include po.h.
	* msgmerge.c: Likewise.
	* po-gram-gen.y: Include read-po-abstract.h instead of po.h.
	* po-hash-gen.y: Likewise.
	(po_parse_comment_filepos): Renamed from po_hash.
	* po-hash.h (po_parse_comment_filepos): Renamed from po_hash.
	* Makefile.am (noinst_HEADERS): Remove po.h, add read-po-abstract.h.
	(COMMON_SOURCE): Remove po.c, add read-po-abstract.c.
	* Makefile.msvc (OBJECTS): Remove po.obj, add read-po-abstract.obj.
	(read-po-abstract.obj): Renamed from po.obj.
	* Makefile.vms (OBJECTS): Remove po.obj, add read-po-abstract.obj.
	(read-po-abstract.obj): Renamed from po.obj.

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

	* read-po.c (readall_directive_message): Separate accumulation and
	reset.
	* x-po.c (extract_directive_message): Likewise.

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

	* write-po.h (message_print_comment, message_print_comment_dot,
	message_print_comment_filepos, message_print_comment_flags): New
	declarations.
	* write-po.c: Reorder functions.
	(message_print_comment, message_print_comment_dot,
	message_print_comment_filepos, message_print_comment_flags): New
	functions, extracted from message_print.
	(message_print): Use them.
	(message_print_obsolete): Use message_print_comment.

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

	* plural-table.c (plural_table): Add an entry about Faroese.
	Reported by Jacob Sparre Andersen <sparre@crs4.it>.

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

	* po.h (po_scan_start, po_scan_end): New declarations.
	* po.c: Reorder functions.
	(po_scan_start, po_scan_end): New functions.
	(po_scan, po_scan_file): Use them.

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

	* Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no
	lines. Don't use the force target. Correct wildcard syntax.
	Suggested by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.

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

	* xgettext.c (construct_header): Remove spurious comma.

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

	* Makefile.vms: New file.
	* Makefile.am (EXTRA_DIST): Add Makefile.vms.
	(x-java.c): Prepend a few VMS specific lines.
	* po-lex.c (mbfile_getc): Change element type of scatchbuf to
	'unsigned char'.
	* write-java.c (string_hashcode, write_java_string): Cast argument of
	u8_mbtouc.
	* write-tcl.c (write_tcl_string): Likewise.
	* x-python.c (phase7_getuc): Cast argument of unicode_name_character.
	* msgfilter.c (write): #undef before redefining it. Needed for VMS.
	(select): Likewise.

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

	* Makefile.am (noinst_HEADERS): Add po-gram-gen2.h.
	(BUILT_SOURCES): Add po-gram-gen2.h.
	(DISTCLEANFILES): Remove po-gram-gen2.h.
	(po-gram-gen2.h): Simplify rule.

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

	Native Woe32/MSVC support.
	* Makefile.msvc: New file.
	* Makefile.am (EXTRA_DIST): Add it.
	* msgfilter.c: Include <sys/time.h> only if it exists.
	(process_string): Mark as NYI on Woe32.
	* msgfmt.c (sigjmp_buf, sigsetjmp, siglongjmp): Provide fallback
	definitions for Woe32.
	* msginit.c: Include <fcntl.h>, for F_OK. Include <pwd.h> only if it
	exists.
	(get_user_pwd, get_user_fullname): Adapt for when <pwd.h> is missing.
	(project_id, project_id_version, get_user_email,
	language_team_address): Use DEV_NULL instead of "/dev/null".
	* msggrep.c (is_string_selected): Likewise.
	* read-java.c (execute_and_read_po_output): Likewise.
	* read-tcl.c (msgdomain_read_tcl): Likewise.
	* write-mo.c: Include <sys/param.h> only if it exists.

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

	* msgmerge.c (main): Use copy_file_preserving instead of copy_file.

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

	* str-list.h (string_list_join): Comment out.
	* str-list.c (string_list_join): Comment out.

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

	* msggrep.c (no_pass): Mention option -C.
	(usage): Document option -C completely.
	Reported by Martin Quinson <Martin.Quinson@tuxfamily.org>.

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

	Support for relocatable installation.
	* msgattrib.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msgcat.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msgcmp.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msgcomm.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msgconv.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msgen.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msgexec.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msgfilter.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msgfmt.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msggrep.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msginit.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	(project_id, project_id_version, get_user_email): Relocate LIBDIR
	value.
	(language_team_address): Relocate LIBDIR and PROJECTSDIR values.
	* msgmerge.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msgunfmt.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* msguniq.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* xgettext.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value.
	* read-java.c: Include relocatable.h.
	(msgdomain_read_java): Relocate GETTEXTJEXEDIR value.
	* read-tcl.c: Include relocatable.h.
	(msgdomain_read_tcl): Relocate GETTEXTDATADIR value.
	* hostname.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value. Update copyright year.
	* urlget.c: Include relocatable.h.
	(main): Relocate LOCALEDIR value. Update copyright year.
	(fetch): Relocate GETTEXTJEXEDIR value.
	* user-email.in: Relocate $libdir.
	* Makefile.am (aliaspath): New variable.
	(DEFS): Define LOCALE_ALIAS_PATH.
	(msginit_SOURCES): Add .../localealias.c.
	(msginit_LDADD): Remove .../localealias.lo.
	(msgcmp_CFLAGS, msgfmt_CFLAGS, msgmerge_CFLAGS, msgunfmt_CFLAGS,
	xgettext_CFLAGS, msgattrib_CFLAGS, msgcat_CFLAGS, msgcomm_CFLAGS,
	msgconv_CFLAGS, msgen_CFLAGS, msgexec_CFLAGS, msgfilter_CFLAGS,
	msggrep_CFLAGS, msginit_CFLAGS, msguniq_CFLAGS, hostname_CFLAGS,
	urlget_CFLAGS): New variables.
	(msgcmp_LDFLAGS, msgfmt_LDFLAGS, msgmerge_LDFLAGS, msgunfmt_LDFLAGS,
	xgettext_LDFLAGS, msgattrib_LDFLAGS, msgcat_LDFLAGS, msgcomm_LDFLAGS,
	msgconv_LDFLAGS, msgen_LDFLAGS, msgexec_LDFLAGS, msgfilter_LDFLAGS,
	msggrep_LDFLAGS, msginit_LDFLAGS, msguniq_LDFLAGS, hostname_LDFLAGS,
	urlget_LDFLAGS): New variables.
	(install-exec-java-yes): Don't ignore INSTALL_PROGRAM_ENV.
	(RELOCATABLE_LIBRARY_PATH, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR,
	RELOCATABLE_CONFIG_H_DIR): New variables.

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

	* msggrep.c (main): On Solaris, prefer /usr/xpg4/bin/grep to
	/usr/bin/grep. Needed for Solaris 2.8 and 2.9.
	Reported by Sven Utcke <utcke@informatik.uni-hamburg.de>.

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

	* msgen.c (usage): Don't say that the entries are marked fuzzy.
	Reported by Karl Eichwalder <ke@suse.de>.

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

	Improve error messages for invalid format strings.
	* format-invalid.h: New file.
	* format.h (struct formatstring_parser): Add invalid_reason argument
	to 'parse' field.
	* format-awk.c: Include c-ctype.h, xerror.h, format-invalid.h.
	(format_parse): Add invalid_reason argument.
	* format-c.c: Include c-ctype.h, xerror.h, format-invalid.h.
	(INVALID_C99_MACRO): New macro.
	(format_parse): Add invalid_reason argument.
	(get_c99_format_directives): Update.
	* format-elisp.c: Include c-ctype.h, xerror.h, format-invalid.h.
	(format_parse): Add invalid_reason argument.
	* format-java.c: Include xerror.h, format-invalid.h.
	(message_format_parse, choice_format_parse, format_parse): Add
	invalid_reason argument.
	(choice_format_parse): Return false if a choice contains an empty
	number part.
	* format-librep.c: Include c-ctype.h, xerror.h, format-invalid.h.
	(format_parse): Add invalid_reason argument.
	* format-lisp.c: Include xerror.h, format-invalid.h.
	(check_params, nocheck_params): Add directives, invalid_reason
	arguments.
	(parse_upto, format_parse): Add invalid_reason argument.
	* format-pascal.c: Include xerror.h, format-invalid.h.
	(format_parse): Add invalid_reason argument.
	* format-php.c: Include c-ctype.h, xerror.h, format-invalid.h.
	(format_parse): Add invalid_reason argument.
	* format-python.c: Include c-ctype.h, xerror.h, format-invalid.h.
	(INVALID_MIXES_NAMED_UNNAMED): New macro.
	(format_parse): Add invalid_reason argument.
	* format-tcl.c: Include c-ctype.h, xerror.h, format-invalid.h.
	(format_parse): Add invalid_reason argument.
	* format-ycp.c: Include c-ctype.h, xerror.h, format-invalid.h.
	(format_parse): Add invalid_reason argument.
	* msgfmt.c (check_pair): Output invalid_reason returned for msgstr.
	* msgmerge.c (msgfmt_check_pair_fails): Update.
	* xgettext.c (remember_a_message, remember_a_message_plural): Update.
	* Makefile.am (FORMAT_SOURCE): Add format-invalid.h.

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

	* x-python.c (init_keywords): Add u*gettext variants and plural
	handling functions added in Python 2.3.

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

	* Makefile.am (installdirs): Remove dependency, redundant with
	automake >= 1.6.

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

	* Makefile.am (libgettextpo_la_DEPENDENCIES): New variable.
	Reported by Jim Meyering <jim@meyering.net>.

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

	* Makefile.am (xgettext_LDADD): Mention $(LIBUNINAME) before
	libgettextsrc.la, not after it. Needed avoid link error on OSF/1 4.0:
	libtool produces a link command line that contains "-lc" where a
	shared library was used, and on OSF/1 4.0 "-lc" must not be used
	before objects that use integer division.

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

	* message.c (msgdomain_list_free): Uncomment this function.
	* Makefile.am (libgettextpo_la_LDFLAGS): Add ../lib/libgettextlib.la.
	Needed for Solaris 2.7.

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

	* msgmerge.c (message_merge): Add support for Report-Msgid-Bugs-To
	field.
	* xgettext.c (msgid_bugs_address): New variable.
	(long_options): Add option --msgid-bugs-address.
	(main): Handle option --msgid-bugs-address.
	(usage): Document option --msgid-bugs-address.
	(construct_header): Add 'Report-Msgid-Bugs-To:' field. Warn if
	msgid_bugs_address is empty.

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

	* user-email.in: Add support for GNOME evolution, OpenOffice and
	StarOffice with nonstandard installation directory.

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

	* msgattrib.c (main): Update year in --version output.
	* msgcat.c (main): Likewise.
	* msgcmp.c (main): Likewise.
	* msgcomm.c (main): Likewise.
	* msgconv.c (main): Likewise.
	* msgen.c (main): Likewise.
	* msgexec.c (main): Likewise.
	* msgfilter.c (main): Likewise.
	* msgfmt.c (main): Likewise.
	* msgunfmt.c (main): Likewise.
	* msguniq.c (main): Likewise.
	* xgettext.c (main): Likewise.

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

	Big restructuring.
	* gettext.c: Remove file.
	* ngettext.c: Remove file.
	* Makefile.am (bin_PROGRAMS): Remove gettext, ngettext.
	(EXTRA_DIST): Add ChangeLog.0.
	(pkgdatadir): Define using 'gettext' instead of @PACKAGE@.
	(pkglibdir): Likewise.
	(INCLUDES): Refer to intl in gettext-runtime directory.
	(gettext_SOURCES, ngettext_SOURCES, gettext_LDADD, ngettext_LDADD):
	Remove variables.
	(install-exec-local, installdirs-local, uninstall-local,
	install-exec-java-yes, installdirs-java-yes, uninstall-java-yes): Use
	$(pkglibdir) instead of $(libdir)/$(PACKAGE).
	* plural.c: Update for changed directory structure.
	* user-email.in: Use 'gettext' instead of @PACKAGE@.


See ChangeLog.0 for earlier changes.
