summaryrefslogtreecommitdiff
path: root/gettext-tools/src/ChangeLog.1
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2015-12-28 00:06:36 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2015-12-28 00:06:36 +0000
commit6eb5949dd99d174393465069c2fd0bab32deddcc (patch)
treed104f72ac2dcb0f592b1c8e06a5af6790bd4080c /gettext-tools/src/ChangeLog.1
parent482840e61f86ca321838a91e902c41d40c098bbb (diff)
downloadgettext-tarball-6eb5949dd99d174393465069c2fd0bab32deddcc.tar.gz
gettext-0.19.7gettext-0.19.7
Diffstat (limited to 'gettext-tools/src/ChangeLog.1')
-rw-r--r--gettext-tools/src/ChangeLog.18183
1 files changed, 8183 insertions, 0 deletions
diff --git a/gettext-tools/src/ChangeLog.1 b/gettext-tools/src/ChangeLog.1
new file mode 100644
index 0000000..5272c06
--- /dev/null
+++ b/gettext-tools/src/ChangeLog.1
@@ -0,0 +1,8183 @@
+2015-10-06 Daiki Ueno <ueno@gnu.org>
+
+ * msgfmt.c (msgfmt_desktop_bulk): Distinguish the number of errors
+ and the exit status.
+ * write-desktop.c (msgdomain_write_desktop_bulk): Don't
+ immediately exit when fwriteerror() returns error.
+
+2015-10-06 Daiki Ueno <ueno@gnu.org>
+
+ msgfmt: Refactor --desktop handling
+ * msgfmt.c (get_languages): Avoid redundant memory allocation.
+ (msgfmt_operand_list_init): New function.
+ (msgfmt_operand_list_destroy): New function.
+ (msgfmt_operand_list_append): New function.
+ (msgfmt_operand_list_add_directory): New function.
+ (msgfmt_desktop_bulk): Rewrite using msgfmt_operand_list_ty.
+
+ * msgfmt.h (msgfmt_operand_ty)
+ (msgfmt_operand_list_ty): New type.
+ * write-desktop.c (msgdomain_write_desktop_bulk):
+ Simplify using msgfmt_operand_list_ty.
+ (msgdomain_write_desktop): Simplify using msgfmt_operand_list_ty.
+ * write-desktop.h (msgdomain_write_desktop_bulk): Take OPERANDS as
+ the first argument, instead of LANGUAGES and MESSAGES.
+
+2015-10-06 Daiki Ueno <ueno@gnu.org>
+
+ * sentence.c (sentence_end): Assign initial values to local
+ variables to suppress compiler warnings with
+ -Wmaybe-uninitialized. This shouldn't address any real bug.
+
+2015-09-11 Daiki Ueno <ueno@gnu.org>
+
+ * gettext 0.19.6 released.
+
+2015-08-24 Daiki Ueno <ueno@gnu.org>
+
+ * xgettext.c (construct_header): Replace PACKAGE placeholder in
+ the header comment.
+
+2015-06-11 Philip Withnall <philip.withnall@collabora.co.uk>
+
+ xgettext: add support for AppData files
+ * x-appdata.h: New file.
+ * x-appdata.c: New file.
+ * xgettext.c: Include x-appdata.h.
+ (language_to_extractor): Add AppData rule.
+ (extension_to_language): Add AppData rule.
+ * Makefile.am (noinst_HEADERS): Add x-appdata.h.
+ (xgettext_SOURCES): Add x-appdata.c.
+ * FILES: Update.
+
+2015-08-21 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Allow multiple --copyright-holder
+ Feature requested by Francesco Poli in:
+ <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=682580>.
+ * xgettext.c (default_copyright_holder): New constant, renamed
+ from copyright_holder.
+ (copyright_holder): Define as a variable.
+ (main): Allow multiple --copyright-holder options.
+ (construct_header): Support multiple --copyright-holder options.
+
+2015-08-15 Daiki Ueno <ueno@gnu.org>
+
+ * cldr-plurals.c (main): Close FP after use.
+ Reported by Denis Denisov.
+
+2015-07-21 Václav Slavík <vaclav@slavik.io> (tiny change)
+
+ cldr-plurals: Fix --enable-relocatable compilation
+ Compilation of the cldr-plurals tool was broken in the relocatable
+ case because of missing CPPFLAGS/LDFLAGS. Add the same flags used
+ by other tools to the makefile.
+ * Makefile.am (cldr_plurals_CPPFLAGS)
+ (cldr_plurals_LDFLAGS): Adjust for --enable-relocatable
+ compilation.
+
+2015-07-10 Daiki Ueno <ueno@gnu.org>
+
+ * gettext 0.19.5 released.
+
+2015-06-29 Daiki Ueno <ueno@gnu.org>
+
+ * msginit.c (catalogname_for_locale): Remove sr_YU, which were
+ removed from ISO 3166-1:1997. Add comment saying that pap_AN,
+ which were removed from ISO 3166-1:2006, can be removed in the
+ future.
+ Reported by Jakub Wilk in:
+ <https://lists.gnu.org/archive/html/bug-gettext/2015-06/msg00057.html>.
+
+2015-06-25 Daiki Ueno <ueno@gnu.org>
+
+ * x-c.c (literalstring_parse): Bail out if C == NUL. Also adjust
+ the loop invariant in Unicode literal handling.
+ Reported by Hanno Boeck in:
+ <http://savannah.gnu.org/bugs/?45391>.
+
+2015-06-25 Daiki Ueno <ueno@gnu.org>
+
+ * x-c.c (literalstring_parse): Add more NUL checks. Change the
+ loop invariant so that C always points to the character previously
+ pointed by P.
+ Reported by Hanno Boeck in:
+ <http://savannah.gnu.org/bugs/?45391>.
+
+2015-06-24 Daiki Ueno <ueno@gnu.org>
+
+ * x-c.c (literalstring_parse): Check if the next character of a
+ backslash is NUL.
+ Reported by Hanno Boeck in:
+ <http://savannah.gnu.org/bugs/?45391>.
+
+2015-06-23 Daiki Ueno <ueno@gnu.org>
+
+ * cldr-plurals.c (main): Fix unmatched braces when
+ !(DYNLOAD_LIBEXPAT || HAVE_LIBEXPAT).
+
+2015-06-23 Daiki Ueno <ueno@gnu.org>
+
+ * cldr-plurals.c: Include "basename.h".
+ (main): Place optind on the right hand side of the expression, to
+ work around build failure on Solaris.
+
+2015-06-23 Daiki Ueno <ueno@gnu.org>
+
+ * Makefile.am (uninstall-local): Remove cldr-plurals.
+
+2015-06-23 Daiki Ueno <ueno@gnu.org>
+
+ * Makefile.am (noinst_HEADERS): Add cldr-plural.h and
+ cldr-plural-exp.h.
+
+2015-06-22 Daiki Ueno <ueno@gnu.org>
+
+ msginit: Guess plural rules from Unicode CLDR
+ * Makefile.am (noinst_PROGRAMS): Add cldr-plurals.
+ (install-exec-local): Install cldr-plurals.
+ (BUILT_SOURCES): Add cldr-plural.c and cldr-plural.h.
+ (cldr_plural_SOURCES): New variable.
+ (cldr_plural_LDADD): New variable.
+ * cldr-plural-exp.h: New file.
+ * cldr-plural-exp.c: New file.
+ * cldr-plural.y: New file.
+ * cldr-plurals.c: New file.
+ * msginit.c (plural_forms): Call cldr-plurals program if the
+ plural rule is not defined in the code.
+
+2015-06-01 Daiki Ueno <ueno@gnu.org>
+
+ * x-awk.h (EXTENSIONS_AWK): Register file extensions ".gawk" and
+ ".twjr". Suggested by Karl Berry in:
+ <https://lists.gnu.org/archive/html/bug-gettext/2015-05/msg00032.html>.
+
+2015-05-08 Часлав Илић (Chusslove Illich) <caslav.ilic@gmx.net> (tiny change)
+
+ * x-c.c (init_flag_table_kde): New function.
+ (additional_keywords_kde): New variable.
+ (activate_additional_keywords_kde): New function.
+ (init_keywords): Optional addition of KDE-specific keywords.
+ * x-c.h (init_flag_table_kde): New function declaration.
+ (activate_additional_keywords_kde): New function declaration.
+ * xgettext.c (main): Invoke addition of KDE-specific keywords when
+ language is C++ with KDE.
+
+2015-03-20 Daiki Ueno <ueno@gnu.org>
+
+ kde-kuit: Use xmlns to avoid element name conflict
+ * format-kde-kuit.c (XML_NS): New macro.
+ (format_parse): Add namespace qualifier to the <kuit> tag.
+
+2015-03-12 Daiki Ueno <ueno@gnu.org>
+
+ * format-kde-kuit.c (format_parse): Remove dead assignment,
+ spotted by clang-analyzer.
+ * x-c.c (phase5_get): Likewise.
+
+2015-03-11 Daiki Ueno <ueno@gnu.org>
+
+ msgunfmt: Check allocated size for static segment
+ Reported by Max Lin in:
+ http://lists.gnu.org/archive/html/bug-gettext/2015-03/msg00005.html
+ * read-mo.c (get_sysdep_string): Check if the embedded segment
+ size is valid, before adding it to the string length.
+
+2015-03-06 Daiki Ueno <ueno@gnu.org>
+
+ format-kde: Recognize KUIT markup
+ Reported by Chusslove Illich in:
+ https://lists.gnu.org/archive/html/bug-gettext/2015-01/msg00017.html
+ * format.h (formatstring_kde_kuit): New variable declaration.
+ * format.c (formatstring_parsers): Register formatstring_kde_kuit
+ as a format string parser.
+ * format-kde-kuit.c: New file.
+ * message.h (NFORMATS): Increment.
+ (enum format_type): New enum value format_kde_kuit.
+ * xgettext.c (xgettext_record_flag): Handle format_kde_kuit.
+ * Makefile.am (xgettext_SOURCES): Move libexpat-compat.c to...
+ (libgettextsrc_la_SOURCES): ...here.
+ (xgettext_LDADD): Move @LTLIBEXPAT@ to...
+ (libgettextsrc_la_LDFLAGS): ...here.
+ (FORMAT_SOURCE): Add format-kde-kuit.c.
+
+2015-03-02 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Support message syntax checks
+ With this change, xgettext could report common syntactic problems
+ in extracted strings. The current built-in checks are
+ ellipsis-unicode, space-ellipsis, and quote-unicode. Those checks
+ can be enabled with --check option of xgettext and disabled with
+ special "xgettext:" comment in source files.
+ Feature suggested by Philip Withnall in:
+ https://savannah.gnu.org/bugs/?44098
+ * message.h (enum syntax_check_type): New enum.
+ (NSYNTAXCHECKS): New constant.
+ (enum is_syntax_check): New enum.
+ (struct message_ty): New field 'do_syntax_check'.
+ (syntax_check_name): New variable declaration.
+ * message.c (syntax_check_name): New variable.
+ * msgl-cat.c (catenate_msgdomain_list): Propagate
+ mp->do_syntax_check.
+ * msgmerge.c (message_merge): Propagate ref->do_syntax_check.
+ * msgl-check.h (syntax_check_message_list): New declaration.
+ * msgl-check.c (syntax_check_ellipsis_unicode): New function.
+ (syntax_check_space_ellipsis): New function.
+ (syntax_check_quote_unicode): New function.
+ (syntax_check_message): New function.
+ (syntax_check_message_list): New function.
+ * read-catalog-abstract.h (po_parse_comment_special): Adjust
+ function declaration.
+ * read-catalog-abstract.c (po_parse_comment_special): Add new
+ argument SCP for syntax checking; all callers changed.
+ * read-catalog.h (DEFAULT_CATALOG_READER_TY): New field
+ 'do_syntax_check'.
+ * read-catalog.c (default_constructor): Initialize
+ this->do_syntax_check.
+ (default_copy_comment_state): Propagate this->do_syntax_check.
+ * sentence.h: New file.
+ * sentence.c: New file.
+ * xgettext.c (long_options): Add options --check and --sentence-end.
+ (main): Handle options --check and --sentence-end.
+ (usage): Document options --check and --sentence-end.
+ (remember_a_message): Propagate do_syntax_check value.
+
+2015-02-05 Alex Henrie <alexhenrie24@gmail.com> (tiny change)
+
+ xgettext: Wrap location comments to 79 characters
+ Previously, messages were wrapped to 79 characters, but location
+ comments were wrapped to 78 characters.
+ * write-po.c (message_print_comment_filepos): Fix off-by-one in
+ calculating line-wrapping width of location comment.
+
+2015-02-03 Daiki Ueno <ueno@gnu.org>
+
+ msgfilter: Factor out quoted string handling
+ For later use in xgettext, separate out the scanner part in
+ filter-quote.c into a separate file. See:
+ <https://savannah.gnu.org/bugs/?44098>.
+ * quote.h: New file split from filter-quote.c.
+ * filter-quote.c: Include "quote.h".
+ (convert_quote_callback): New function.
+ (convert_ascii_quote_to_unicode): Use scan_quoted from quote.h.
+ * Makefile.am (libgettextsrc_la_SOURCES): Add quote.h.
+
+2015-01-29 Daiki Ueno <ueno@gnu.org>
+
+ msgexec: Add --newline option
+ See the commit 96dde0b for the rationale.
+ * msgexec.c (newline): New variable.
+ (long_options): Add --newline option.
+ (main): Handle --newline option.
+ (usage): Document --newline option.
+ (process_string): Handle --newline option.
+
+2015-01-28 Daiki Ueno <ueno@gnu.org>
+
+ msgfilter: Add --newline option
+ The filter program was supposed to handle translation without a
+ newline character at the end of line. This was causing
+ portability problems with standard text processing programs on
+ some platforms (BSD sed, for instance) and not friendly towards
+ POSIX, where a "text file" is required to have an ending newline.
+ The new --newline option controls the behavior. If it is given,
+ both filter input and output are assumed to end with a newline
+ character.
+ * msgfilter.c (newline): New variable.
+ (long_options): Add --newline option.
+ (main): Handle --newline option.
+ (usage): Document --newline option.
+ (process_string_with_newline): New function which wraps
+ process_string.
+ (process_message): Use process_string_with_newline instead of
+ process_string if --newline is specified.
+
+2015-01-24 Daiki Ueno <ueno@gnu.org>
+
+ xgettext, msgmerge: Avoid undefined non-null argument behavior
+ * xgettext.c (remember_a_message): Building with gcc's
+ -fsanitize=undefined and running tests triggered:
+ xgettext.c:2425:17: runtime error: null pointer passed as argument \
+ 2, which is declared to never be null
+ Adjust the argument of strncmp to never be null.
+ * msgmerge.c (message_merge): Likewise for memcpy.
+
+2015-01-23 Daiki Ueno <ueno@gnu.org>
+
+ build: Fix parallel build from git checkout
+ Since po-gram-gen2.h depends on po-gram-gen.h, an explicit
+ dependency on the YACC rule is needed for parallel compilation.
+ * Makefile.am (po-gram-gen.h): Depend on po-gram-gen.c.
+
+2015-01-16 Daiki Ueno <ueno@gnu.org>
+
+ desktop: Avoid useless warning for group header
+ Reported by Marek Černocký at:
+ <https://savannah.gnu.org/bugs/?44005>
+ * read-desktop.c (desktop_lex): Fix "invalid non-blank
+ character" check after reading a group header.
+
+2015-01-13 Daiki Ueno <ueno@gnu.org>
+
+ * x-c.c (phase5_get): Reset raw_expected at the beginning of the
+ function.
+
+2015-01-13 Daiki Ueno <ueno@gnu.org>
+
+ c++: Make C++11 raw string recognition stricter
+ Reported by Vaclav Slavik at:
+ <http://savannah.gnu.org/bugs/?43970>.
+ * x-c.c (struct token_ty): New field 'escape'.
+ (struct xgettext_token_ty): New field 'escape'.
+ (phase5_get): Recognize raw strings more strictly. Set 'escape'
+ field of token appropriately for string literals.
+ (extract_parenthesized): Respect 'escape' field of token.
+
+2015-01-13 Daiki Ueno <ueno@gnu.org>
+
+ c++: Differentiate scanning logic from C
+ To enable raw string literals only in C++, add a flag indicating
+ the current source language is C++.
+ Suggested by Vaclav Slavik at:
+ <https://savannah.gnu.org/bugs/?43970>.
+ * x-c.h (extract_cxx): New declaration.
+ (SCANNERS_C): Use extract_cxx for "C++".
+ * x-c.c (cxx_extensions): New variable.
+ (phase5_get): Respect cxx_extensions and recognize raw string
+ literals only when it is set.
+ (extract_cxx): New function.
+ (extract_c, extract_objc): Reset cxx_extensions.
+
+2014-12-24 Daiki Ueno <ueno@gnu.org>
+
+ * gettext 0.19.4 released.
+
+2014-12-18 Daiki Ueno <ueno@gnu.org>
+
+ * x-sh.c (read_word): Use phase1 instead of phase2 for Bash ANSI-C
+ escape sequences. Also handle '\"' and '\E'.
+
+2014-12-17 Daiki Ueno <ueno@gnu.org>
+
+ * x-sh.c (phase2_getc): Fix typo: debackslahificication ->
+ debackslashification.
+
+2014-12-12 Daiki Ueno <ueno@gnu.org>
+
+ * read-desktop.c (desktop_parse): Check and ignore
+ token_type_other.
+
+2014-12-12 Daiki Ueno <ueno@gnu.org>
+
+ * format-lisp.c (make_intersected_list): Don't dereference
+ potentially released memory. 'append_repeated_to_initial' may
+ release the LIST->element. Spotted by clang-analyzer.
+ * format-scheme.c (make_intersected_list): Likewise.
+
+2014-12-10 Daiki Ueno <ueno@gnu.org>
+
+ * msgl-check.c (check_header_entry): Don't declare unused variable
+ 'nrequiredfields'.
+
+2014-12-09 Daiki Ueno <ueno@gnu.org>
+
+ * xgettext.c (arglist_parser_done): Avoid potential
+ null-dereference. Spotted by clang-analyzer.
+
+2014-12-09 Daiki Ueno <ueno@gnu.org>
+
+ * msgfmt.c (msgfmt_desktop_bulk): Don't dereference potentially
+ uninitialized value. Spotted by clang-analyzer.
+
+2014-12-09 Daiki Ueno <ueno@gnu.org>
+
+ * x-vala.c (phase3_get): Factor out the buffer allocation as a
+ macro.
+
+2014-12-09 Daiki Ueno <ueno@gnu.org>
+
+ * read-desktop.c (desktop_lex): Undef the APPEND macro before
+ defining.
+
+2014-12-09 Daiki Ueno <ueno@gnu.org>
+
+ desktop: Simplify the parsing logic
+ * read-desktop.h (desktop_reader_class_ty): Rename 'handle_text'
+ to 'handle_blank'.
+ (desktop_reader_handle_blank): Rename from
+ 'desktop_reader_handle_text'.
+ * read-desktop.c (SIZEOF): New macro.
+ (desktop_reader_handle_blank): Rename from
+ 'desktop_reader_handle_blank'.
+ (read_until_newline, read_group_name, read_key_name): Remove.
+ Merge into...
+ (desktop_lex): ...here.
+ (desktop_parse): Call 'desktop_lex' instead of read_*. Don't
+ normalize whitespaces.
+ (enum token_type_ty): New enum.
+ (struct token_ty): New struct.
+ (free_token): New function.
+ * write-desktop.c (msgfmt_desktop_handle_blank): Rename from
+ 'msgfmt_desktop_handle_text'.
+ * x-desktop.c: Include "c-ctype.h".
+ (extract_desktop_handle_comment): Normalize whitespaces here.
+ (extract_desktop_handle_blank): Rename from
+ 'extract_desktop_handle_text'.
+
+2014-12-07 Daiki Ueno <ueno@gnu.org>
+
+ vala: Make regex literal handling robuster
+ * x-vala.c (token_type_ty): New enumeration values
+ 'token_type_arithmetic_operator' and 'token_type_question'.
+ Remove 'token_type_minus'.
+ (phase3_get): Rewrite regex literal handling right after
+ arithmetic assignment operators.
+
+2014-12-05 Daiki Ueno <ueno@gnu.org>
+
+ msgunfmt: Avoid integer overflow using xsize
+ * read-mo.c (get_uint32, get_sysdep_string): Use xsum to avoid
+ integer overflow, when checking length and offset fields.
+ Reported by Jakub Wilk at:
+ <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772088>.
+
+2014-12-04 Daiki Ueno <ueno@gnu.org>
+
+ libgettextsrc: Follow plural.c -> pluralx.c file name change
+ * plural-exp.c: Include "../intl/pluralx.c" instead of
+ "../intl/plural.c". Adjust to commit d2d04ba9.
+
+2014-12-03 Daiki Ueno <ueno@gnu.org>
+
+ intl: Work around LCOV relative base directory resolution
+ * plural-exp.c: Include "../intl/plural.c" instead of
+ "../../gettext-runtime/intl/plural.c".
+
+2014-12-02 Daiki Ueno <ueno@gnu.org>
+
+ c: Minor cleanup of the previous commit
+ * x-c.c (phase5_get): Remove redundant check of is_prefix; fit
+ lines to 80 column.
+
+2014-12-02 Daiki Ueno <ueno@gnu.org>
+
+ c: Support C++11 string literals
+ * x-c.c (phase5_get): Recognize C++ string literals, defined in
+ ISO/IEC 9899:2011. Reported at:
+ <https://savannah.gnu.org/bugs/?39499>.
+
+2014-12-01 Daiki Ueno <ueno@gnu.org>
+
+ c#: Recognize Unicode surrogate character pair
+ * x-csharp.c (accumulate_escaped): Change the first argument type
+ from 'struct string_buffer *' to 'struct mixed_string_buffer *',
+ for Unicode surrogate character pair handling; all callers
+ changed. Reported by Petr Kadlec at:
+ <https://savannah.gnu.org/bugs/?32505>.
+
+2014-11-28 Daiki Ueno <ueno@gnu.org>
+
+ * msgfilter.c (prepare_read): Simplify the last commit 06e206f5,
+ by always adding 1 to the buffer size.
+
+2014-11-28 Daiki Ueno <ueno@gnu.org>
+
+ msgfilter: Fix read buffer allocation for empty input
+ * msgfilter.c (prepare_read): Increase allocated buffer size even
+ if the original size is < 2.
+ Reported by Robin McCorkell at:
+ <https://savannah.gnu.org/bugs/?43720>.
+
+2014-11-27 Daiki Ueno <ueno@gnu.org>
+
+ javascript: Simplify Unicode character escape handling
+ ECMA-262 only supports "\uXXXX" style Unicode character escape and
+ we don't need extra space for character names.
+ * x-javascript.c: Don't include "uniname.h".
+ (phase2_pushback): Decrease to 5. Don't refer to UNINAME_MAX.
+
+2014-11-18 Daiki Ueno <ueno@gnu.org>
+
+ * read-mo.c: Include "xsize.h".
+ (get_string): Use xsum3 to avoid overflow, when checking length
+ and offset fields.
+ Reported by Jakub Wilk at:
+ <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=769901>.
+
+2014-10-28 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Allow plural extraction from a single argument function
+ The commit 8137d2b4 was a wrong fix since both singular/plural msgids
+ may point to the same address for Qt4 plural forms. This reverts
+ the commit and fix the original double-free problem in the right
+ way. Thanks to Jesper Fehrlund for suggestions.
+ * xgettext.c (arglist_parser_remember_literal): Don't ignore
+ plural argument even if ARGNUM1 equals to ARGNUM2.
+ (arglist_parser_done): Make a copy of best_cp->msgid_plural when
+ passing it to remember_a_message_plural, if it equals to
+ best_cp->msgid. Also move code conversion logic earlier taking
+ into account of the ownership transfer of best_cp->msgid.
+
+2014-10-28 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Fix double-free in singular/plural argument extraction
+ After commit 6aa7b7ed in 2009, xgettext assumed that ARGNUM1 and
+ ARGNUM2 of -k are different. That could cause an double-free in
+ exceptional cases.
+ Reported by Johan Liljegren in:
+ <https://lists.gnu.org/archive/html/bug-gettext/2014-10/msg00028.html>.
+ * xgettext.c (arglist_parser_remember_literal): Don't assume that
+ ARGNUM1 and ARGNUM2 are different.
+
+2014-10-15 Daiki Ueno <ueno@gnu.org>
+
+ * gettext 0.19.3 released.
+
+2014-10-08 Daiki Ueno <ueno@gnu.org>
+
+ * write-po.c (wrap): Report error on incomplete multibyte sequence
+ at the end of input bytes.
+ Reported by Jakub Wilk at:
+ <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763820>.
+
+2014-09-30 Daiki Ueno <ueno@gnu.org>
+
+ * x-c.c (literalstring_parse): Fix octal character escape handling.
+ Reported by Kjartan Maraas at:
+ <https://bugzilla.redhat.com/show_bug.cgi?id=1147535>.
+
+2014-09-24 Daiki Ueno <ueno@gnu.org>
+
+ * x-python.c (x_python_lex): Move 'token3' variable declaration
+ out of the internal block.
+
+2014-09-24 Daiki Ueno <ueno@gnu.org>
+
+ * filter-quote.c (BOLD_START, BOLD_END): Don't use non-portable
+ character escape "\e".
+
+2014-08-28 Jonas 'Sortie' Termansen <sortie@maxsi.org> (tiny change)
+
+ * msginit.c: Include <stdint.h>.
+ (get_user_pwd): Cast uid_t value into uintmax_t and print it with
+ '%ju' format directive.
+
+2014-08-27 Jonas 'Sortie' Termansen <sortie@maxsi.org> (tiny change)
+
+ * msgfilter.c (process_message): Use proper format directive for
+ printing size_t.
+ * msgexec.c (process_message): Likewise.
+
+2014-08-27 Jonas 'Sortie' Termansen <sortie@maxsi.org> (tiny change)
+
+ * hostname.c: Add guard around #include <sys/param.h>.
+
+2014-07-14 Daiki Ueno <ueno@gnu.org>
+
+ * gettext 0.19.2 released.
+
+2014-07-14 Daiki Ueno <ueno@gnu.org>
+
+ vala: Fix empty string literal handling
+ Similar to the commit 7b2d8d61 on July 11.
+ * x-vala.c (phase3_get): Add missing memory allocation for empty
+ string literal.
+
+2014-07-14 Daiki Ueno <ueno@gnu.org>
+
+ build: Fix race in post-install removal of *.a
+ There was an implicit dependency between the prerequisites of
+ install-exec-local, which may have caused error with make -jN.
+ Use install-exec-hook to remove the dependency.
+ Reported by Christian Weisgerber in:
+ <https://lists.gnu.org/archive/html/bug-gettext/2014-07/msg00008.html>.
+ * Makefile.am (install-exec-local): Remove.
+ (install-exec-hook): New rule, depend on install-exec-clean.
+
+2014-07-11 Daiki Ueno <ueno@gnu.org>
+
+ c: Fix empty string literal handling
+ Problem reported by Bernhard Voelker in:
+ <http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00059.html>.
+ * x-c.c (phase5_get): Add missing memory allocation for empty
+ string literal.
+
+2014-06-10 Daiki Ueno <ueno@gnu.org>
+
+ * gettext 0.19.1 released.
+
+2014-06-09 Daiki Ueno <ueno@gnu.org>
+
+ msgmerge: Disable --color option in --update mode
+ Suggested by 林V字龍 at:
+ <https://lists.gnu.org/archive/html/bug-gettext/2014-06/msg00017.html>.
+ * msgmerge.c (main): Error out when --color and --update are
+ specified at the same time.
+
+2014-06-07 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Fix misrecognition of character literals in C and Vala
+ Problem reported by Paul Eggert at
+ <http://lists.gnu.org/archive/html/bug-gettext/2014-06/msg00015.html>.
+ * x-c.c (phase5_get): Make sure to skip contents of character constant.
+ * x-vala.c (phase3_get): Likewise.
+
+2014-06-03 Daiki Ueno <ueno@gnu.org>
+
+ desktop: Use logical filename as msgid location
+ * read-desktop.c (desktop_parse): Pass logical filename instead of
+ real filename to desktop_reader_handle_pair.
+
+2014-06-03 Daiki Ueno <ueno@gnu.org>
+
+ desktop: Read LINGUAS file even if LINGUAS envvar is set
+ * msgfmt.c (get_languages): If the LINGUAS envvar is set, use it
+ to restrict the languages list read from the LINGUAS file, not to
+ extend the list.
+ (add_languages): Take an optional DESIRED_LANGUAGES argument.
+
+2014-06-03 Daiki Ueno <ueno@gnu.org>
+
+ vala: Don't elide comments while parsing string literal
+ * x-vala.c (phase3_get): Use phase1_getc to read characters inside
+ a string literal.
+
+2014-06-02 Daiki Ueno <ueno@gnu.org>
+
+ msgl-check: Treat missing header errors as warnings
+ Problem reported by Richard Hughes at
+ <https://lists.fedoraproject.org/pipermail/devel/2014-June/199539.html>.
+ After <https://savannah.gnu.org/bugs/?40262>, "msgfmt -c" reports
+ error on missing PO headers. However, it turned out to be too strict
+ for the projects using Launchpad Translations. Let's relax the check
+ for the moment and wait for one or two release cycles.
+ * msgl-check.c (check_header_entry): Report missing
+ required headers as warning, instead of error.
+
+2014-06-02 Daiki Ueno <ueno@gnu.org>
+
+ * gettext 0.19 released.
+
+2014-05-31 Daiki Ueno <ueno@gnu.org>
+
+ msgexec: Pass previous msgid to the child process
+ Suggested by Pavel Kharitonov in:
+ <http://lists.gnu.org/archive/html/bug-gettext/2014-05/msg00022.html>.
+ * msgexec.c (process_string): Set MSGEXEC_PREV_* envvar.
+
+2014-05-31 Daiki Ueno <ueno@gnu.org>
+
+ msgfilter: Pass previous msgid to the child process
+ Suggested by Pavel Kharitonov in:
+ <http://lists.gnu.org/archive/html/bug-gettext/2014-05/msg00022.html>.
+ * msgfilter.c (process_message): Set MSGFILTER_PREV_* envvar.
+
+2014-05-19 Daiki Ueno <ueno@gnu.org>
+
+ * Makefile.am (po-gram-gen2.h): Adjust the directory to which
+ po-gram-gen.h, for VPATH build.
+
+2014-05-15 Stanislav Brabec <sbrabec@suse.cz> (tiny change)
+
+ msgfilter: Implement plural support
+ * msgfilter.c (process_message): Set or unset
+ MSGFILTER_MSGID_PLURAL and MSGFILTER_PLURAL_FORM.
+
+2014-05-15 Stanislav Brabec <sbrabec@suse.cz> (tiny change)
+
+ msgexec: Implement plural support
+ * msgexec.c (process_string): Set or unset MSGEXEC_MSGID_PLURAL.
+ (process_message): Set or unset MSGEXEC_PLURAL_FORM.
+
+2014-05-14 Daiki Ueno <ueno@gnu.org>
+
+ msgfmt: Report error on accelerator mismatch
+ * msgl-check.c (check_pair): Increment error count on missing
+ accelerator character or too many accelerators.
+
+2014-05-13 Daiki Ueno <ueno@gnu.org>
+
+ msgfmt: Accumulate errors when parsing the PO header
+ Problem reported by Peter Eisentraut at
+ <https://savannah.gnu.org/bugs/?40262>.
+ * msgl-check.c (check_header_entry): Return the number of errors.
+ (check_message): Check the return value of check_header_entry.
+
+2014-05-13 Felipe Sateler <fsateler@debian.org> (tiny change)
+
+ project-id: Add missing quotes around `pwd` for basename
+ Problem reported at <http://bugs.debian.org/654779>.
+ * project-id: Quote argument of the basename command.
+
+2014-05-12 Daiki Ueno <ueno@gnu.org>
+
+ msgfilter: Fix quote handling of doubled grave charaters
+ * filter-quote.c (convert_ascii_quote_to_unicode): Fix handling of
+ doubled grave characters.
+
+2014-05-12 Daiki Ueno <ueno@gnu.org>
+
+ * msgfmt.c (add_languages): New function split from get_languages.
+ (get_languages): Use add_languages instead of manually parsing
+ LINGUAS envvar with strtok_r.
+
+ * x-c.h (literalstring_c): Remove unnecessary DLL_VARIABLE.
+ * xgettext.c (arglist_parser_alloc): Use LET_NONE instead of 0.
+ (arglist_parser_remember): Likewise.
+ * xgettext.h (enum literalstring_escape_type): New enum value
+ LET_NONE.
+
+2014-05-10 Guido Flohr <guido@imperia.net>
+
+ msgattrib: Add --empty option to clear msgstr
+ * msgattrib.c (REMOVE_TRANSLATION): New enum value.
+ (long_options): Add --empty.
+ (main): Set REMOVE_TRANSLATION flag when --empty is given.
+ (usage): Show help of --empty.
+ (process_message_list): Handle REMOVE_TRANSLATION flag.
+
+2014-05-09 Daiki Ueno <ueno@gnu.org>
+
+ vala: Interpret string literals lazily
+ * x-vala.c (P7_EOF, P7_STRING_END, P7_QUOTES, P7_QUOTE, P7_NEWLINE)
+ (UNICODE, IS_UNICODE, UNICODE_VALUE): Remove.
+ (phase7_getc): Remove.
+ (phase7_ungetc): Remove.
+ (phase3_get): Use 'phase2_get' directly to extract string
+ literals; use 'arglist_parser_remember_literal' instead of
+ 'arglist_parser_remember'.
+ (literalstring_c): Declare external variable.
+ (extract_balanced): Remove the
+ 'xgettext_current_source_encoding' setting to prevent encoding
+ conversion around 'arglist_parser_done'.
+ (token_ty): New field 'escape'.
+ * x-vala.h (SCANNERS_VALA): Register 'literalstring_c' as a
+ literalstring_parser.
+
+2014-05-09 Daiki Ueno <ueno@gnu.org>
+
+ c: Interpret string literals lazily
+ * x-c.c (P7_EOF, P7_STRING_END, P7_QUOTES, P7_QUOTE, P7_NEWLINE)
+ (UNICODE, IS_UNICODE, UNICODE_VALUE): Remove.
+ (phase7_get): Remove.
+ (phase7_ungetc): Remove.
+ (phase5_get): Use 'phase3_get' directly to extract string
+ literals; use 'arglist_parser_remember_literal' instead of
+ 'arglist_parser_remember'.
+ (literalstring_parse): New function.
+ (literalstring_c): New variable.
+ (extract_parenthesized): Remove the
+ 'xgettext_current_source_encoding' setting to prevent encoding
+ conversion around 'arglist_parser_done'.
+ * x-c.h (SCANNERS_C): Register 'literalstring_c' as a
+ literalstring_parser.
+ (literalstring_c): New variable declaration.
+
+2014-05-09 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Provide a way to interpret string literals lazily
+ * xgettext.c (extract_ty): New field 'literalstring_parser'.
+ (current_literalstring_parser): New variable.
+ (extract_from_file): Set 'current_literalstring_parser'.
+ (savable_comment_convert_encoding): New function.
+ (arglist_parser_remember_literal): New function.
+ (arglist_parser_remember): Call 'arglist_parser_remember_literal'.
+ (arglist_parser_done): Call literalstring_parser on msgctxt,
+ msgid, and msgid_plural before calling 'remember_a_message';
+ convert encoding of msgid_comment.
+ * x-*.h: Register 'literalstring_parser' through SCANNER_*.
+ * xgettext.h (enum literalstring_escape_type): New enum.
+ (struct literalstring_parser): New struct.
+ (struct partial_call): New fields 'msgctxt_escape',
+ 'msgid_escape', and 'msgid_plural_escape'.
+ (arglist_parser_remember_literal): New function declaration.
+ (savable_comment_convert_encoding): New function declaration.
+
+2014-05-03 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Recognize prefixed comment tag
+ Reported by Jiang Xin in
+ <http://article.gmane.org/gmane.comp.version-control.git/246462>.
+ * xgettext.c (remember_a_message): Discard a string prefixed to
+ the comment tag from all remaining comment lines.
+
+2014-05-03 Daiki Ueno <ueno@gnu.org>
+
+ c: Support C99-style Unicode character escapes
+ * x-c.c: Include assert.h and po-charset.h.
+ (P7_QUOTES, P7_QUOTE, P7_NEWLINE): Redefine as a negative integer.
+ (P7_EOF, P7_STRING_END): New definitions.
+ (UNICODE): New macro.
+ (IS_UNICODE): New macro.
+ (UNICODE_VALUE): New macro.
+ (phase7_getc): Recognize "\unnnn" and "\Unnnnnnnn".
+ (phase5_get): Use mixed_string_buffer for parse string literal.
+
+2014-05-02 Daiki Ueno <ueno@gnu.org>
+
+ vala: Support C99-style Unicode character escapes
+ * x-vala.c: Include assert.h and po-charset.h.
+ (P7_QUOTES, P7_QUOTE, P7_NEWLINE): Redefine as a negative integer.
+ (P7_EOF, P7_STRING_END): New definitions.
+ (UNICODE): New macro.
+ (IS_UNICODE): New macro.
+ (UNICODE_VALUE): New macro.
+ (phase7_getc): Recognize "\unnnn" and "\Unnnnnnnn".
+ (phase3_get): Use mixed_string_buffer for parse string literal.
+
+2014-05-02 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Factor out commonly used mixed_string_buffer
+ * x-python.c (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): Move to...
+ * xgettext.c: ...here.
+ (mixed_string_buffer_alloc): Rename from init_mixed_string_buffer.
+ (mixed_string_buffer_append_to_curr_buffer): Rename from
+ mixed_string_buffer_append_byte.
+ (mixed_string_buffer_append_to_utf8_buffer): Rename from
+ mixed_string_buffer_append_unicode.
+ (mixed_string_buffer_grow_utf8_buffer): Rename from
+ mixed_string_buffer_append_unicode_grow.
+ (mixed_string_buffer_append_char): Split from
+ mixed_string_buffer_append.
+ (mixed_string_buffer_append_unicode): Split from
+ mixed_string_buffer_append.
+ (mixed_string_buffer_done): New function merging
+ mixed_string_buffer_result and free_mixed_string_buffer.
+ * xgettext.h (mixed_string_buffer): New struct moved from
+ x-python.c; add logical_file_name and line_number fields.
+ (mixed_string_buffer_alloc): New function declaration.
+ (mixed_string_buffer_append_char): New function declaration.
+ (mixed_string_buffer_append_unicode): New function declaration.
+ (mixed_string_buffer_done): New function declaration.
+ * x-javascript.c (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): Remove.
+
+2014-04-30 Daiki Ueno <ueno@gnu.org>
+
+ scheme: Recognize GIMP script-fu extension _"abc"
+ * x-scheme.c (read_object): Recognize _"abc".
+
+2014-04-30 Daiki Ueno <ueno@gnu.org>
+
+ format-python-brace: Limit acceptable format specifiers
+ Problem reported by Kovid Goyal at:
+ <https://savannah.gnu.org/bugs/?41668>.
+ * format-python-brace.c (parse_directive): Only recognize a single
+ nested format directive or the standard format specifiers as
+ format specifiers.
+
+2014-04-22 Roumen Petrov <bugtrack@roumenpetrov.info> (tiny change)
+
+ build: Use Automake 'subdir-objects' option
+ * Makefile.am (AUTOMAKE_OPTIONS): Add 'subdir-objects'.
+
+2014-04-21 Daiki Ueno <ueno@gnu.org>
+
+ msgfilter: Fix single quote handling in the quot filter
+ * filter-quote.c (convert_ascii_quote_to_unicode): Fix single
+ quote handling to accept multiple quotations in a string.
+
+2014-04-17 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Strip multiple ".in" suffixes from the file name.
+ * xgettext.c (main): Strip multiple ".in" suffixes.
+
+2014-04-16 Daiki Ueno <ueno@gnu.org>
+
+ * msgfmt.c (get_languages): Allow any whitespace character as a
+ list separator in LINGUAS.
+
+2014-04-15 Daiki Ueno <ueno@gnu.org>
+
+ msgfilter: Add 'quot' and 'boldquot' built-in filters
+ * filter-quote.c: New file.
+ * filters.h (ascii_quote_to_unicode, ascii_quote_to_unicode_bold):
+ New function declaration.
+ * msgfilter.c (main): Handle 'quot' and 'boldquot' filters.
+ * Makefile.am (msgfilter_SOURCES): Add filter-quote.c.
+
+2014-04-04 Daiki Ueno <ueno@gnu.org>
+
+ * xgettext.c (main): Warn user if invalid encoding name is
+ specified with the --from-code option.
+ Reported by jaroslav.fojtik@evolvsys.cz in
+ <https://lists.gnu.org/archive/html/bug-gettext/2014-03/msg00034.html>.
+
+2014-04-04 Daiki Ueno <ueno@gnu.org>
+
+ msgfmt: Add support for Desktop Entry files
+ * write-desktop.h: New file.
+ * write-desktop.c: New file.
+ * msgfmt.c (desktop_mode, desktop_locale_name)
+ (desktop_template_name, desktop_base_directory, desktop_keywords)
+ (desktop_default_keywords): New variables.
+ (long_options): Add --desktop and --template options for Desktop
+ Entry mode.
+ (get_languages): New function.
+ (msgfmt_desktop_bulk): New function which implements bulk
+ operation mode for Desktop Entry mode.
+ (main): Handle Desktop Entry mode options; call
+ 'msgfmt_desktop_bulk' if -d option is seen.
+ * Makefile.am (noinst_HEADERS): Add write-desktop.h.
+ (msgfmt_SOURCES): Add write-desktop.c
+
+2014-04-04 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Add support for Desktop Entry files
+ * read-desktop.h: New file.
+ * read-desktop.c: New file.
+ * x-desktop.h: New file.
+ * x-desktop.h: New file.
+ * xgettext.c (main): Regiser keywords for Desktop Entry mode.
+ (usage): Mention Desktop Entry source language.
+ (language_to_extractor): Add Desktop Entry rule.
+ (extension_to_language): Add Desktop Entry rule.
+ * Makefile.am (noinst_HEADERS): Add read-desktop.h and x-desktop.h.
+ (xgettext_SOURCES): Add x-desktop.c.
+
+2014-03-26 Aurélien Gâteau <mail@agateau.com> (tiny change)
+
+ msgfmt: Add --source option to generate .java file instead of .class
+ * msgfmt.c (java_output_source): New variable.
+ (long_options, main, usage): Add --source option.
+ * write-java.h (msgdomain_write_java): Add OUTPUT_SOURCE argument.
+ * write-java.c (msgdomain_write_java): Generate .java file instead
+ of .class if OUTPUT_SOURCE argument is given.
+ Reported at <https://savannah.gnu.org/bugs/?41766>.
+
+2014-03-25 Daiki Ueno <ueno@gnu.org>
+
+ Extend --add-location option to suppress line number output
+ The --add-location option of msgattrib, msgcat, msgcomm, msgconv,
+ msgen, msgfilter, msggrep, msgmerge, msguniq, and xgettext
+ commands now got new semantics. It takes an optional argument
+ 'never', 'full', or 'file', to control the format of "#: ..."
+ comments.
+ The default catalog reader changed to always remember file
+ positions so the line number part can be suppressed in output
+ phase rather than input phase.
+ Feature requested in:
+ <https://lists.gnu.org/archive/html/bug-gettext/2013-08/msg00039.html>.
+ * read-catalog.h (line_comment): Abolish.
+ (DEFAULT_CATALOG_READER_TY): Remove handle_filepos_comments field.
+ * read-catalog.c (line_comment): Abolish.
+ (default_destructor, default_copy_comment_state)
+ (default_reset_comment_state, default_comment_filepos): Always
+ remember filepos.
+ (default_parse_brief, read_catalog_stream): Adjust to the change.
+ * write-po.h (enum filepos_comment_type): New enum.
+ (message_print_style_filepos): New function declaration.
+ (handle_filepos_comment_option): New function declaration.
+ * write-po.c (message_print_style_filepos): New function
+ (handle_filepos_comment_option): New function.
+ (message_print_comment_filepos): Uniquify mp->filepos elements
+ ignoring line number if filepos_comment_type is
+ filepos_comment_file.
+ * msgfmt.c: Adjust to the change.
+ * msgattrib.c (long_options, main): Allow --add-location option to
+ take an optional format specifier.
+ * msgcat.c (long_options, main): Likewise.
+ * msgcomm.c (long_options, main): Likewise.
+ * msguniq.c (long_options, main): Likewise.
+ * xgettext.c (long_options, main): Likewise.
+ * msgconv.c (long_options, main): Likewise; add a new option -n as
+ an alias of --add-location.
+ * msgen.c (long_options, main): Likewise.
+ * msgfilter.c (long_options, main): Likewise.
+ * msggrep.c (long_options, main): Likewise.
+ * msgmerge.c (long_options, main): Likewise.
+
+2014-03-12 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Fix infloop on loading Glade files with non-DL expat
+ * libexpat-compat.c: Keep the references to
+ XML_GetCurrent{Line,Column}Number symbols before including
+ libexpat-compat.h, since they are redefined.
+
+2014-03-10 Daiki Ueno <ueno@gnu.org>
+
+ php: Recognize single and double quotes around heredoc label
+ Problem reported by Byrial Jensen in:
+ <https://lists.gnu.org/archive/html/bug-gettext/2012-04/msg00001.html>.
+ Based on the patch by Andreas Stricker posted as:
+ <https://lists.gnu.org/archive/html/bug-gettext/2012-04/msg00002.html>.
+ * x-php.c (phase4_get): Strip quotes around heredoc label.
+
+2013-11-20 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: Add E4X support to JavaScript scanner
+ Reported by Piotr Drąg at: <https://savannah.gnu.org/bugs/?40125>.
+ * xgettext.h (enum lexical_context_ty): New enumeration items
+ lc_xml_open_tag, lc_xml_close_tag, lc_xml_content.
+ * x-javascript.c (phase5_scan_xml_markup): New function.
+ (phase5_get): Handle '<', '>', '/', '=', '{', and '}' specially
+ to support E4X.
+ (enum token_type_ty): New enumeration item token_type_equal.
+ (xml_element_depth): New variable.
+ (inside_embedded_in_xml): New variable.
+ (extract_javascript): Initialize those variables.
+
+2013-11-14 Daiki Ueno <ueno@gnu.org>
+
+ * x-javascript.c (phase3_getc): Make sure to call comment_line_end
+ after parsing C++ style comment line.
+ Reported by Illimar Tambek at: <http://savannah.gnu.org/bugs/?40572>.
+
+2013-11-14 Daiki Ueno <ueno@gnu.org>
+
+ * x-javascript.c (comment_line_end): Add missing chars_to_remove
+ argument; all callers changed.
+ Reported by Illimar Tambek at: <http://savannah.gnu.org/bugs/?40573>.
+
+2013-11-11 Daiki Ueno <ueno@gnu.org>
+
+ * x-c.c (phase5_get): Fix misuse of a logical operator.
+ * x-perl.c (extract_quotelike_pass3): Likewise.
+ * x-vala.c (phase3_get): Likewise.
+ Reported by David Binderman at: <https://savannah.gnu.org/bugs/?40528>.
+
+2013-10-23 Daiki Ueno <ueno@gnu.org>
+
+ * read-catalog-abstract.c (catalog_reader_parse): Clear
+ error_message_count before parsing, rather than after. The
+ variable may be > 0 before calling the PO parser, when xgettext
+ handles mutiple files.
+ Problem reported by Emil Wojak in
+ <https://lists.gnu.org/archive/html/bug-gettext/2013-10/msg00005.html>.
+
+2013-10-15 Peter Eisentraut <peter_e@gmx.net> (tiny change)
+
+ * msgl-check.c (check_header_entry): Adjust the default value of
+ PO-Revision-Date to xgettext output. Reported at
+ <https://savannah.gnu.org/bugs/?40261>.
+
+2013-08-29 Daiki Ueno <ueno@gnu.org>
+
+ * po-gram-gen.y (message): Free memory allocated for
+ msgid_pluralform.
+ (string_list): Free memory allocated for STRING.
+ (prev_string_list): Free memory allocated for PREV_STRING.
+ Reported by Alexander Potashev in
+ <https://lists.gnu.org/archive/html/bug-gettext/2013-08/msg00043.html>.
+
+2013-08-13 Miguel Angel Arruga Vivas <rosen644835@gmail.com>
+
+ * x-glade.c (start_element_glade1): Use extract_all variable.
+ (start_element_glade2): Ignore --extract-all option.
+ (start_element_gtkbuilder): Likewise.
+ (start_element_handler): Initialize p->extract_string to false.
+
+2013-08-12 Daiki Ueno <ueno@gnu.org>
+
+ * xgettext.c (remember_a_message): Handle multi-line extracted
+ comments.
+ Reported by Gabor Kelemen in
+ <http://lists.gnu.org/archive/html/bug-gettext/2013-08/msg00026.html>.
+
+2013-08-09 Daiki Ueno <ueno@gnu.org>
+
+ * x-gsettings.c (extract_gsettings): Add guard when expat is not
+ available at compile time.
+
+2013-08-08 Miguel Angel Arruga Vivas <rosen644835@gmail.com> (tiny change)
+
+ Fix copyright year in xgettext version string.
+ * xgettext.c (main): Update copyright year.
+
+2013-08-06 Daiki Ueno <ueno@gnu.org>
+
+ xgettext: add support for GSettings schema file
+ * x-gsettings.h: New file.
+ * x-gsettings.c: New file.
+ * xgettext.c: Include x-gsettings.h.
+ (flag_table_vala): New variable.
+ (usage): Mention GSettings source language.
+ (language_to_extractor): Add GSettings rule.
+ (extension_to_language): Add GSettings rule.
+ * Makefile.am (noinst_HEADERS): Add x-gsettings.h.
+ (xgettext_SOURCES): Add x-gsettings.c.
+ * FILES: Update.
+
+2013-08-05 Daiki Ueno <ueno@gnu.org>
+
+ * xgettext.c (main): Allow exntension with multiple
+ dots. e.g. .gschema.xml.
+
+2013-03-02 Miguel Angel Arruga Vivas <rosen644385@gmail.com>
+
+ Extract libexpat compatibility layer.
+ * libexpat-compat.h, libexpat-compat.c: Extracted from x-glade.c
+ * x-glade.c: Use libexpat-compat.h
+
+2013-07-11 Daiki Ueno <ueno@gnu.org>
+
+ Fix crash when parsing '..' with non-string argument.
+ Reported by Koen Dergent at <http://savannah.gnu.org/bugs/?39458>.
+ * x-lua.c (extract_balanced): Skip stray '..'.
+
+2013-06-27 Daiki Ueno <ueno@gnu.org>
+
+ * x-python.c (phase5_pushback): Increment size to 2.
+
+2013-06-25 Daiki Ueno <ueno@gnu.org>
+
+ Fix handling of \u escape sequences in Tcl.
+ * x-tcl.c (do_getc_escaped): Fix handling of \u.
+ Reported by Guido Berhoerster in
+ <https://lists.gnu.org/archive/html/bug-gettext/2013-06/msg00022.html>.
+
+2013-06-17 Daiki Ueno <ueno@gnu.org>
+
+ * x-python.c (init_flag_table_python): Enable python-brace-format
+ by default.
+
+2013-06-17 Daiki Ueno <ueno@gnu.org>
+
+ * x-glade.c (start_element_null): New function.
+ (end_element_null): New function.
+ (element_parser_null): New variable.
+ (start_element_handler): Use element_parser_null if the top-level
+ element does not indicate a valid Glade file.
+ (do_extract_glade): Initialize element_parser to
+ element_parser_null rather than NULL.
+
+2013-06-13 Miguel Angel Arruga Vivas <rosen644835@gmail.com>
+ Daiki Ueno <ueno@gnu.org>
+
+ Support for GtkBuilder file format in the Glade scanner.
+ * x-glade.h (EXTENSIONS_GLADE): Recognize .ui.
+ * x-glade.c (element_parser): New struct.
+ (start_element_glade1): New function split from start_element_handler.
+ (end_element_glade1): New function split from end_element_handler.
+ (start_element_glade2): New function split from start_element_handler.
+ (end_element_glade2): New function split from end_element_handler.
+ (start_element_gtkbuilder): New function.
+ (end_element_gtkbuilder): New function.
+ (element_parser_glade1): New variable.
+ (element_parser_glade2): New variable.
+ (element_parser_gtkbuilder): New variable.
+ (start_element_handler): Delegate the actual parsing logic to
+ specific element_parser.
+ (end_element_handler): Likewise.
+ Thanks to Miguel Ángel Arruga Vivas for the initial implementation
+ and the discussion in
+ <https://lists.gnu.org/archive/html/bug-gettext/2013-03/msg00074.html>
+ footnote 2.
+
+2013-06-10 Daiki Ueno <ueno@gnu.org>
+
+ * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p).
+ Suggested by Stefano Lattarini in
+ <https://lists.gnu.org/archive/html/bug-gettext/2013-04/msg00044.html>.
+
+2013-06-04 Daiki Ueno <ueno@gnu.org>
+
+ Support for Vala.
+ * x-vala.h: New file.
+ * x-vala.c: New file.
+ * xgettext.c: Include x-vala.h.
+ (flag_table_vala): New variable.
+ (main): Invoke init_flag_table_vala, x_vala_extract_all,
+ x_vala_keyword.
+ (usage): Mention Vala source language.
+ (language_to_extractor): Add Vala rule.
+ (extension_to_language): Add Vala rule.
+ * Makefile.am (noinst_HEADERS): Add x-vala.h.
+ (xgettext_SOURCES): Add x-vala.c.
+ * FILES: Update.
+
+2013-05-21 Daiki Ueno <ueno@gnu.org>
+
+ * x-javascript.c (phase7_getuc): Treat non-legitimate character
+ escape sequences more strictly.
+
+2013-05-20 Pavel Kharitonov <ineiev@gnu.org> (tiny change)
+
+ Add --previous option to msgattrib.
+ * msgattrib.c (long_options, main, process_message_list):
+ (usage): Add --previous option.
+
+2013-05-12 Daiki Ueno <ueno@gnu.org>
+
+ Fix end-of-string handling in JavaScript scanner.
+ * x-javascript.c (phase7_getuc): Remove unused BACKSLASH_COUNTER
+ argument; all callers changed.
+ Reported by Andreas Stricker in
+ <http://lists.gnu.org/archive/html/bug-gettext/2013-04/msg00051.html>.
+
+2013-05-03 Daiki Ueno <ueno@gnu.org>
+
+ * user-email.sh.in (lowercase_sed): Don't use non-portable
+ character escape in sed 's' command.
+ Reported by Ben Fox-Moore in
+ <http://lists.gnu.org/archive/html/bug-gettext/2013-05/msg00003.html>
+ and thanks to Ineiev for the suggestion.
+
+2013-04-26 Daiki Ueno <ueno@gnu.org>
+
+ Support for Python brace format.
+ * message.h (format_type): New enum value 'format_python_brace.
+ (NFORMATS): Increment.
+ * message.c (format_language): Add format_python_brace entry.
+ (format_language_pretty): Likewise.
+ * format.h (formatstring_python_brace): New declaration.
+ * format-python-brace.c: New file.
+ * format.c (formatstring_parsers): Add formatstring_python_brace.
+ * x-python.h (SCANNERS_PYTHON): Refar to formatstring_python_brace.
+ * xgettext.c (xgettext_record_flag): Handle format_python_brace.
+ * FILES: Update.
+
+2013-04-22 Daiki Ueno <ueno@gnu.org>
+
+ Make msgfmt --check-header more reliable.
+ * msgl-check.c (check_header_entry): Don't use c_strstr to parse
+ message header.
+
+2013-04-22 Daiki Ueno <ueno@gnu.org>
+
+ Support CR/LF line terminators in Python sources even on Unix.
+ * x-python.c (phase0_getc, phase0_ungetc): New functions.
+ (phase1_getc): Use them instead of calling getc/ungetc directly.
+
+2013-04-22 Daiki Ueno <ueno@gnu.org>
+
+ Support explicit string concatenation in Python.
+ * x-python.c (enum token_type_ty): New enumeration item
+ token_type_plus.
+ (free_token): New function.
+ (phase5_get): Recognize token_type_plus.
+ (x_python_lex): Handle string concatenation with '+'.
+ (extract_balanced): Handle token_type_plus.
+
+2013-04-18 Daiki Ueno <ueno@gnu.org>
+
+ * xgettext.c (usage): Wrap long lines in --help output.
+
+2013-04-17 Andreas Stricker <astricker@futurelab.ch>
+
+ Support for JavaScript.
+ * message.h (format_type): New enum value 'format_javascript'.
+ (NFORMATS): Increment.
+ * message.c (format_language): Add format_javascript entry.
+ (format_language_pretty): Likewise.
+ * format.h (formatstring_javascript): New declaration.
+ * format-javascript.c: New file.
+ * format.c (formatstring_parsers): Add formatstring_javascript.
+ * x-javascript.h: New file.
+ * x-javascript.c: New file.
+ * xgettext.c: Include x-javascript.h.
+ (flag_table_javascript): New variable.
+ (main): Invoke init_flag_table_javascript, x_javascript_extract_all,
+ x_javascript_keyword.
+ (usage): Mention JavaScript source language.
+ (xgettext_record_flag): Handle format_javascript.
+ (language_to_extractor): Add JavaScript rule.
+ (extension_to_language): Add JavaScript rule.
+ * Makefile.am (noinst_HEADERS): Add x-javascript.h.
+ (FORMAT_SOURCE): Add format-javascript.c.
+ (xgettext_SOURCES): Add x-javascript.c.
+ * FILES: Update.
+
+2013-04-16 Ľubomír Remák <lubomirr@lubomirr.eu>
+
+ Support for escape sequences added in Lua 5.2.
+ * x-lua.c (phase3_get): Add \x and \z escape sequences.
+
+2013-04-11 Ľubomír Remák <lubomirr@lubomirr.eu>
+
+ Support for Lua.
+ * message.h (format_type): New enum value 'format_lua'.
+ (NFORMATS): Increment.
+ * message.c (format_language): Add format_lua entry.
+ (format_language_pretty): Likewise.
+ * format.h (formatstring_lua): New declaration.
+ * format-lua.c: New file.
+ * format.c (formatstring_parsers): Add formatstring_lua.
+ * x-lua.h: New file.
+ * x-lua.c: New file.
+ * xgettext.c: Include x-lua.h.
+ (flag_table_lua): New variable.
+ (main): Invoke init_flag_table_lua, x_lua_extract_all,
+ x_lua_keyword.
+ (usage): Mention Lua source language.
+ (xgettext_record_flag): Handle format_lua.
+ (language_to_extractor): Add Lua rule.
+ (extension_to_language): Add Lua rule.
+ * Makefile.am (noinst_HEADERS): Add x-lua.h.
+ (FORMAT_SOURCE): Add format-lua.c.
+ (xgettext_SOURCES): Add x-lua.c.
+ * FILES: Update.
+
+2013-03-15 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
+ Daiki Ueno <ueno@gnu.org>
+
+ Extract msgctxt from Glade input files.
+ Reported at <https://savannah.gnu.org/bugs/?34506>
+ * x-glade.c (struct element_state): Add field 'extract_context'.
+ (start_element_handler): Check "context" attribute if the string
+ contains msgctxt.
+ (end_element_handler): Extract msgctxt if extract_context is set.
+
+2013-02-25 Daiki Ueno <ueno@gnu.org>
+
+ * Makefile.am (libgettextsrc_la_CPPFLAGS): Define to specify Woe32
+ DLL export flags.
+
+2013-01-09 Andreas Stricker <astricker@futurelab.ch> (tiny change)
+
+ * po-xerror.c: Include error.h for error_message_count.
+ * read-catalog-abstract.c: Likewise.
+
+2013-01-06 Daiki Ueno <ueno@gnu.org>
+
+ * msgl-fsearch.c (message_fuzzy_index_ty): Don't use float-derived
+ integer SHORT_MSG_MAX to define array.
+ (message_fuzzy_index_alloc): Allocate memory for 'short_messages'
+ field dynamically.
+ (message_fuzzy_index_free): Free it.
+
+2013-01-03 Daiki Ueno <ueno@gnu.org>
+
+ * xgettext.c (construct_header): Fix memory leak.
+
+2012-12-25 Daiki Ueno <ueno@gnu.org>
+
+ * gettext-0.18.2 released.
+
+2012-06-03 Jim Meyering <jim@meyering.net>
+
+ * msginit.c: Spelling fixes.
+ * write-catalog.c: Likewise.
+
+2012-05-03 Bruno Haible <bruno@clisp.org>
+
+ Document msgfmt option --endianness.
+ * msgfmt.c (usage): Document the option --endianness.
+ Reported by Paul Martin <pm@debian.org> via
+ Santiago Vila <sanvila@unex.es>.
+
+2012-01-26 Bruno Haible <bruno@clisp.org>
+
+ Modernize quoting.
+ * hostname.c (usage): Quote 'like this', not `like this', as per the
+ recent change to the GNU coding standards.
+ * 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, msgfmt_set_domain, msgfmt_frob_new_message):
+ Likewise.
+ * msggrep.c (usage): Likewise.
+ * msginit.c (usage): Likewise.
+ * msgl-cat.c (catenate_msgdomain_list): Likewise.
+ * msgl-check.c (check_pair, check_header_entry): Likewise.
+ * msgmerge.c (usage): Likewise.
+ * msgunfmt.c (usage): Likewise.
+ * msguniq.c (usage): Likewise.
+ * recode-sr-latin.c (usage): Likewise.
+ * urlget.c (usage): Likewise.
+ * write-po.c (wrap): Likewise.
+ * xgettext.c (main, usage, remember_a_message, construct_header,
+ language_to_extractor): Likewise.
+ * po-gram-gen.y: Likewise.
+ * po-error.h: Likewise.
+ * po-lex.h: Likewise.
+ * read-catalog-abstract.h: Likewise.
+ * x-c.c: Likewise.
+
+2011-10-04 Bruno Haible <bruno@clisp.org>
+
+ xgettext for Scheme: Understand guile 2.0 comment syntax, part 2.
+ * x-scheme.c (read_object): Extract and don't ignore block comments.
+ Understand the #|...|# syntax of SRFI-30. (Code copied from x-lisp.c.)
+
+2011-10-04 Bruno Haible <bruno@clisp.org>
+
+ xgettext for Scheme: Understand guile 2.0 comment syntax, part 1.
+ * x-scheme.c (read_object): Understand !# as a block comment terminator
+ even when not surrounded by newlines.
+ Reported by David Pirotte <david@altosw.be>
+ via Santiago Vila <sanvila@unex.es>.
+
+2011-07-29 Bruno Haible <bruno@clisp.org>
+
+ Fix xgettext crash when extracting a message with plural that is
+ excluded.
+ * xgettext.h (remember_a_message): Document the return value.
+ * xgettext.c (arglist_parser_done): Handle the case where
+ remember_a_message returned NULL.
+ * x-smalltalk.c (extract_smalltalk): Likewise.
+ * x-ycp.c (extract_parenthesized): Likewise.
+ Reported by Jean-Luc Coulon <jean-luc.coulon@wanadoo.fr> via
+ Santiago Vila <sanvila@unex.es>.
+
+2011-06-13 Bruno Haible <bruno@clisp.org>
+
+ Avoid compilation error on Solaris 7 with cc.
+ * msgl-fsearch.c (SHORT_MSG_MAX): Define more directly with SunPRO C.
+
+2011-06-04 Bruno Haible <bruno@clisp.org>
+
+ Avoid link error when linking statically on AIX 7.
+ * Makefile.am (xgettext_LDADD): Add LTLIBICONV.
+
+2011-04-13 Bruno Haible <bruno@clisp.org>
+
+ * msgcat.c (usage): Fix description of --use-first.
+ * msgcomm.c (usage): Fix typo.
+ Reported by Matthijs Kooijman.
+
+2011-06-04 Bruno Haible <bruno@clisp.org>
+
+ Update after __attibute__ is no longer defined by gnulib.
+ * msgl-check.c (formatstring_error_logger): Use __attribute__ only with
+ compiler versions that support it.
+
+2011-06-02 Bruno Haible <bruno@clisp.org>
+
+ Use u8_mbtoucr instead of u8_mbtouc in some places.
+ * po-lex.c (mbfile_getc): Call u8_mbtoucr instead of u8_mbtouc.
+ * x-csharp.c (phase2_getc): Likewise.
+ * x-python.c (phase2_getc): Likewise.
+ Needed after libunistring changed on 2010-11-13.
+
+2011-06-02 Bruno Haible <bruno@clisp.org>
+
+ Update after gnulib changed.
+ * msgexec.c: Include spawn-pipe.h instead of pipe.h.
+ * msginit.c: Likewise.
+ * read-csharp.c: Likewise.
+ * read-java.c: Likewise.
+ * read-resources.c: Likewise.
+ * read-tcl.c: Likewise.
+ * write-resources.c: Likewise.
+
+2010-11-20 Bruno Haible <bruno@clisp.org>
+
+ Port to uClibc.
+ * write-po.c (wrap): Treat uClibc like a non-glibc platform.
+ * format-c-parse.h (HANDLE_I_FLAG): Likewise.
+ * po-charset.c (po_lex_charset_set): Likewise.
+ * recode-sr-latin.c (process): Likewise.
+ * x-python.c (set_current_file_source_encoding): Likewise.
+ * xgettext.c (main): Likewise.
+
+2010-11-13 Ihar Hrachyshka <ihar.hrachyshka@gmail.com> (tiny change)
+
+ * plural-table.c (plural_table): Added Belarusian, copied from Russian
+ and Ukrainian.
+
+2010-11-07 Bruno Haible <bruno@clisp.org>
+
+ format-c.c: Share code with libintlext.
+ * format-c-parse.h: New file, extracted from format-c.c.
+ * format-c.c: Include it.
+ (format_parse_entrails): Remove function.
+ * Makefile.am (FORMAT_SOURCE): Add format-c-parse.h.
+ * FILES: Update.
+
+2010-11-07 Bruno Haible <bruno@clisp.org>
+
+ format-c.c: Prepare for sharing code with libintlext.
+ * format-c.c: Move INVALID_* macros.
+ (IF_OOM): New macro.
+ (SYSDEP_SEGMENTS_PROCESSED): New macro.
+ (FAT_BASIC_MASK): New enumeration value.
+ (HANDLE_I_FLAG): New macro.
+ (format_parse_entrails): New function, extracted from format_parse.
+ Use the IF_OOM, SYSDEP_SEGMENTS_PROCESSED, HANDLE_I_FLAG macros. Handle
+ I64 as a size specifier on native Win32.
+ (format_parse): Rewritten to call format_parse_entrails.
+
+2010-11-07 Bruno Haible <bruno@clisp.org>
+
+ format-c.c: Prepare for sharing code with libintlext.
+ * format-c.c (INVALID_ANGLE_BRACKET, INVALID_IGNORED_ARGUMENT): New
+ macros.
+ (format_parse): Use them.
+
+2011-06-07 Bruno Haible <bruno@clisp.org>
+
+ Rely more on libtool.
+ * Makefile.am (libgettextsrc_la_LDFLAGS): Use -no-undefined always.
+ Don't use @LTNOUNDEF@.
+
+2010-06-06 Bruno Haible <bruno@clisp.org>
+
+ Bug fixes in libgettextpo.
+ * msgl-check.h (check_message_list): Add ignore_untranslated_messages,
+ ignore_fuzzy_messages arguments.
+ * msgl-check.c (check_plural, check_message_list): Likewise.
+ * msgfmt.c (main): Update.
+
+2010-06-04 Bruno Haible <bruno@clisp.org>
+
+ * gettext-0.18.1 released.
+
+2010-06-03 Bruno Haible <bruno@clisp.org>
+
+ xgettext: Recognize language of files ending in .perl.
+ * x-perl.h (EXTENSIONS_PERL): Recognize .perl.
+ Suggested by Ævar Arnfjörð Bjarmason <avarab@gmail.com>.
+
+2010-06-03 Bruno Haible <bruno@clisp.org>
+
+ urlget: Don't attempt to run the Java program if we don't install it.
+ * Makefile.am (USEJAVA): New variable.
+ (DEFS): Define USEJAVA.
+ * urlget.c (fetch): Don't try to use Java is USEJAVA is 0.
+
+2010-05-19 Bruno Haible <bruno@clisp.org>
+
+ Link with libunistring, if it exists.
+ * Makefile.am (LDADD, libgettextsrc_la_LDFLAGS): Add LTLIBUNISTRING.
+
+2010-05-18 Bruno Haible <bruno@clisp.org>
+
+ Correct program dependencies.
+ * Makefile.am (OTHERPROGDEPENDENCIES): New variable.
+ (recode_sr_latin_LDADD): Remove redundant variable.
+ (recode_sr_latin_DEPENDENCIES): Use OTHERPROGDEPENDENCIES.
+ (hostname_DEPENDENCIES, urlget_DEPENDENCIES): New variables.
+
+2010-05-09 Bruno Haible <bruno@clisp.org>
+
+ * gettext-0.18 released.
+
+2010-05-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.
+
+2010-04-25 Bruno Haible <bruno@clisp.org>
+
+ Update support of object-pascal-format strings.
+ * format-pascal.c: Update description of format strings.
+ (enum format_arg_type): Remove FAT_INTEGER64.
+ (format_parse): Accept an empty digit sequence before ':'. Treat 'd',
+ 'u', 'x' the same way.
+ (main): Update.
+
+2010-04-05 Bruno Haible <bruno@clisp.org>
+
+ Interoperability with mono versions >= 2009-02-27.
+ * write-csharp.c (write_csharp_code): Emit a TableInitialized field.
+ Change ReadResources so that it may be called multiple times, even
+ concurrently.
+ Reported by Guido Flohr <guido@imperia.net>
+
+2010-03-31 Guido Flohr <guido@imperia.net>
+
+ Improve how xgettext handles Perl syntax ambiguities.
+ * x-perl.c(enum token_type_ty): New enumeration items
+ token_type_number, token_type_object.
+ (struct token_ty): New field 'last_type'.
+ (token2string): Handle token_type_number, token_type_object.
+ (free_token): Likewise.
+ (prefer_division_over_regexp): Remove variable.
+ (extract_variable): Recognize token of type token_type_object.
+ (prefer_regexp_over_division): New function.
+ (last_token_type): Renamed from last_token.
+ (x_perl_prelex): Assign the token's last_type. Recognize token of type
+ token_type_number. Don't special-case "grep" and "split". Invoke
+ prefer_regexp_over_division for disambiguation.
+ (token_stack_dump): Handle token_type_number, token_type_object.
+ (x_perl_lex): Assign the token's last_type. Update last_token_type
+ intelligently.
+ (collect_message): Invoke prefer_regexp_over_division for
+ disambiguation.
+ (extract_balanced): Don't set last_token_type here. Handle
+ token_type_number, token_type_object.
+ (extract_perl): Initialize last_token_type here.
+ Reported by Guillem Jover <guillem@debian.org> via Santiago Vila.
+
+ * x-perl.c (x_perl_prelex): Clarify interpolate_keywords arguments.
+
+ * x-perl.c (eaten_here): Renamed from here_eaten.
+ (phase1_getc, get_here_document, skip_pod, extract_perl): Update.
+
+2010-03-13 Bruno Haible <bruno@clisp.org>
+
+ New options --color, --style for many programs.
+ * msgattrib.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * msgcomm.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * msgconv.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * msgen.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * msgfilter.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * msggrep.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * msginit.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * msgmerge.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * msgunfmt.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * msguniq.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ * xgettext.c: Include color.h.
+ (long_options): Add options --color, --style.
+ (main): Implement them.
+ (usage): Document them.
+ Reported by Kalle Olavi Niemitalo <kon@iki.fi>
+ via Santiago Vila <sanvila@unex.es>.
+
+2010-02-20 Bruno Haible <bruno@clisp.org>
+
+ * plural-table.c (plural_table): Add Bulgarian.
+ Reported by Roumen Petrov <transl@roumenpetrov.info>.
+
+2010-02-20 Bruno Haible <bruno@clisp.org>
+
+ * plural-table.c (plural_table): Sort in the same order as
+ gettext.texi.
+
+2010-02-17 Bruno Haible <bruno@clisp.org>
+
+ Fix error in conversion of large PO file (> 4000 msgs) to Java class.
+ * write-java.c: Include minmax.h.
+ (write_java1_init_statements, write_java2_init_statements): New
+ functions, extracted from write_java_code.
+ (write_java_code): If there are many messages, split the initialization
+ code into several static methods.
+ Reported by sasha <predator@savannah.gnu.org>.
+
+2009-12-21 Bruno Haible <bruno@clisp.org>
+
+ * lang-table.c (language_table): Add Mapudungun, Lower Sorbian,
+ Upper Sorbian, Mohawk, Yakut, Southern Sami, Lule Sami, Inari Sami,
+ Skolt Sami.
+ * msginit.c (catalogname_for_locale): Add Mapudungun, Lower Sorbian,
+ Upper Sorbian, Yakut, Inari Sami, Skolt Sami.
+
+2009-12-12 Bruno Haible <bruno@clisp.org>
+
+ * *.h, *.c, *.y: Untabify.
+
+2009-11-28 Bruno Haible <bruno@clisp.org>
+
+ * x-perl.c (extract_variable): Fix tp->type when returning at EOF.
+ Reported by Guido Flohr <guido@imperia.bg>.
+
+2009-11-15 Bruno Haible <bruno@clisp.org>
+
+ * x-python.c: Update comments regarding PEP 0263.
+
+2009-09-05 Bruno Haible <bruno@clisp.org>
+
+ * write-po.c (wrap): Remove unused initialization.
+ * x-glade.c (comment_handler): Likewise.
+ * xgettext.c (flag_context_list_table_insert): Add comment.
+ Found by clang's static analyzer.
+
+2009-08-30 Bruno Haible <bruno@clisp.org>
+
+ Accommodate the Solaris iconv_open function, which cannot convert
+ directly between many pairs of encodings.
+ * msgl-iconv.h (convert_string_directly): Renamed from convert_string.
+ * msgl-iconv.c: Include xstriconveh.h.
+ (convert_string_directly): Renamed from convert_string.
+ (convert_string): New function.
+ (convert_string_list, convert_prev_msgid, convert_msgid,
+ iconvable_string_list, iconvable_prev_msgid, iconvable_msgid): Change
+ argument type to 'const iconveh_t *'.
+ (convert_msgstr, iconvable_string, iconvable_msgstr): Likewise. Invoke
+ xmem_cd_iconveh instead of xmem_cd_iconv.
+ (iconv_message_list_internal, is_message_list_iconvable): Invoke
+ iconveh_open, iconveh_close instead of iconv_open, iconv_close.
+ * xgettext.c (from_current_source_encoding): Update.
+
+2009-08-16 Bruno Haible <bruno@clisp.org>
+
+ Reduce dependency on project-id heuristic.
+ * msginit.c (project_id): Add header argument. Return first part of
+ Project-Id-Version field if present.
+ (fill_header): Update.
+
+2009-08-13 Bruno Haible <bruno@clisp.org>
+
+ * msgexec.c: Include msgl-charset.h.
+ (main): Invoke compare_po_locale_charsets.
+ (process_string): Add comment.
+ * msgfilter.c (process_message): Likewise.
+
+2009-08-10 Bruno Haible <bruno@clisp.org>
+
+ Avoid a gcc warning.
+ * msgfilter.c (sub_argv): Change type to 'const char **'.
+ (main): Update.
+
+2009-08-10 Bruno Haible <bruno@clisp.org>
+
+ Use type 'ucs4_t' more often. Avoids gcc warnings on Cygwin.
+ * po-lex.c (struct mbchar): Change type of 'uc'.
+ (mb_width): Update.
+ * read-properties.c (read_escaped_string): Change type of local
+ variable 'uc'.
+ * read-stringtable.c (phase2_getc): Likewise.
+ * write-properties.c (conv_to_java, write_escaped_string): Change type
+ of local variables 'uc', 'uc1', 'uc2'.
+ * write-java.c (string_hashcode, write_java_string): Likewise.
+ * write-csharp.c (construct_class_name, write_csharp_string): Change
+ type of local variable 'uc'.
+ * write-tcl.c (write_tcl_string): Likewise.
+ * write-qt.c (conv_to_iso_8859_1, conv_to_utf16): Likewise.
+ * x-python.c (phase2_getc, mixed_string_buffer_append): Likewise.
+ (mixed_string_buffer_append_unicode): Change argument type to 'ucs4_t'.
+ * x-java.c (string_buffer_append): Change type of local variable 'uc'.
+ (string_buffer_append_unicode): Change argument type to 'ucs4_t'.
+ * x-csharp.c (phase2_getc): Change type of local variable 'uc'.
+
+2009-08-04 Bruno Haible <bruno@clisp.org>
+
+ Port msgfilter to Woe32 platforms.
+ * msgfilter.c: Don't include errno.h, fcntl.h, io.h, sys/select.h,
+ pipe.h, wait-process.h. Include pipe-filter.h instead.
+ (HAVE_SELECT): Remove undefine.
+ (nonintr_close, nonintr_read, nonintr_write, nonintr_select): Remove
+ functions.
+ (O_NONBLOCK): Remove fallback.
+ (IS_EAGAIN): Remove macro.
+ (struct locals): New type.
+ (prepare_write, done_write, prepare_read, done_read): New functions.
+ (generic_filter): Implement using pipe_filter_ii_execute.
+
+2009-07-27 Часлав Илић (Chusslove Illich) <caslav.ilic@gmx.net>
+
+ Extend recode-sr-latin to also transform letters with accents.
+ * filter-sr-latin.c (table): Add entries for letters with accents.
+ (IS_UPPERCASE_CYRILLIC): Recognize also U+04E2, U+04EE.
+ (serbian_to_latin): Update.
+
+2009-06-06 Bruno Haible <bruno@clisp.org>
+
+ * x-perl.c (x_perl_prelex): Recognize the perl 5.10 operator '//'.
+ Reported by Kevin Ryde <user42@zip.com.au>.
+
+2009-05-29 Bruno Haible <bruno@clisp.org>
+
+ Improve msgfmt error message about format directive mismatches
+ in msgstr[i].
+ * format.h (struct formatstring_parser): Add pretty_msgid argument to
+ 'check' member.
+ * format-awk.c (format_check): Add pretty_msgid argument.
+ * format-boost.c (format_check): Likewise.
+ * 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-gfc-internal.c (format_check): Likewise.
+ * format-java.c (format_check): Likewise.
+ * format-kde.c (format_check): Likewise.
+ * format-librep.c (format_check): Likewise.
+ * format-lisp.c (format_check): Likewise.
+ * format-pascal.c (format_check): Likewise.
+ * format-perl-brace.c (format_check): Likewise.
+ * format-perl.c (format_check): Likewise.
+ * format-php.c (format_check): Likewise.
+ * format-python.c (format_check): Likewise.
+ * format-qt.c (format_check): Likewise.
+ * format-qt-plural.c (format_check): Likewise.
+ * format-scheme.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_i): Pass either "msgid" or
+ "msgid_plural" as pretty_msgid argument.
+
+2009-05-23 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (libgettextsrc_la_LINK, msgattrib_LINK, msgcat_LINK,
+ msgcomm_LINK, msgconv_LINK, msgen_LINK, msgfilter_LINK, msggrep_LINK,
+ msgmerge_LINK, msguniq_LINK, xgettext_LINK): Add $(AM_V_lt) flag.
+
+2009-05-16 Bruno Haible <bruno@clisp.org>
+
+ Extract comments meant for translators from Glade input files.
+ * xgettext.h (remember_a_message): Add 'extracted_comment' argument.
+ * xgettext.c (remember_a_message): Likewise.
+ (arglist_parser_done): Update.
+ * x-glade.c (struct element_state): Add field 'extracted_comment'.
+ (start_element_handler): Fill it.
+ (end_element_handler): Pass it to 'remember_a_message', free it.
+ * x-awk.c (extract_parenthesized): Update.
+ * x-c.c (extract_parenthesized): Update.
+ * x-csharp.c (extract_parenthesized): Update.
+ * x-elisp.c (read_object): Update.
+ * x-java.c (extract_parenthesized): Update.
+ * x-librep.c (read_object): Update.
+ * x-lisp.c (read_object): Update.
+ * x-perl.c (extract_variable, interpolate_keywords, extract_balanced):
+ Update.
+ * x-php.c (extract_balanced): Update.
+ * x-python.c (extract_balanced): Update.
+ * x-rst.c (extract_rst): Update.
+ * x-scheme.c (read_object): Update.
+ * x-sh.c (read_word, read_command): Update.
+ * x-smalltalk.c (extract_smalltalk): Update.
+ * x-tcl.c (read_command): Update.
+ * x-ycp.c (extract_parenthesized): Update.
+ Reported by <sandro.bonazzola@gmail.com>
+ at <https://savannah.gnu.org/bugs/?26570>.
+
+2009-03-29 Bruno Haible <bruno@clisp.org>
+
+ * message.h (format_type): New enum value 'format_gfc_internal'.
+ (NFORMATS): Increment.
+ * message.c (format_language): Add format_gfc_internal entry.
+ (format_language_pretty): Likewise.
+ * format.h (formatstring_gfc_internal): New declaration.
+ * format-gfc-internal.c: New file.
+ * format.c (formatstring_parsers): Add formatstring_gfc_internal.
+ * x-c.h (SCANNERS_C): In language GCC-source, also keep track of
+ gfc-internal-format format strings.
+ * x-c.c (init_flag_table_gcc_internal): Also register flags for
+ gfc-internal-format.
+ * xgettext.c (xgettext_record_flag): Store gfc-internal-format flags in
+ flag_table_gcc_internal.
+ * Makefile.am (FORMAT_SOURCE): Add format-gfc-internal.c.
+ * FILES: Update.
+ Reported by Göran Uddeborg <goeran@uddeborg.se>.
+
+2009-01-27 Bruno Haible <bruno@clisp.org>
+
+ * message.h (format_type): New enum value 'format_qt_plural'.
+ (NFORMATS): Increment.
+ * message.c (format_language): Add format_qt_plural entry.
+ (format_language_pretty): Likewise.
+ * format.h (formatstring_qt_plural): New declaration.
+ * format-qt-plural.c: New file.
+ * format.c (formatstring_parsers): Add formatstring_qt_plural.
+ * xgettext.h (struct flag_context_ty): Add fields is_format3,
+ pass_format3.
+ * xgettext.c (struct extractor_ty): Add field formatstring_parser3.
+ (inherited_context, flag_context_list_table_insert): Handle the new
+ flag_context_ty fields.
+ (xgettext_record_flag): Handle format_qt_plural.
+ (current_formatstring_parser3): New variable.
+ (extract_from_file): Initialize it.
+ (set_format_flags_from_context): Handle the new flag_context_ty fields.
+ (remember_a_message, remember_a_message_plural): Handle
+ current_formatstring_parser3. Avoid adding a c-format flag to a message
+ already flagged as qt-plural-format.
+ (arglist_parser_remember): Allow argnum1 and argnum2 in the call shape
+ to be the same.
+ (arglist_parser_done): Add special recognition of qt-plural-format
+ strings.
+ (language_to_extractor): Set the formatstring_parser3 in the result.
+ * Makefile.am (FORMAT_SOURCE): Add format-qt-plural.c.
+ * FILES: Update.
+
+2009-01-27 Bruno Haible <bruno@clisp.org>
+
+ * plural-table.c (plural_table): Put Turkish under nplurals=2.
+ Reported by Sertaç Ö. Yıldız <sertacyildiz@gmail.com>.
+
+2009-01-26 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.
+ * urlget.c (main): Likewise.
+
+2009-01-25 Bruno Haible <bruno@clisp.org>
+
+ Fix bug introduced on 2005-10-01.
+ * msgl-charset.c (compare_po_locale_charsets): Fix recognition of
+ header entry.
+
+2009-01-25 Bruno Haible <bruno@clisp.org>
+
+ Fix bug introduced on 2008-10-04.
+ * read-catalog-abstract.c (po_parse_comment_special): Initialize
+ *rangep.
+ Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
+
+2009-01-18 Bruno Haible <bruno@clisp.org>
+
+ * msgfmt.c: Include str-list.h.
+ (main): When --statistics and --verbose are both specified, output the
+ input file name in front of the statistics line.
+ Suggested by Vincent Lefevre <vincent@vinc17.org>.
+
+2009-01-18 Bruno Haible <bruno@clisp.org>
+
+ Allow multiple levels of verbosity in 'msgfmt'.
+ * msgfmt.h (verbose): Change from 'bool' to 'int'.
+ * msgfmt.c (verbose): Likewise.
+ (main): Increment 'verbose' for each --verbose option.
+ * write-java.c (msgdomain_write_java): Update.
+ * write-csharp.c (msgdomain_write_csharp): Update.
+ * write-resources.c (msgdomain_write_csharp_resources): Update.
+
+2009-01-18 Bruno Haible <bruno@clisp.org>
+
+ * str-list.h (string_list_join): Change the separator argument,
+ allowing an entire separator string.
+ * str-list.c (string_list_join): Likewise.
+
+2009-01-18 Bruno Haible <bruno@clisp.org>
+
+ Fix a '(null)' in an error message. Bug present since gettext-0.16.
+ * read-catalog.h (DEFAULT_CATALOG_READER_TY): Add a file_name field.
+ * read-catalog.c (read_catalog_stream): Initialize it.
+ * x-po.c (extract): Likewise.
+ * msgfmt.c (read_catalog_file_msgfmt): Likewise.
+ (msgfmt_parse_debrief): Use the file_name field from the catalog reader
+ instead of gram_pos.file_name.
+
+2009-01-17 Bruno Haible <bruno@clisp.org>
+
+ Update after gnulib changed.
+ * Makefile.am (RELOCATABLE_STRIP): New variable.
+
+2008-12-07 Bruno Haible <bruno@clisp.org>
+
+ * write-po.c (message_print_comment_filepos): Use a 'const' pointer
+ where possible.
+ * write-stringtable.c (write_message): Likewise.
+
+2008-12-07 Bruno Haible <bruno@clisp.org>
+
+ Avoid gcc -Wredundant-decls warnings.
+ * x-awk.c: Don't include the specification header file twice.
+ * x-c.c: Likewise.
+ * x-csharp.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-scheme.c: Likewise.
+ * x-sh.c: Likewise.
+ * x-smalltalk.c: Likewise.
+ * x-tcl.c: Likewise.
+ * x-ycp.c: Likewise.
+
+2008-11-14 Bruno Haible <bruno@clisp.org>
+
+ * msgfilter.c: Include xvasprintf.h, xsetenv.h.
+ (process_message): Set the environment variables MSGFILTER_MSGCTXT,
+ MSGFILTER_MSGID, MSGFILTER_LOCATION.
+
+2008-10-28 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c (match_domain): Remove space between '#' and 'pragma' for
+ OpenMP.
+ Reported by Lamarque Eric <eric.lamarque@free.fr>.
+
+2008-10-04 Bruno Haible <bruno@clisp.org>
+
+ * plural-distrib.h (struct plural_distribution): New field 'histogram'.
+ * format.h (check_msgid_msgstr_format_i, check_msgid_msgstr_format):
+ Add range argument.
+ * format.c (check_msgid_msgstr_format_i): Add range argument. Set
+ strict_checking to false if, due to the range, the plural forms applies
+ to only one value of n.
+ (check_msgid_msgstr_format): Add range argument.
+ * msgl-check.c (plural_expression_histogram): New function.
+ (check_plural_eval, check_plural): Update.
+ (check_pair): Pass the range to check_msgid_msgstr_format.
+ (check_message_list): Update.
+ * msgmerge.c (message_merge): Pass the range to
+ check_msgid_msgstr_format_i.
+ Reported by Anatoly Techtonik <techtonik@gmail.com>
+ via <https://savannah.gnu.org/bugs/?24433>.
+
+2008-10-04 Bruno Haible <bruno@clisp.org>
+
+ * message.h (struct argument_range): New type.
+ (has_range_p): New macro.
+ (struct message_ty): Add field 'range'.
+ * message.c (message_alloc): Initialize the 'range' field.
+ (message_copy): Copy the 'range' field.
+ * read-catalog-abstract.h (po_parse_comment_special): Add 'rangep'
+ argument.
+ * read-catalog-abstract.c: Include <limits.h>.
+ (po_parse_comment_special): Add 'rangep' argument. Parse the range
+ description syntax.
+ * read-catalog.h (DEFAULT_CATALOG_READER_TY): Add 'range' field.
+ * read-catalog.c (default_constructor): Initialize the 'range' field.
+ (default_copy_comment_state): Copy the 'range' field into the new
+ message.
+ (default_reset_comment_state): Clear the 'range' field.
+ (default_comment_special): Update.
+ * write-po.h (make_range_description_string): New declaration.
+ * write-po.c (make_range_description_string): New function.
+ (message_print_comment_flags): Also print the range.
+ * write-stringtable.c (write_message): Likewise.
+ * msgl-cat.c: Include <limits.h>.
+ (catenate_msgdomain_list): Fill in the range of the resulting messages.
+ * msgl-equal.c (message_equal): Compare also the ranges.
+ * msgmerge.c (message_merge): Fill in the range of the resulting
+ message. Set it fuzzy if a range was introduced or extended.
+ * xgettext.c (remember_a_message): Set the range of the new message.
+
+2008-10-03 Bruno Haible <bruno@clisp.org>
+
+ * plural-distrib.h: New file.
+ * format.h: Include plural-distrib.h.
+ (check_msgid_msgstr_format_i, check_msgid_msgstr_format): Replace
+ plural_distribution, plural_distribution_length arguments with a single
+ distribution argument.
+ * format.c (check_msgid_msgstr_format_i, check_msgid_msgstr_format):
+ Likewise.
+ * msgl-check.h: Include plural-distrib.h.
+ (check_plural_eval, check_message): Replace plural_distribution,
+ plural_distribution_length arguments with a single distribution
+ argument.
+ * msgl-check.c (check_plural_eval): Likewise. Free array in case of
+ error.
+ (check_plural): Replace plural_distribution, plural_distribution_length
+ arguments with a single distribution argument. Don't store a
+ distribution result when there are errors.
+ (check_pair, check_message): Replace plural_distribution,
+ plural_distribution_length arguments with a single distribution
+ argument.
+ (check_message_list): Update.
+ * msgmerge.c (message_merge: Replace plural_distribution,
+ plural_distribution_length arguments with a single distribution
+ argument.
+ (match_domain): Update.
+ * Makefile.am (noinst_HEADERS): Add plural-distrib.h.
+ * FILES: Mention plural-distrib.h.
+
+2008-09-28 Bruno Haible <bruno@clisp.org>
+
+ * write-catalog.c (msgdomain_list_print): Open the output stream in
+ binary mode, for consistency with the term_styled_ostream or fd_stream
+ based case.
+
+2008-09-28 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (msg*_DEPENDENCIES, xgettext_DEPENDENCIES,
+ recode_sr_latin_DEPENDENCIES): Add $(WOE32_LDADD).
+
+2008-09-28 Bruno Haible <bruno@clisp.org>
+
+ * msgexec.c (process_string): Don't die from SIGPIPE if the subprocess
+ does not want our input.
+ Reported by Rainer Tammer <tammer@tammer.net>.
+
+2008-09-28 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (msgcmp_LDADD): Add MSGMERGE_LIBM.
+ Reported by Rainer Tammer <tammer@tammer.net>.
+
+2008-09-27 Bruno Haible <bruno@clisp.org>
+
+ * lang-table.c (language_table): Add Asturian, Crimean Tatar, Friulian,
+ Papiamento.
+ * msginit.c (catalogname_for_locale): Add Asturian, Friulian,
+ Papiamento.
+
+2008-09-26 Bruno Haible <bruno@clisp.org>
+
+ * write-catalog.c (cmp_by_msgid, cmp_by_filepos): Compare the msgctxt
+ fields if the msgid fields are the same.
+ Reported by Rainer Tammer <tammer@tammer.net>.
+
+2008-09-15 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (msg*_DEPENDENCIES, xgettext_DEPENDENCIES,
+ recode_sr_latin_DEPENDENCIES): New variables.
+
+2008-09-15 Bruno Haible <bruno@clisp.org>
+
+ * msgl-fsearch.h: Include stdbool.h.
+ (message_fuzzy_index_search): Add 'heuristic' argument.
+ * msgl-fsearch.c (message_fuzzy_index_search): Likewise. If !heuristic,
+ consider all messages.
+ * msgmerge.c (struct definitions_ty): Add fields 'curr_findex',
+ 'curr_findex_init_lock'.
+ (definitions_init): Initialize them.
+ (definitions_set_current_list): Clear the previous curr_findex.
+ (definitions_init_curr_findex): New function.
+ (definitions_search_fuzzy): Do fuzzy matching by calling
+ message_fuzzy_index_search on a hashed index, rather than through
+ message_list_search_fuzzy.
+ (definitions_destroy): Update.
+ (merge): Determine the definitions' canonical encoding.
+ * msgcmp.c: Include xmalloca.h, po-charset.h, msgl-fsearch.h.
+ (match_domain): Add defmlp_findex, def_canon_charset arguments. Do
+ fuzzy matching by calling message_fuzzy_index_search on a hashed
+ index, rather than through message_list_search_fuzzy.
+ (compare): Determine the definitions' canonical encoding. Prepare room
+ for a lazily allocated hashed index.
+ * Makefile.am (msgcmp_SOURCES): Add msgl-fsearch.c.
+
+2008-09-15 Bruno Haible <bruno@clisp.org>
+
+ * msgcmp.c (use_fuzzy_matching): New variable.
+ (long_options): Add option -N/--no-fuzzy-matching.
+ (main, match_domain): Implement it.
+ (usage): Document it.
+
+2008-09-14 Bruno Haible <bruno@clisp.org>
+
+ * msgl-fsearch.h (message_fuzzy_index_search): Add 'lower_bound'
+ argument.
+ * msgl-fsearch.c (message_fuzzy_index_search): Likewise.
+ * msgmerge.c (definitions_search_fuzzy): Use the result of the fuzzy
+ search in the current list as a lower bound for the fuzzy search in the
+ compendiums.
+
+2008-09-14 Bruno Haible <bruno@clisp.org>
+
+ * message.h (message_list_search_fuzzy, FUZZY_THRESHOLD): Clarify
+ documentation.
+
+ * msgmerge.c (struct definitions_ty): Rename field 'findex' to
+ 'comp_findex', and 'findex_init_lock' to 'comp_findex_init_lock'.
+ (definitions_init): Update.
+ (definitions_init_comp_findex): Renamed from definitions_init_findex.
+ Update.
+ (definitions_search_fuzzy, definitions_destroy): Update.
+
+ * msgmerge.c (definitions_current_list, definitions_set_current_list):
+ Move functions.
+
+2008-09-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+ Bruno Haible <bruno@clisp.org>
+
+ * message.h (fuzzy_search_goal_function): Add 'lower_bound' argument.
+ * message.c (fuzzy_search_goal_function): Likewise. Use fstrcmp_bounded
+ instead of fstrcmp.
+ (message_list_search_fuzzy_inner): Pass fuzzy_search_goal_function the
+ best weight known so far, to shortcut computations.
+ * msgl-fsearch.c (message_fuzzy_index_search): Likewise.
+ * msgmerge.c (definitions_search_fuzzy): Update
+ fuzzy_search_goal_function calls.
+
+2008-09-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+ Bruno Haible <bruno@clisp.org>
+
+ * xgettext.c: Include concat-filename.h.
+ (main, xgettext_open): Use xconcatenated_filename instead of
+ concatenated_filename.
+
+2008-09-01 Bruno Haible <bruno@clisp.org>
+
+ * color.c: Include concat-filename.h.
+ (style_file_lookup, style_file_prepare): Use xconcatenated_filename
+ instead of concatenated_filename.
+ * msginit.c: Include concat-filename.h instead of filename.h.
+ (project_id, project_id_version): Use xconcatenated_filename instead of
+ concatenated_filename.
+ * open-catalog.c: Include concat-filename.h.
+ (try_open_catalog_file): Use xconcatenated_filename instead of
+ concatenated_filename.
+ * read-csharp.c: Include concat-filename.h instead of filename.h.
+ (msgdomain_read_csharp): Use xconcatenated_filename instead of
+ concatenated_filename.
+ * read-resources.c: Include concat-filename.h instead of filename.h.
+ (read_resources_file): Use xconcatenated_filename instead of
+ concatenated_filename.
+ * read-tcl.c: Include concat-filename.h instead of filename.h.
+ (msgdomain_read_tcl): Use xconcatenated_filename instead of
+ concatenated_filename.
+ * write-resources.c: Include concat-filename.h instead of filename.h.
+ (msgdomain_write_csharp_resources): Use xconcatenated_filename instead of
+ concatenated_filename.
+ * write-csharp.c: Include concat-filename.h instead of filename.h.
+ (msgdomain_write_csharp): Use xconcatenated_filename instead of
+ concatenated_filename.
+ * write-java.c: Include concat-filename.h instead of filename.h.
+ (msgdomain_write_java): Use xconcatenated_filename instead of
+ concatenated_filename.
+ * write-tcl.c: Include concat-filename.h instead of filename.h.
+ (msgdomain_write_tcl: Use xconcatenated_filename instead of
+ concatenated_filename.
+
+2008-08-31 Bruno Haible <bruno@clisp.org>
+
+ * msgexec.c: Include <signal.h>.
+ (main): Block SIGPIPE for the duration of the processing.
+
+2008-08-23 Bruno Haible <bruno@clisp.org>
+
+ Fix behaviour of "msgmerge --update" when sorting is requested and
+ obsolete messages are present.
+ * write-catalog.h (struct catalog_output_format): New field
+ 'sorts_obsoletes_to_end'.
+ * write-po.c (output_format_po): Initialize it to true.
+ * write-properties.c (output_format_properties): Initialize it to false.
+ * write-stringtable.c (output_format_stringtable): Likewise.
+ * msgmerge.c (msgdomain_list_stablesort_by_obsolete): New function.
+ (main): Before testing whether the result is the same as the old
+ contents, sort the result using msgdomain_list_stablesort_by_obsolete.
+ Reported by Vincent Danjean <vdanjean.abo@free.fr>
+ via <http://savannah.gnu.org/bugs/?24123>.
+
+2008-08-16 Bruno Haible <bruno@clisp.org>
+
+ * x-python.c (enum token_type_ty): New values token_type_lbracket,
+ token_type_rbracket.
+ (phase5_get): Recognize also token_type_lbracket, token_type_rbracket.
+ (extract_balanced): Renamed from extract_parenthesized. Add 'delim'
+ argument. Handle token_type_lbracket and token_type_rbracket.
+ (extract_python): Update.
+ Reported by Claude Paroz <claude@2xlibre.net>
+ via <http://savannah.gnu.org/bugs/?23824>.
+
+2008-08-16 Bruno Haible <bruno@clisp.org>
+
+ * x-php.c (extract_balanced): Fix small bug in 2007-03-17 commit.
+
+2008-08-15 Bruno Haible <bruno@clisp.org>
+
+ * format-python.c (format_parse): For %.0s and %.0r, set the type to
+ FORMAT_ANY.
+ (format_check): When strict equality is not desired, compare FORMAT_ANY
+ as matching any type.
+ Reported by Alexander Dupuy <alex.dupuy@mac.com> in
+ <http://savannah.gnu.org/bugs/?24025>.
+
+2008-08-14 Bruno Haible <bruno@clisp.org>
+
+ * format-python.c (format_parse): For '%', set the type to FAT_NONE.
+
+2008-08-14 Bruno Haible <bruno@clisp.org>
+
+ * format-python.c (format_check): Require the same number of unnamed
+ arguments also when !equality.
+ Reported by Alexander Dupuy <alex.dupuy@mac.com> in
+ <http://savannah.gnu.org/bugs/?24025>.
+
+2008-08-14 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c: Include "glthread/lock.h" instead of "lock.h".
+
+2008-08-03 Bruno Haible <bruno@clisp.org>
+
+ * x-python.c (mixed_string_buffer_append): Replace a lone high
+ surrogate with U+FFFD.
+ Reported by Yann <asterix@lagaule.org>
+ via Santiago Vila <sanvila@unex.es>.
+
+2008-07-19 Bruno Haible <bruno@clisp.org>
+
+ * gnu/gettext/GetURL.java: Don't output anything to standard error.
+ Instead, set exit code to indicate failure reason.
+ * urlget.c (verbose): New variable.
+ (long_options): Add --quiet, --silent option.
+ (main): Implement --quiet, --silent option.
+ (usage): Document --quiet, --silent option.
+ (java_exitcode): New variable.
+ (execute_it): Set it. Return false also when the exit code is 2.
+ (fetch): Implement verbosity to standard error here.
+ Reported by 宋浩 <baritono.tux@gmail.com>.
+
+2008-06-10 Bruno Haible <bruno@clisp.org>
+
+ * msgexec.c (process_string): Update for changed signature of
+ wait_subprocess().
+ * msgfilter.c (generic_filter): Likewise.
+ * msginit.c (project_id, project_id_version, get_user_email,
+ language_team_address): Likewise.
+ * read-csharp.c (execute_and_read_po_output): Likewise.
+ * read-java.c (execute_and_read_po_output): Likewise.
+ * read-resources.c (execute_and_read_po_output): Likewise.
+ * read-tcl.c (msgdomain_read_tcl): Likewise.
+ * write-resources.c (execute_writing_input): Likewise.
+ * urlget.c (execute_it, fetch): Update for changed signature of
+ execute().
+
+2008-05-26 Bruno Haible <bruno@clisp.org>
+
+ * msginit.c (get_field, put_field): Recognize a field also if there is
+ no space after the ':'.
+ Reported by Nacho <nacho.resa@gmail.com>.
+
+2008-05-16 Bruno Haible <bruno@clisp.org>
+
+ * msgl-iconv.c (iconvable_prev_msgid): Fix typo.
+ Reported by Karl Eichwalder <ke@novell.com>
+ via Philipp Thomas <pth@novell.com>
+ at <https://bugzilla.novell.com/show_bug.cgi?id=391372>.
+
+2008-05-10 Bruno Haible <bruno@clisp.org>
+
+ * write-po.c: Include unilbrk.h instead of linebreak.h.
+ (wrap): Update.
+ * po-lex.c: Don't include linebreak.h.
+
+2008-04-25 Bruno Haible <bruno@clisp.org>
+
+ * lang-table.c (language_table): Add Beja. Remove Adangme, Banda,
+ Batak. Update Scottish Gaelic, Central Khmer, Romansh.
+ * msginit.c (catalogname_for_locale: Add Beja. Remove Banda, Batak.
+ Update Scottish Gaelic, Central Khmer, Romansh.
+
+2008-04-20 Bruno Haible <bruno@clisp.org>
+
+ Improve error message.
+ * xgettext.h (lexical_context_ty): New type.
+ (non_ascii_error_message): New declaration.
+ (from_current_source_encoding): Add lcontext argument.
+ * xgettext.c (non_ascii_error_message): New function.
+ (from_current_source_encoding): Add lcontext argument. Use
+ non_ascii_error_message.
+ (CONVERT_STRING): Add lcontext argument.
+ (remember_a_message, remember_a_message_plural): Update.
+ * x-csharp.c (lexical_context): New variable.
+ (phase2_getc): Use non_ascii_error_message.
+ (comment_start, comment_line_end, phase6_get): Set lexical_context.
+ (extract_csharp): Initialize lexical_context.
+ * x-java.c (struct string_buffer): Add lcontext field.
+ (init_string_buffer): Add lcontext argument.
+ (string_buffer_flush_curr_buffer): Update from_current_source_encoding
+ call.
+ (comment_start): Set lcontext.
+ (phase5_get): Pass lcontext argument.
+ * x-perl.c (get_here_document, phase2_getc,
+ extract_quotelike_pass1_utf8): Pass lcontext argument.
+ * x-python.c (lexical_context): New variable.
+ (phase2_getc): Use non_ascii_error_message.
+ (comment_start, comment_line_end, phase6_get): Set lexical_context.
+ (struct mixed_string_buffer): Add lcontext field.
+ (init_mixed_string_buffer): Add lcontext argument.
+ (mixed_string_buffer_flush_curr_buffer): Update
+ from_current_source_encoding call.
+ (phase5_get): Set lexical_context. Pass lcontext argument.
+ (extract_python): Initialize lexical_context.
+ Reported by Mark Weyer.
+
+2008-04-20 Bruno Haible <bruno@clisp.org>
+
+ * xgettext.c (usage): Clarify single-letter options that take an
+ optional argument: -c, -k, -m, -M.
+
+2008-04-16 Bruno Haible <bruno@clisp.org>
+
+ * msginit.c (catalogname_for_locale): Add entries for Maori, Uighur.
+
+2008-02-20 Jakub Jelinek <jakub@redhat.com>
+ Bruno Haible <bruno@clisp.org>
+
+ * format-gcc-internal.c: Update for GCC 4.3.
+ (FAT_TREE_STATEMENT): New enum item.
+ (format_parse): Recognize %K.
+ (format_print): Update.
+
+2008-02-04 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c (match_domain): Remove the prev_msgid fields also from
+ the untranslated messages.
+ Reported by Yukiko Bando <ybando@k6.dion.ne.jp> via
+ Chusslove Illich (Часлав Илић) <caslav.ilic@gmx.net>.
+
+2008-02-04 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c (message_merge): Store the prev_msgid field also if the
+ resulting message is not fuzzy: it might be marked as fuzzy later.
+ (match_domain): Remove the prev_msgid fields from the non-fuzzy
+ messages.
+
+2008-01-29 Bruno Haible <bruno@clisp.org>
+
+ * write-po.c (wrap): Change the severity of the "should not contain
+ escape sequence" message from PO_SEVERITY_ERROR to PO_SEVERITY_WARNING.
+ Reported by Kerb <ykerb2@free.fr>.
+
+2008-01-13 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (noinst_headers): Add msgl-header.h.
+
+2007-12-24 Bruno Haible <bruno@clisp.org>
+
+ Introduce 'Language' header field.
+ * xgettext.c (construct_header): Add an empty 'Language' field.
+ * msginit.c (language_value): New function.
+ (fields): Add 'Language'.
+ * msgmerge.c: Include lang-table.h.
+ (catalogname): New variable.
+ (long_options): Add --lang option.
+ (main): Handle --lang option.
+ (usage): Document --lang option.
+ (message_merge): Set the 'Language' field if --lang was specified or
+ if it is missing and can be inferred from the 'Language-Team' field.
+ * msgl-header.h: New file.
+ * msgl-header.c: New file.
+ * msgcat.c: Include msgl-header.h.
+ (long_options): Add --lang option.
+ (main): Handle --lang option.
+ (usage): Document --lang option.
+ * msgen.c: Include msgl-header.h.
+ (long_options): Add --lang option.
+ (main): Handle --lang option.
+ (usage): Document --lang option.
+ * msgl-check.c (plural_help): Look at the 'Language' field before
+ looking at the 'Language-Team' field.
+ (check_header_entry): Fix comparison with default value. When the
+ 'Language' field is missing, signal a warning.
+ * Makefile.am (libgettextsrc_la_SOURCES): Add msgl-header.c.
+ (msgmerge_SOURCES): Add lang-table.c.
+ * FILES: Update.
+
+2007-12-22 Bruno Haible <bruno@clisp.org>
+
+ * write-po.c (wrap): Avoid breaking line in the middle of a format
+ directive.
+ Reported by Dwayne Bailey <dwayne@translate.org.za>.
+
+2007-11-07 Jim Meyering <meyering@redhat.com>
+ Bruno Haible <bruno@clisp.org>
+
+ * write-catalog.c (msgdomain_list_print): Fix open() call.
+
+2007-11-07 Bruno Haible <bruno@clisp.org>
+
+ * gettext-0.17 released.
+
+2007-10-28 Bruno Haible <bruno@clisp.org>
+
+ * color.c (style_file_lookup): New function.
+ (style_file_prepare): Use it.
+
+2007-10-21 Bruno Haible <bruno@clisp.org>
+
+ Normalize the leading space of every comment line during input, not
+ during output.
+ * read-catalog-abstract.c (po_callback_comment_dispatcher): Before
+ calling po_callback_comment or po_callback_comment_dot, drop the
+ leading space.
+ * write-po.c (message_print_comment, message_print_comment_dot): Don't
+ remove the leading space of every comment line.
+ * write-stringtable.c (write_message): Likewise.
+ Suggested by Dwayne Bailey <dwayne@translate.org.za>.
+
+2007-10-20 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c (message_merge): Set the fuzzy flag if the msgid_plural
+ changed.
+ Suggested by Chusslove Illich (Часлав Илић) <caslav.ilic@gmx.net>.
+
+2007-10-20 Bruno Haible <bruno@clisp.org>
+
+ Make msgmerge's introduction of fuzzy markers more consistent with
+ msgfmt's --check-format.
+ * format.h (check_msgid_msgstr_format_i): New declaration.
+ * format.c (check_msgid_msgstr_format_i): New function, extracted from
+ check_msgid_msgstr_format.
+ (check_msgid_msgstr_format): Use it.
+ * msgl-check.h: Include plural-eval.h.
+ (check_plural_eval): New declaration.
+ * msgl-check.c (check_plural_eval): Add const to first parameter. Make
+ non-static.
+ (check_plural): Update.
+ * msgmerge.c: Include plural-exp.h, msgl-check.h, po-xerror.h.
+ (msgfmt_check_pair_fails): Remove function.
+ (silent_error_logger, silent_xerror): New functions.
+ (message_merge): Add plural_distribution, plural_distribution_length
+ arguments. Call check_msgid_msgstr_format_i instead of
+ msgfmt_check_pair_fails.
+ (match_domain): Extract not only the plural count, but also the
+ plural expression from the header entry. Determine the plural
+ distribution from it. Pass it to message_merge.
+ Reported by Chusslove Illich (Часлав Илић) <caslav.ilic@gmx.net>.
+
+2007-10-20 Bruno Haible <bruno@clisp.org>
+
+ * msgl-check.c (check_plural): If there is no header entry, or if the
+ header entry does not contain plural= and nplurals=, return a plural
+ distribution corresponding to the Germanic plural.
+
+2007-10-20 Bruno Haible <bruno@clisp.org>
+
+ * format.h (check_msgid_msgstr_format): Add plural_distribution_length
+ argument.
+ * format.c (check_msgid_msgstr_format): Likewise.
+ * msgl-check.h (check_message): Likewise.
+ * msgl-check.c (check_plural_eval, check_plural, check_pair,
+ check_message): Likewise.
+ (check_message_list): Update.
+
+2007-10-18 Bruno Haible <bruno@clisp.org>
+
+ * plural-count.c (get_plural_count): Adapt to changed prototype of
+ extract_plural_expression.
+ * write-csharp.c (write_csharp_expression): Add const to parameter.
+ (write_csharp_code): Adapt to changed prototype of
+ extract_plural_expression.
+ * write-java.c (write_java_expression): Add const to parameter.
+ (write_java_code): Adapt to changed prototype of
+ extract_plural_expression.
+
+2007-10-07 Bruno Haible <bruno@clisp.org>
+
+ * hostname.c (main): In the --version output, say GPLv3+.
+ * msgattrib.c (main): Likewise.
+ * 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.
+ * recode-sr-latin.c (main): Likewise.
+ * urlget.c (main): Likewise.
+ * xgettext.c (main): Likewise.
+
+2007-09-30 Bruno Haible <bruno@clisp.org>
+
+ * xgettext.c (package_name, package_version): New variables.
+ (long_options): Add --package-name, --package-version.
+ (main): Handle options --package-name, --package-version.
+ (usage): Document them.
+ (construct_header): Use package_name if present.
+ * msginit.c (project_id_version): Take a header argument. Return the
+ old value if already present.
+ (fields): Update.
+
+2007-09-30 Bruno Haible <bruno@clisp.org>
+
+ * message.h (format_type): New enum value 'format_kde'.
+ (NFORMATS): Increment.
+ * message.c (format_language): Add format_kde entry.
+ (format_language_pretty): Likewise.
+ * format.h (formatstring_kde): New declaration.
+ * format-kde.c: New file.
+ * format.c (formatstring_parsers): Add formatstring_kde.
+ * x-c.c (init_flag_table_c): Also register flags for qt-format and
+ kde-format.
+ * xgettext.c (flag_table_cxx_kde): New variable.
+ (recognize_format_kde): New variable.
+ (main): Handle --kde option.
+ (usage): Document --kde option.
+ (xgettext_record_flag): Also fill flag_table_cxx_kde.
+ (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
+ kde-format.
+ (language_to_extractor): Use a flag_table_cxx_kde that is different
+ from flag_table_c.
+ * Makefile.am (FORMAT_SOURCE): Add format-kde.c.
+ * FILES: Update.
+
+2007-09-09 Bruno Haible <bruno@clisp.org>
+
+ Add support for Qt 4 format strings.
+ * format-qt.c (struct spec): Increase args_used field size to 100.
+ Add 'simple' field.
+ (format_parse): Update for Qt 4 syntax. Remove error message when the
+ same format argument is used more than once.
+ (format_check): Add check: If the msgid is simple, the msgstr must be
+ simple as well.
+ Reported by Chusslove Illich <caslav.ilic@gmx.net>.
+
+2007-09-02 Bruno Haible <bruno@clisp.org>
+
+ Correct handling of different libexpat ABIs.
+ * x-glade.c: Include <stdint.h>.
+ (p_XML_GetCurrentLineNumber, p_XML_GetCurrentColumnNumber): New
+ variables.
+ (is_XML_LARGE_SIZE_ABI, GetCurrentLineNumber, GetCurrentColumnNumber):
+ New functions.
+ (XML_GetCurrentLineNumber, XML_GetCurrentColumnNumber): Redefine.
+ (XML_Expat_Version, XML_FeatureEnum, XML_Feature): New types.
+ (p_XML_ExpatVersionInfo, p_XML_GetFeatureList): New variables.
+ (p_XML_GetCurrentLineNumber, p_XML_GetCurrentColumnNumber): Change
+ type to 'void *'.
+ (XML_ExpatVersionInfo, XML_GetFeatureList): New macros.
+ (XML_Size_ABI): New type.
+ (get_XML_Size_ABI): New function.
+ (XML_GetCurrentLineNumber, XML_GetCurrentColumnNumber): New functions.
+ (load_libexpat): Try both version 2 and version 1. Initialize
+ p_XML_ExpatVersionInfo, p_XML_GetFeatureList.
+
+2007-09-02 Bruno Haible <bruno@clisp.org>
+
+ Implement msgctxt for C# ResourceManagers.
+ * x-csharp.c (init_keywords): Also register GetParticularString and
+ GetParticularPluralString.
+ (init_flag_table_csharp): Update accordingly.
+ * write-csharp.c: Include xmalloca.h.
+ (write_csharp_msgid): New function.
+ (write_csharp_code): Use it instead of write_csharp_string.
+ (msgdomain_write_csharp): Remove error message if mlp has entries with
+ context.
+ * msgunfmt.cs (DumpResource.DumpMessage): Emit an msgctxt line
+ if the message contain the context separator.
+
+2007-09-01 Bruno Haible <bruno@clisp.org>
+
+ Implement msgctxt for Java ResourceBundles.
+ * x-java.c (init_keywords): Also register pgettext and npgettext.
+ (init_flag_table_java): Update accordingly.
+ * write-java.c (msgid_hashcode): New function.
+ (compute_hashsize, compute_table_items): Use it instead of
+ string_hashcode.
+ (write_java_msgid): New function.
+ (write_java_code): Use it instead of write_java_string.
+ (msgdomain_write_java): Remove error message if mlp has entries with
+ context.
+ * gnu/gettext/DumpResource.java (dumpMessage): Emit an msgctxt line
+ if the message contain the context separator.
+ Suggested by Felix Berger.
+
+2007-09-01 Bruno Haible <bruno@clisp.org>
+
+ * po-lex.c: Include uniwidth.h.
+
+2007-06-19 Bruno Haible <bruno@clisp.org>
+
+ * x-c.c (phase8_get): Call free_token, so that the reference to
+ tmp.comment gets dropped.
+
+2007-08-27 Bruno Haible <bruno@clisp.org>
+
+ * x-python.c (phase7_getuc): Interpret octal and hexadecimal escapes
+ as Unicode code points inside Unicode strings.
+ Reported and patch by Jakub Wilk <ubanus@users.sf.net>.
+
+2007-08-23 Bruno Haible <bruno@clisp.org>
+
+ * file-list.c: Don't include getline.h.
+ * format-awk.c: Likewise.
+ * format-boost.c: Likewise.
+ * format-c.c: Likewise.
+ * format-csharp.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-brace.c: Likewise.
+ * format-perl.c: Likewise.
+ * format-php.c: Likewise.
+ * format-python.c: Likewise.
+ * format-qt.c: Likewise.
+ * format-scheme.c: Likewise.
+ * format-sh.c: Likewise.
+ * format-tcl.c: Likewise.
+ * format-ycp.c: Likewise.
+ * msginit.c: Likewise.
+ * x-perl.c: Likewise.
+
+2007-08-18 Bruno Haible <bruno@clisp.org>
+
+ * write-csharp.c (msgdomain_write_csharp): Don't recommend to use
+ --verbose if it is already in use.
+ * write-java.c (msgdomain_write_java): Likewise.
+ Reported by Karsten Kousgaard <karsten@f-kousgaard.dk>.
+
+2007-07-07 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (AM_CPPFLAGS): Remove reference to libuniname directory.
+ (LIBUNINAME): Remove variable.
+ (xgettext_LDADD): Update.
+
+2007-07-04 Bruno Haible <bruno@clisp.org>
+
+ Recognize the PHP string concatenation operator.
+ * x-php.c (enum token_type_ty): New elements token_type_dot,
+ token_type_operator1, token_type_operator2.
+ (struct token_ty): Add comment field.
+ (free_token): Drop reference to comment field.
+ (phase4_pushback, phase4_pushback_length): New variables.
+ (phase4_get): Renamed from x_php_lex. Return last pushed-back token if
+ available. Recognize tokens '.', '+', '-', '*', '/', '%', '++', '--',
+ '!', '~', '@'. Fill in tp->comment.
+ (phase4_unget): New function.
+ (phase5_last): New variable.
+ (x_php_lex): New function.
+ (extract_balanced): Handle the new token types. Pass token's comment
+ to remember_a_message.
+ (extract_php): Initialize phase5_last.
+ Reported by Jan Engelhardt <jengelh@computergmbh.de>.
+
+2007-06-30 Bruno Haible <bruno@clisp.org>
+
+ * hostname.c (main): Use the standard --version output, see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2007-03/msg00302.html>.
+ * msgattrib.c (main): Likewise.
+ * 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.
+ * recode-sr-latin.c (main): Likewise.
+ * urlget.c (main): Likewise.
+ * xgettext.c (main): Likewise.
+
+2007-06-30 Bruno Haible <bruno@clisp.org>
+
+ * lang-table.c (language_table): Fix entry for Javanese.
+
+2007-06-28 Bruno Haible <bruno@clisp.org>
+
+ * format-gcc-internal.c (format_parse): Tweak an error message.
+ Reported by Karl Eichwalder.
+
+2007-06-28 Bruno Haible <bruno@clisp.org>
+
+ * lang-table.h (language_variant_table, language_variant_table_size):
+ New declarations.
+ * lang-table.c (language_variant_table, language_variant_table_size):
+ New variables.
+ * msginit.c (language_team_englishname): New function.
+ (language_team): Use it instead of englishname_of_language.
+ Reported by Li Daobing <lidaobing@gmail.com>.
+
+2007-06-25 Bruno Haible <bruno@clisp.org>
+
+ Change boundary of extracted comments.
+ * x-perl.c (struct token_ty): Add comment field.
+ (free_token): Release tp->comment.
+ (extract_quotelike): Fill in tp->comment.
+ (x_perl_prelex): Set or release tp->comment when constructing tokens.
+ (x_perl_lex): Likewise.
+ (extract_balanced): Pass token's comment to remember_a_message.
+
+2007-06-18 Bruno Haible <bruno@clisp.org>
+
+ Change boundary of extracted comments.
+ * x-ycp.c (struct token_ty): Add comment field.
+ (free_token): New function.
+ (phase5_get): Fill in tp->comment.
+ (phase8_get): Use free_token.
+ (extract_parenthesized): Pass token's comment to remember_a_message.
+ Use free_token.
+ Reported by Karl Eichwalder <ke@suse.de>.
+
+2007-06-09 Bruno Haible <bruno@clisp.org>
+
+ * format-java.c: Include xmalloca.h instead of xallocsa.h.
+ (message_format_parse): Use xmalloca/freea instead of xallocsa/freesa.
+ * message.c: Include xmalloca.h instead of xallocsa.h.
+ (message_list_hash_insert_entry, message_list_search): Use
+ xmalloca/freea instead of xallocsa/freesa.
+ * msggrep.c: Include xmalloca.h instead of xallocsa.h.
+ (is_message_selected_no_invert): Use xmalloca/freea instead of
+ xallocsa/freesa.
+ * msginit.c: Include xmalloca.h instead of xallocsa.h.
+ (subst_string): Use xmalloca/freea instead of xallocsa/freesa.
+ * msgl-cat.c: Include xmalloca.h instead of xallocsa.h.
+ (catenate_msgdomain_list): Use xmalloca/freea instead of
+ xallocsa/freesa.
+ * msgl-charset.c: Include xmalloca.h instead of xallocsa.h.
+ (compare_po_locale_charsets): Use xmalloca/freea instead of
+ xallocsa/freesa.
+ * msgl-iconv.c: Include xmalloca.h instead of xallocsa.h.
+ (iconv_message_list_internal, is_message_list_iconvable): Use
+ xmalloca/freea instead of xallocsa/freesa.
+ * msgmerge.c: Include xmalloca.h instead of xallocsa.h.
+ (merge): Use xmalloca/freea instead of xallocsa/freesa.
+ * po-charset.c: Include xmalloca.h instead of xallocsa.h.
+ (po_lex_charset_set): Use xmalloca/freea instead of xallocsa/freesa.
+ * read-tcl.c: Include xmalloca.h instead of xallocsa.h.
+ (msgdomain_read_tcl): Use xmalloca/freea instead of xallocsa/freesa.
+ * write-java.c: Include xmalloca.h instead of xallocsa.h.
+ (compute_hashsize, msgdomain_write_java): Use xmalloca/freea instead of
+ xallocsa/freesa.
+ * write-mo.c: Include xmalloca.h instead of xallocsa.h.
+ (write_table): Use xmalloca/freea instead of xallocsa/freesa.
+ * write-po.c: Include xmalloca.h instead of xallocsa.h.
+ (msgdomain_list_print_po): Use xmalloca/freea instead of
+ xallocsa/freesa.
+ * write-tcl.c: Include xmalloca.h instead of xallocsa.h.
+ (msgdomain_write_tcl): Use xmalloca/freea instead of xallocsa/freesa.
+ * xgettext.c: Include xmalloca.h instead of xallocsa.h.
+ (flag_context_list_table_insert): Use xmalloca/freea instead of
+ xallocsa/freesa.
+
+2007-06-08 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.
+ * recode-sr-latin.c (main): Likewise.
+ * hostname.c (main): Likewise.
+ * urlget.c (main): Likewise.
+
+2007-06-08 Bruno Haible <bruno@clisp.org>
+
+ * msginit.c: Include localename.h.
+ (_nl_locale_name): Remove declaration.
+ (main): Use gl_locale_name instead of _nl_locale_name.
+ * Makefile.am (msginit_LDADD): Remove localename object file.
+
+2007-05-28 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (WOE32_LDADD): New variable.
+ (LDADD, 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, msginit_LDADD, msguniq_LDADD, recode_sr_latin_LDADD):
+ Include it.
+ (gettext.res): New rule.
+ (MOSTLYCLEANFILES): Add gettext.res.
+
+2007-05-27 Bruno Haible <bruno@clisp.org>
+
+ Avoid link error; u16_mbtouc_aux is no longer a public API.
+ * x-java.c (string_buffer_append): Use u16_mbtouc instead of
+ u16_mbtouc_aux.
+ * x-python.c (mixed_string_buffer_append): Likewise.
+
+2007-05-13 Bruno Haible <bruno@clisp.org>
+
+ * write-java.c (mkdir): Remove definition. Now done by gnulib.
+ * write-csharp.c (mkdir): Remove definition. Now done by gnulib.
+
+2007-05-13 Bruno Haible <bruno@clisp.org>
+
+ * msgl-check.c: Include stdio.h instead of vasprintf.h.
+ * po-lex.c: Don't include vasprintf.h.
+
+2007-03-27 Bruno Haible <bruno@clisp.org>
+
+ * hostname.c (usage): Ask translators to specify a translation bug
+ report address.
+ * 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.
+ * recode-sr-latin.c (usage): Likewise.
+ * urlget.c (usage): Likewise.
+ * xgettext.c (usage): Likewise.
+
+2007-03-24 Bruno Haible <bruno@clisp.org>
+
+ * po-lex.c: Include unistr.h instead of utf8-ucs4.h.
+ * read-properties.c: Include unistr.h instead of utf16-ucs4.h,
+ ucs4-utf8.h.
+ * x-java.c: Likewise.
+ * read-stringtable.c: Include unistr.h instead of utf8-ucs4.h,
+ ucs4-utf8.h.
+ * x-csharp.c: Likewise.
+ * write-csharp.c: Include unistr.h instead of utf8-ucs4.h.
+ * write-java.c: Likewise.
+ * write-properties.c: Likewise.
+ * write-qt.c: Likewise.
+ * write-tcl.c: Likewise.
+ * x-perl.c: Likewise.
+ * x-python.c: Include unistr.h instead of utf8-ucs4.h, utf16-ucs4.h,
+ ucs4-utf8.h.
+ * x-tcl.c: Include unistr.h instead of ucs4-utf8.h.
+
+2007-03-17 Bruno Haible <bruno@clisp.org>
+
+ * x-php.c (enum token_type_ty): New values token_type_lbracket,
+ token_type_rbracket.
+ (x_php_lex): Recognize also token_type_lbracket, token_type_rbracket.
+ (extract_balanced): Renamed from extract_parenthesized. Add 'delim'
+ argument. Handle token_type_lbracket and token_type_rbracket.
+ (extract_php): Update.
+ Reported by Robert Vock <RobertVock@gmx.de>.
+
+2007-03-10 Bruno Haible <bruno@clisp.org>
+
+ * msginit.c (get_user_fullname): Reduce scope of local variables.
+
+2007-03-04 Bruno Haible <bruno@clisp.org>
+
+ Moved --enable-relocatable infrastructure to gnulib.
+ * Makefile.am: Remove SET_RELOCATABLE invocation.
+
+2007-02-25 Bruno Haible <bruno@clisp.org>
+
+ * color.c: Include filename.h instead of pathname.h.
+ (style_file_prepare): Update.
+ * msginit.c: Include filename.h instead of pathname.h.
+ (project_id, project_id_version): Update.
+ * open-catalog.c: Include filename.h instead of pathname.h.
+ (try_open_catalog_file): Update.
+ * read-csharp.c: Include filename.h instead of pathname.h.
+ (msgdomain_read_csharp): Update.
+ * read-resources.c: Include filename.h instead of pathname.h.
+ (read_resources_file): Update.
+ * read-tcl.c: Include filename.h instead of pathname.h.
+ (msgdomain_read_tcl): Update.
+ * write-csharp.c: Include filename.h instead of pathname.h.
+ (msgdomain_write_csharp): Update.
+ * write-java.c Include filename.h instead of pathname.h.
+ (msgdomain_write_java): Update.
+ * write-resources.c: Include filename.h instead of pathname.h.
+ (msgdomain_write_csharp_resources): Update.
+ * write-tcl.c: Include filename.h instead of pathname.h.
+ (msgdomain_write_tcl): Update.
+ * xgettext.c: Include filename.h instead of pathname.h.
+ (main, xgettext_open): Update.
+
+2007-02-19 Bruno Haible <bruno@clisp.org>
+
+ * file-list.c: Don't include exit.h.
+ * hostname.c: Likewise.
+ * 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.
+ * msgl-cat.c: Include <stdlib.h> instead of exit.h.
+ * msgl-charset.c: Likewise.
+ * msgl-check.c: Don't include exit.h.
+ * msgmerge.c: Likewise.
+ * msgunfmt.c: Likewise.
+ * msguniq.c: Likewise.
+ * po-lex.c: Likewise.
+ * po-xerror.c: Likewise.
+ * read-csharp.c: Likewise.
+ * read-java.c: Likewise.
+ * read-mo.c: Likewise.
+ * read-resources.c: Likewise.
+ * read-tcl.c: Likewise.
+ * recode-sr-latin.c: Likewise.
+ * urlget.c: Likewise.
+ * write-mo.c: Likewise.
+ * write-qt.c: Likewise.
+ * write-resources.c: Likewise.
+ * write-tcl.c: Include <stdlib.h> instead of exit.h.
+ * x-awk.c: Don't include exit.h.
+ * x-c.c: Likewise.
+ * x-csharp.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-python.c: Likewise.
+ * x-rst.c: Include <stdlib.h> instead of exit.h.
+ * x-scheme.c: Don't include exit.h.
+ * x-sh.c: Likewise.
+ * x-smalltalk.c: Likewise.
+ * x-tcl.c: Likewise.
+ * x-ycp.c: Likewise.
+ * xgettext.c: Likewise.
+
+2007-01-28 Bruno Haible <bruno@clisp.org>
+
+ * x-java.c (string_buffer_append_lone_surrogate): New function.
+ (string_buffer_flush_utf16_surr, string_buffer_append): Use it.
+
+2007-01-28 Bruno Haible <bruno@clisp.org>
+
+ * x-java.c (string_buffer_flush_utf16_surr): Give a warning when
+ converting a surrogate code point to U+FFFD.
+ (string_buffer_append): Convert a lone high surrogate code point to
+ U+FFFD, and give a warning.
+
+2007-01-26 Bruno Haible <bruno@clisp.org>
+
+ * msgfilter.c: Include <sys/time.h> unconditionally.
+
+2007-01-26 Bruno Haible <bruno@clisp.org>
+
+ * msginit.c: Don't include strpbrk.h, use <string.h> instead.
+
+2007-01-26 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c: Don't include stpncpy.h, use <string.h> instead.
+
+2007-01-26 Bruno Haible <bruno@clisp.org>
+
+ * msgfmt.c: Don't include stpcpy.h, use <string.h> instead.
+ * msgmerge.c: Likewise.
+
+2007-01-21 Bruno Haible <bruno@clisp.org>
+
+ * msgl-iconv.c (convert_string, convert_msgstr, iconvable_string,
+ iconvable_msgstr): Update for changed calling convention of
+ xmem_cd_iconv.
+ * recode-sr-latin.c (process): Likewise.
+
+2007-01-07 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c (message_merge): Copy the obsolete bit from the ref
+ message.
+ Reported by Leonardo Fontenelle <leo.fontenelle@gmail.com>.
+
+2006-12-24 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (AM_CXXFLAGS): New variable.
+
+2006-12-23 Bruno Haible <bruno@clisp.org>
+
+ * color.c (print_color_test): Print labels before the hue/saturation
+ rectangle. Show also a few lines that mix colors and attributes.
+
+2006-12-03 Bruno Haible <bruno@clisp.org>
+
+ * msgcat.c: Include color.h.
+ (long_options): Add --color, --style options.
+ (main): Handle them. Invoke print_color_test when --color=test was
+ given.
+ (usage): Document --color, --style options.
+
+2006-12-01 Bruno Haible <bruno@clisp.org>
+
+ Add styling support to the PO output routines.
+ * color.h: New file.
+ * color.c: New file.
+ * write-catalog.h (struct catalog_output_format): Add field
+ 'supports_color'.
+ * write-catalog.c: Include fcntl.h, unistd.h, styled-ostream.h,
+ term-styled-ostream.h, html-styled-ostream.h, fd-ostream.h, color.h,
+ po-charset.h, msgl-iconv.h.
+ (STDOUT_FILENO): New macro.
+ (ENABLE_COLOR): New macro.
+ (msgdomain_list_print): Use a styled_ostream_t that uses the
+ style_file_name.
+ * write-po.c: Include format.h, styled-ostream.h.
+ (is_stylable, begin_css_class, end_css_class): New functions or macros.
+ (class_header, class_translated, class_untranslated, class_fuzzy,
+ class_obsolete, class_comment, class_translator_comment,
+ class_extracted_comment, class_reference_comment, class_reference,
+ class_flag_comment, class_flag, class_fuzzy_flag,
+ class_previous_comment, class_previous, class_msgid, class_msgstr,
+ class_keyword, class_string, class_text, class_escape_sequence,
+ class_format_directive, class_invalid_format_directive): New variables.
+ (ATTR_ESCAPE_SEQUENCE, ATTR_FORMAT_DIRECTIVE,
+ ATTR_INVALID_FORMAT_DIRECTIVE): New enum items.
+ (message_print_comment, message_print_comment_dot,
+ message_print_comment_filepos, message_print_comment_flags): Call
+ begin/end_css_class.
+ (memset_small): New function.
+ (wrap): Add css_class argument. Determine the extent of format
+ string directives. Call begin/end_css_class.
+ (print_blank_line): Call begin/end_css_class.
+ (message_print, message_print_obsolete): Likewise. Pass a css_class
+ argument to 'wrap'.
+ (msgdomain_list_print_po): Call begin/end_css_class.
+ (output_format_po): Update.
+ * write-properties.c (output_format_properties): Update.
+ * write-stringtable.c (output_format_stringtable): Update.
+ * Makefile.am (noinst_HEADERS): Add color.h.
+ (libgettextsrc_la_SOURCES): Add color.c.
+
+2006-11-26 Bruno Haible <bruno@clisp.org>
+
+ * write-po.c (make_format_description_string,
+ make_c_width_description_string): Strip off the leading space.
+ (message_print_comment_flags): Print the space here.
+ * write-stringtable.c (write_message): Print the space here.
+
+2006-11-26 Bruno Haible <bruno@clisp.org>
+
+ * write-po.c: Include write-catalog.h instead of write-properties.h,
+ write-stringtable.h.
+
+2006-11-26 Bruno Haible <bruno@clisp.org>
+
+ * format.h (FMTDIR_START, FMTDIR_END, FMTDIR_ERROR): New enum values.
+ (FDI_SET): New macro.
+ (struct formatstring_parser): Add fdi argument to 'parse' method.
+ * format.c (check_msgid_msgstr_format): Update.
+ * format-awk.c (format_parse): Add fdi argument. Invoke FDI_SET.
+ * format-boost.c (format_parse): Likewise.
+ * format-c.c (format_parse): Add fdi argument. Invoke FDI_SET.
+ (format_c_parse, format_objc_parse): Add fdi argument.
+ (get_sysdep_c_format_directives): Update.
+ * format-csharp.c (format_parse): Add fdi argument. Invoke FDI_SET.
+ * format-elisp.c (format_parse): Likewise.
+ * format-gcc-internal.c (format_parse): Likewise.
+ * format-java.c (message_format_parse): Add fdi argument. Invoke
+ FDI_SET.
+ (choice_format_parse): Update.
+ (format_parse): Add fdi argument.
+ * format-librep.c (format_parse): Add fdi argument. Invoke FDI_SET.
+ * format-lisp.c (parse_upto): Add fdi argument. Invoke FDI_SET.
+ (format_parse): Add fdi argument.
+ * format-pascal.c (format_parse): Add fdi argument. Invoke FDI_SET.
+ * format-perl.c (format_parse): Likewise.
+ * format-perl-brace.c (format_parse): Likewise.
+ * format-php.c (format_parse): Likewise.
+ * format-python.c (format_parse): Add fdi argument. Invoke FDI_SET.
+ (get_python_format_unnamed_arg_count): Update.
+ * format-qt.c (format_parse): Add fdi argument. Invoke FDI_SET.
+ * format-scheme.c (parse_upto): Add fdi argument. Invoke FDI_SET.
+ (format_parse): Add fdi argument.
+ * format-sh.c (format_parse): Add fdi argument. Invoke FDI_SET.
+ * format-tcl.c (format_parse): Likewise.
+ * format-ycp.c (format_parse): Likewise.
+ * msgmerge.c (msgfmt_check_pair_fails): Update.
+ * read-mo.c (read_mo_file): Update.
+ * xgettext.c (set_format_flags_from_context, remember_a_message,
+ remember_a_message_plural): Update.
+
+2006-11-25 Bruno Haible <bruno@clisp.org>
+
+ * message.h (message_list_copy, msgdomain_list_copy): New declarations.
+ * message.c (message_list_copy, msgdomain_list_copy): New functions.
+
+2006-11-25 Bruno Haible <bruno@clisp.org>
+
+ * msgl-iconv.h (iconv_msgdomain_list): Add update_header argument.
+ * msgl-iconv.c (iconv_message_list_internal): Renamed from
+ iconv_msgdomain_list. Add update_header argument.
+ (iconv_message_list): New function.
+ (iconv_msgdomain_list): Add update_header argument.
+ * msgcmp.c (compare): Update iconv_msgdomain_list call.
+ * msgconv.c (main): Likewise.
+ * msgfilter.c (main): Likewise.
+ * msgmerge.c (merge): Likewise.
+ * xgettext.c (main): Likewise.
+
+2006-11-23 Bruno Haible <bruno@clisp.org>
+
+ * write-catalog.h: Include ostream.h. Don't include <stdio.h>.
+ (struct catalog_output_format): Use ostream_t instead of 'FILE *'.
+ * write-catalog.c: Include ostream.h, file-ostream.h.
+ (msgdomain_list_print): Open a temporary file_ostream_t.
+ * write-po.h: Include ostream.h. Don't include <stdio.h>.
+ (message_print_comment, message_print_comment_dot,
+ message_print_comment_filepos, message_print_comment_flags): Replace
+ 'FILE *' argument with an 'ostream_t' argument.
+ * write-po.c: Include ostream.h.
+ (message_print_comment, message_print_comment_dot,
+ message_print_comment_filepos, message_print_comment_flags, wrap,
+ print_blank_line, message_print, message_print_obsolete,
+ msgdomain_list_print_po): Replace 'FILE *' argument with an 'ostream_t'
+ argument.
+ * write-properties.c: Include ostream.h.
+ (write_escaped_string, write_message, write_properties,
+ msgdomain_list_print_properties): Replace 'FILE *' argument with an
+ 'ostream_t' argument.
+ * write-stringtable.c: Include ostream.h, xvasprintf.h. Don't include
+ <stdio.h>.
+ (write_escaped_string, write_message, write_stringtable,
+ msgdomain_list_print_stringtable): Replace 'FILE *' argument with an
+ 'ostream_t' argument.
+
+2006-11-12 Bruno Haible <bruno@clisp.org>
+
+ * write-po.c (wrap): Indent by use of spaces, not tabs.
+
+2006-11-03 Bruno Haible <bruno@clisp.org>
+
+ Simplify xmalloc expressions. Add overflow check in xmalloc arguments.
+ * filter-sr-latin.c (serbian_to_latin): Use XNMALLOC instead of xmalloc.
+ * format-awk.c (format_parse): Use XMALLOC instead of xmalloc.
+ * format-boost.c (format_parse): Likewise.
+ * format-c.c (format_parse): Use XMALLOC, XNMALLOC instead of xmalloc.
+ (get_sysdep_c_format_directives): Use XNMALLOC instead of xmalloc.
+ * format-csharp.c (format_parse): Use XMALLOC instead of xmalloc.
+ * 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 (copy_list): Use XMALLOC, XNMALLOC instead of xmalloc.
+ (make_unconstrained_list): Likewise.
+ (make_empty_list): Use XMALLOC instead of xmalloc.
+ (rotate_loop): Use XNMALLOC instead of xmalloc.
+ (make_intersected_list): Use XMALLOC instead of xmalloc.
+ (make_union_list): Use XMALLOC, XNMALLOC instead of xmalloc.
+ (make_repeated_list_of_lists): Likewise.
+ (make_repeated_list): Likewise.
+ (format_parse): Use XMALLOC instead of xmalloc.
+ * format-pascal.c (format_parse): Likewise.
+ * format-perl.c (format_parse): Likewise.
+ * format-perl-brace.c (format_parse): Use XMALLOC, XNMALLOC instead of
+ xmalloc.
+ * format-php.c (format_parse): Use XMALLOC instead of xmalloc.
+ * format-python.c (format_parse): Use XMALLOC, XNMALLOC instead of
+ xmalloc.
+ * format-qt.c (format_parse): Use XMALLOC instead of xmalloc.
+ * format-scheme.c (copy_list): Use XMALLOC, XNMALLOC instead of xmalloc.
+ (make_unconstrained_list): Likewise.
+ (make_empty_list): Use XMALLOC instead of xmalloc.
+ (rotate_loop): Use XNMALLOC instead of xmalloc.
+ (make_intersected_list): Use XMALLOC instead of xmalloc.
+ (make_union_list): Use XMALLOC, XNMALLOC instead of xmalloc.
+ (make_repeated_list_of_lists): Likewise.
+ (make_repeated_list): Likewise.
+ (format_parse): Use XMALLOC instead of xmalloc.
+ * format-sh.c (format_parse): Use XMALLOC, XNMALLOC instead of xmalloc.
+ * format-tcl.c (format_parse): Use XMALLOC instead of xmalloc.
+ * format-ycp.c (format_parse): Likewise.
+ * message.c (message_alloc, message_list_list_alloc, msgdomain_alloc):
+ Use XMALLOC instead of xmalloc.
+ (msgdomain_list_alloc): Use XMALLOC, XNMALLOC instead of xmalloc.
+ * msgexec.c (main): Use XNMALLOC instead of xmalloc.
+ * msgfilter.c (main, generic_filter, process_message): Likewise.
+ * msgfmt.c (add_mo_suffix): Likewise.
+ (new_domain): Use XMALLOC instead of xmalloc.
+ * msginit.c (catalogname_for_locale, language_of_locale,
+ get_user_fullname, get_field, put_field, subst_string,
+ update_msgstr_plurals): Use XNMALLOC instead of xmalloc.
+ * msgl-cat.c (catenate_msgdomain_list): Likewise.
+ * msgl-check.c (check_plural_eval): Use XCALLOC instead of xcalloc.
+ * msgl-english.c (msgdomain_list_english): Use XNMALLOC instead of
+ xmalloc.
+ * msgl-fsearch.c (new_index): Likewise.
+ (message_fuzzy_index_alloc): Use XMALLOC instead of xmalloc.
+ (mult_index_list_accumulate): Use XNMALLOC instead of xmalloc.
+ * msgl-iconv.c (iconv_message_list): Likewise.
+ * msgmerge.c (message_merge, match_domain): Likewise.
+ * po-gram-gen.y (plural_form_list): Likewise.
+ * read-catalog-abstract.c (po_parse_comment_filepos,
+ po_parse_comment_solaris_filepos): Likewise.
+ * read-mo.c (get_sysdep_string): Likewise.
+ * read-properties.c (conv_from_iso_8859_1, read_escaped_string):
+ Likewise.
+ * read-stringtable.c (conv_from_ucs4): Likewise.
+ * str-list.c (string_list_alloc): Use XMALLOC instead of xmalloc.
+ (string_list_concat, string_list_join): Use XNMALLOC instead of xmalloc.
+ * write-csharp.c (construct_class_name, msgdomain_write_csharp):
+ Likewise.
+ * write-java.c (compute_hashsize, compute_table_items): Likewise.
+ * write-mo.c: Include xsize.h.
+ (write_table): Use XNMALLOC instead of xmalloc. Use xsum, xtimes in
+ xmalloc argument.
+ * write-po.c (wrap): Use XNMALLOC instead of xmalloc.
+ * write-properties.c (conv_to_java): Likewise.
+ * write-qt.c (conv_to_iso_8859_1, conv_to_utf16): Likewise.
+ * x-elisp.c (init_token, string_of_object): Likewise.
+ (read_object): Use XMALLOC instead of xmalloc.
+ * x-librep.c (init_token, string_of_object): Use XNMALLOC instead of
+ xmalloc.
+ (read_object): Use XMALLOC instead of xmalloc.
+ * x-lisp.c (x_lisp_keyword, init_token, string_of_object): Use XNMALLOC
+ instead of xmalloc.
+ (read_object): Use XMALLOC instead of xmalloc.
+ * x-perl.c (get_here_document, extract_quotelike_pass1,
+ extract_quotelike_pass3): Use XNMALLOC instead of xmalloc.
+ (x_perl_lex): Use XMALLOC instead of xmalloc.
+ * x-po.c (strextract_add_message, extract): Use XNMALLOC instead of
+ xmalloc.
+ * x-python.c (try_to_extract_coding): Use XNMALLOC instead of xmalloc.
+ * x-scheme.c (init_token, string_of_object): Use XNMALLOC
+ instead of xmalloc.
+ (read_object): Use XMALLOC instead of xmalloc.
+ * x-sh.c (init_token, string_of_token, string_of_word): Use XNMALLOC
+ instead of xmalloc.
+ (read_word): Use XMALLOC instead of xmalloc.
+ * x-smalltalk.c (phase2_get): Use XNMALLOC instead of xmalloc.
+ * x-tcl.c (init_token, string_of_word): Use XNMALLOC instead of xmalloc.
+ (read_word): Use XMALLOC instead of xmalloc.
+ * xgettext.c: Include xsize.h.
+ (split_keywordspec): Use XNMALLOC instead of xmalloc.
+ (insert_keyword_callshape): Use XMALLOC instead of xmalloc. Use xsum,
+ xtimes to avoid overflow.
+ (flag_context_list_table_insert): Use XMALLOC instead of xmalloc.
+ (savable_comment_add): Likewise.
+ (remember_a_message_plural): Use XNMALLOC instead of xmalloc.
+ (arglist_parser_alloc, arglist_parser_clone): Use xsum, xtimes.
+ (arglist_parser_done): Use XNMALLOC instead of xmalloc.
+ (finalize_header): Likewise.
+
+2006-10-30 Bruno Haible <bruno@clisp.org>
+
+ * plural-eval.h [C++]: Define functions without name mangling.
+
+2006-10-29 Bruno Haible <bruno@clisp.org>
+
+ Clean up libgettextpo exports in C++ mode.
+ * po-gram.h: Wrap declarations in extern "C".
+
+2006-10-29 Bruno Haible <bruno@clisp.org>
+
+ Make it compile in C++ mode.
+ * dir-list.c (dir_list_restore): Add cast.
+ * format-c.c (format_arg_type_t): New type. Use it instead of
+ 'enum format_arg_type'.
+ * format-gcc-internal.c (format_arg_type_t): New type. Use it instead of
+ 'enum format_arg_type'.
+ * format-perl.c (format_arg_type_t): New type. Use it instead of
+ 'enum format_arg_type'.
+ * format-lisp.c (struct segment): Move out of the scope of struct
+ format_arg_list.
+ * format-scheme.c (struct segment): Likewise.
+ * message.h (struct altstr): Move out of the scope of struct message_ty.
+ * msgl-equal.c (msgstr_equal_ignoring_potcdate): Cast memchr results.
+ * po-lex.c (mb_copy): Rename arguments to new_mbc, old_mbc.
+ * read-mo.c (enum mo_endianness): Move out of the scope of struct
+ binary_mo_file.
+ * read-po.c (this): New macro.
+ * read-properties.c (this): New macro.
+ * write-mo.c (write_table): Cast alloca result.
+ * x-glade.c (load_libexpat): Cast dlsym results.
+ * x-perl.c (get_here_document): Use xmalloc instead of
+ xrealloc (NULL...). Cast its result.
+ * x-po.c (extract_add_message): Limit the scope of variable
+ 'charsetstr'.
+ * x-smalltalk.c (phase2_get): Cast xmalloc results.
+
+2006-10-29 Bruno Haible <bruno@clisp.org>
+
+ * x-awk.h: Make includable without prerequisites.
+ * x-c.h: Likewise.
+ * x-csharp.h: Likewise.
+ * x-elisp.h: Likewise.
+ * x-glade.h: Likewise.
+ * x-java.h: Likewise.
+ * x-librep.h: Likewise.
+ * x-lisp.h: Likewise.
+ * x-perl.h: Likewise.
+ * x-php.h: Likewise.
+ * x-po.h: Likewise.
+ * x-properties.h: Likewise.
+ * x-python.h: Likewise.
+ * x-rst.h: Likewise.
+ * x-scheme.h: Likewise.
+ * x-sh.h: Likewise.
+ * x-smalltalk.h: Likewise.
+ * x-stringtable.h: Likewise.
+ * x-tcl.h: Likewise.
+ * x-ycp.h: Likewise.
+ * x-awk.c: Include x-awk.h.
+ * x-c.c: Include x-c.h.
+ * x-csharp.c: Include x-csharp.h.
+ * x-elisp.c: Include x-elisp.h.
+ * x-glade.c: Include x-glade.h.
+ * x-java.c: Include x-java.h.
+ * x-librep.c: Include x-librep.h.
+ * x-lisp.c: Include x-lisp.h.
+ * x-perl.c: Include x-perl.h.
+ * x-php.c: Include x-php.h.
+ * x-po.c: Include x-po.h, x-properties.h, x-stringtable.h.
+ * x-python.c: Include x-python.h.
+ * x-rst.c: Include x-rst.h.
+ * x-scheme.c: Include x-scheme.h.
+ * x-sh.c: Include x-sh.h.
+ * x-smalltalk.c: Include x-smalltalk.h.
+ * x-tcl.c: Include x-tcl.h.
+ * x-ycp.c: Include x-ycp.h.
+ * xgettext.c: Remove extern "C" around x-*.h includes.
+
+2006-10-29 Bruno Haible <bruno@clisp.org>
+
+ * format-awk.c (format_parse): Fix bug with unnumbered argument in
+ precision field.
+
+2006-11-27 Bruno Haible <bruno@clisp.org>
+
+ * gettext-0.16.1 released.
+
+2006-10-26 Bruno Haible <bruno@clisp.org>
+
+ * gettext-0.16 released.
+
+2006-10-24 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (AM_CPPFLAGS): Add also $(top_srcdir). Needed so that
+ woe32dll/export.h is found while compiling gettextsrc-exports.c in a
+ VPATH build.
+ Reported by Charles Wilson <cygwin@cwilson.fastmail.fm>.
+
+2006-10-24 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c (struct definitions_ty): Remove semicolon after
+ gl_lock_define invocation.
+
+2006-10-21 Bruno Haible <bruno@clisp.org>
+
+ * po-error.h (po_error, po_error_at_line): Use format attribute only
+ with gcc >= 3.1.
+
+2006-10-21 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c (struct definitions_ty): Use gl_lock_define to declare
+ the findex_init_lock field.
+ (definitions_init): Use gl_lock_init to initialize it, instead of
+ memcpy hack.
+
+2006-10-16 Bruno Haible <bruno@clisp.org>
+
+ Work around automake-1.10 problem described in
+ http://lists.gnu.org/archive/html/bug-automake/2006-08/msg00025.html.
+ * Makefile.am (CXXLINK): Remove variable.
+ (msgmerge_CXXFLAGS): New variable.
+ (libgettextsrc_la_LINK, msgattrib_LINK, msgcat_LINK, msgcomm_LINK,
+ msgconv_LINK, msgen_LINK, msgfilter_LINK, msggrep_LINK, msgmerge_LINK,
+ msguniq_LINK, xgettext_LINK): New variables.
+
+2006-10-18 Bruno Haible <bruno@clisp.org>
+
+ * read-po.h (input_format_po): Mark as DLL_VARIABLE.
+ * read-properties.h (input_format_properties): Likewise.
+ * read-stringtable.h (input_format_stringtable): Likewise.
+ * write-po.h (output_format_po): Likewise.
+ * write-properties.h (output_format_properties): Likewise.
+ * write-stringtable.h (output_format_stringtable): Likewise.
+
+2006-10-16 Bruno Haible <bruno@clisp.org>
+
+ * gettext-po.h.in: Move to ../libgettextpo/.
+ * gettext-po.c: Move to ../libgettextpo/.
+ * Makefile.am (lib_LTLIBRARIES): Remove libgettextpo.la.
+ (nodist_include_HEADERS): Remove variable.
+ (libgettextpo_la_SOURCES, LTV_CURRENT, LTV_REVISION, LTV_AGE,
+ libgettextpo_la_LDFLAGS, libgettextpo_la_DEPENDENCIES,
+ libgettextpo_la_LDFLAGS): Remove variables.
+ (EXTRA_DIST, BUILT_SOURCES, CLEANFILES): Remove gettext-po.h support.
+ (gettext-po.h): Remove rule.
+
+2006-10-18 Bruno Haible <bruno@clisp.org>
+
+ * po-error.h (__attribute__, __format__, __printf__): New macros.
+ (po_error, po_error_at_line): Declare format string argument.
+ * po-lex.h (__attribute__, __format__, __printf__): New macros.
+ (po_gram_error, po_gram_error_at_line): Declare format string argument.
+
+ * msgl-cat.c (catenate_msgdomain_list): Avoid "gcc -Wshadow" warning.
+ * msgl-check.c (formatstring_error_logger): Avoid "gcc
+ -Wmissing-format-attribute" warning.
+ (check_pair): Avoid "gcc -Wshadow" warning.
+
+ * read-stringtable.c (stringtable_parse): Pass a mutable string as
+ msgstr to po_callback_message.
+ * write-po.c (msgdomain_list_print_po): Avoid "gcc -Wwrite-strings"
+ warning.
+ * xgettext.c (remember_a_message_plural): Free a temporary string
+ after use.
+
+2006-10-17 Bruno Haible <bruno@clisp.org>
+
+ * lang-table.c (language_table): Add the most important languages that
+ have an ISO 639-2 code.
+ * msginit.c (catalogname_for_locale): Likewise.
+
+2006-10-15 Bruno Haible <bruno@clisp.org>
+
+ * read-catalog-abstract.h (input_syntax_ty): Remove type.
+ (catalog_input_format): New structure type.
+ (catalog_input_format_ty): New type.
+ (catalog_reader_parse): Change type of input_syntax argument.
+ * read-catalog.h (input_syntax): Remove variable.
+ (read_catalog_stream, read_catalog_file): Add input_syntax argument.
+ * msgl-cat.h: Include read-catalog-abstract.h.
+ (catenate_msgdomain_list): Add input_syntax argument.
+ * read-po.h: New file.
+ * read-po.c: New file, extracted from read-catalog-abstract.c.
+ * msgattrib.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update read_catalog_file calls.
+ * msgcat.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update catenate_msgdomain_list call.
+ * msgcmp.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update compare call.
+ (compare): Add input_syntax argument.
+ * msgcomm.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update catenate_msgdomain_list call.
+ * msgconv.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update read_catalog_file call.
+ * msgen.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update read_catalog_file call.
+ * msgexec.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update read_catalog_file call.
+ * msgfilter.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update read_catalog_file call.
+ * msgfmt.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update read_catalog_file_msgfmt call.
+ (read_catalog_file_msgfmt): Add input_syntax argument.
+ * msggrep.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update read_catalog_file call.
+ * msginit.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update read_catalog_file call.
+ * msgl-cat.c (catenate_msgdomain_list): Add input_syntax argument.
+ * msgmerge.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update merge call.
+ (compendium): Read it in PO syntax.
+ (merge): Add input_syntax argument.
+ * msguniq.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (main): Change handling of --properties-input, --stringtable-input
+ options. Update catenate_msgdomain_list call.
+ * read-catalog-abstract.c: Don't include po-gram.h, read-properties.h,
+ read-stringtable.h.
+ (catalog_reader_parse): Change type of input_syntax argument. Invoke
+ the parser indirectly.
+ * read-catalog.c (input_syntax): Remove variable.
+ (read_catalog_stream, read_catalog_file): Add input_syntax argument.
+ * read-csharp.c: Include read-po.h.
+ (execute_and_read_po_output): Update read_catalog_stream call.
+ * read-java.c: Include read-po.h.
+ (execute_and_read_po_output): Update read_catalog_stream call.
+ * read-properties.c (properties_parse): Make static.
+ (input_format_properties): New variable.
+ * read-properties.h (properties_parse): Remove declaration.
+ (input_format_properties): New declaration.
+ * read-resources.c: Include read-po.h.
+ (execute_and_read_po_output): Update read_catalog_stream call.
+ * read-stringtable.c (stringtable_parse): Make static.
+ (input_format_stringtable): New variable.
+ * read-stringtable.h (stringtable_parse): Remove declaration.
+ (input_format_stringtable): New declaration.
+ * read-tcl.c: Include read-po.h.
+ (msgdomain_read_tcl): Update read_catalog_stream call.
+ * x-po.c: Include read-po.h, read-properties.h, read-stringtable.h.
+ (extract): Change type of input_syntax argument.
+ (extract_po, extract_properties, extract_stringtable): Update.
+ * xgettext.c: Include read-po.h.
+ (read_exclusion_file): Read it in PO syntax.
+ * gettext-po.c: Include read-po.h.
+ (po_file_read_v3, po_file_read_v2, po_file_read): Update
+ read_catalog_stream call.
+ * Makefile.am (noinst_HEADERS): Add read-po.h.
+ (COMMON_SOURCE): Add read-po.c.
+
+2006-10-15 Bruno Haible <bruno@clisp.org>
+
+ * read-catalog-abstract.h (abstract_catalog_reader_ty): Renamed from
+ abstract_po_reader_ty.
+ (abstract_catalog_reader_class_ty): Renamed from
+ abstract_po_reader_class_ty. Update.
+ (ABSTRACT_CATALOG_READER_TY): Renamed from ABSTRACT_PO_READER_TY.
+ Update.
+ (abstract_catalog_reader_ty): Renamed from abstract_po_reader_ty.
+ Update.
+ (catalog_reader_alloc): Renamed from po_reader_alloc.
+ (catalog_reader_parse): Renamed from po_scan.
+ (catalog_reader_free): Renamed from po_reader_free.
+ * read-catalog.h: Update.
+ (default_catalog_reader_class_ty): Renamed from
+ default_po_reader_class_ty.
+ (DEFAULT_CATALOG_READER_TY): Renamed from DEFAULT_PO_READER_TY. Update.
+ (default_catalog_reader_ty): Renamed from default_po_reader_ty. Update.
+ (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): Update.
+ (default_catalog_reader_alloc): Renamed from default_po_reader_alloc.
+ Update.
+ (read_catalog_stream): Renamed from read_po.
+ (read_catalog_file): Renamed from read_po_file.
+ * open-catalog.h (open_catalog_file): Renamed from open_po_file.
+ * msgattrib.c: Update.
+ (main): Update.
+ * msgcat.c: Update.
+ * msgcmp.c: Update.
+ (compare): Update.
+ * msgcomm.c: Update.
+ * msgconv.c: Update.
+ (main): Update.
+ * msgen.c: Update.
+ (main): Update.
+ * msgexec.c: Update.
+ (main): Update.
+ * msgfilter.c: Update.
+ (main): Update.
+ * msgfmt.c: Update.
+ (read_catalog_file_msgfmt): Renamed from read_po_file_msgfmt. Update.
+ (main): Update.
+ (msgfmt_catalog_reader_ty): Renamed from msgfmt_po_reader_ty. Update.
+ (msgfmt_constructor, msgfmt_parse_debrief, msgfmt_set_domain,
+ msgfmt_add_message, msgfmt_frob_new_message, msgfmt_comment_special,
+ msgfmt_methods): Update.
+ (read_catalog_file_msgfmt): Renamed from read_po_file_msgfmt. Update.
+ * msggrep.c: Update.
+ (main): Update.
+ * msginit.c: Update.
+ (main): Update.
+ * msgl-cat.c: Update.
+ (catenate_msgdomain_list): Update.
+ * msgmerge.c: Update.
+ (compendium, merge): Update.
+ * msguniq.c: Update.
+ * open-catalog.c: Update.
+ (try_open_catalog_file): Renamed from try_open_po_file.
+ (open_catalog_file): Renamed from open_po_file. Update.
+ * po-gram-gen.y: Update.
+ * read-catalog-abstract.c: Update.
+ (callback_arg): Update.
+ (catalog_reader_alloc): Renamed from po_reader_alloc.
+ (catalog_reader_free): Renamed from po_reader_free.
+ (call_parse_brief, call_parse_debrief, call_directive_domain,
+ call_directive_message, call_comment, call_comment_dot,
+ call_comment_filepos, call_comment_special): Update.
+ (parse_start): Renamed from po_scan_start.
+ (parse_end): Renamed from po_scan_end.
+ (catalog_reader_parse): Renamed from po_scan.
+ * read-catalog.c: Update.
+ (call_set_domain, call_add_message, call_frob_new_message): Update.
+ (default_constructor, default_destructor, default_parse_brief,
+ default_parse_debrief, default_copy_comment_state,
+ default_reset_comment_state, default_directive_domain,
+ default_directive_message, default_comment, default_comment_dot,
+ default_comment_filepos, default_comment_special, default_set_domain,
+ default_add_message, default_methods): Update.
+ (default_catalog_reader_alloc): Renamed from default_po_reader_alloc.
+ (read_catalog_stream): Renamed from read_po. Update.
+ (read_catalog_file): Renamed from read_po_file. Update.
+ * read-csharp.c: Update.
+ (execute_and_read_po_output): Update.
+ * read-java.c: Update.
+ (execute_and_read_po_output): Update.
+ * read-properties.c: Update.
+ (properties_parse): Update.
+ * read-properties.h: Update.
+ (properties_parse): Update.
+ * read-resources.c: Update.
+ (execute_and_read_po_output): Update.
+ * read-stringtable.c: Update.
+ (stringtable_parse): Update.
+ * read-stringtable.h: Update.
+ (stringtable_parse): Update.
+ * read-tcl.c: Update.
+ (msgdomain_read_tcl): Update.
+ * x-po.c: Update.
+ (extract_add_message, extract_methods, extract): Update.
+ * xgettext.c: Update.
+ (exclude_directive_domain, exclude_directive_message, exclude_methods,
+ read_exclusion_file): Update.
+ * xgettext.h: Update.
+ * gettext-po.c: Update.
+ (po_file_read_v3, po_file_read_v2, po_file_read): Update.
+
+ * read-catalog-abstract.h: Renamed from read-po-abstract.h.
+ * read-catalog-abstract.c: Renamed from read-po-abstract.c.
+ * read-catalog.h: Renamed from read-po.h.
+ * read-catalog.c: Renamed from read-po.c.
+ * open-catalog.h: Renamed from open-po.h.
+ * open-catalog.c: Renamed from open-po.c.
+ * Makefile.am (noinst_HEADERS, COMMON_SOURCE, libgettextsrc_la_SOURCES):
+ Update.
+
+2006-10-15 Bruno Haible <bruno@clisp.org>
+
+ * write-catalog.h: New file.
+ * write-catalog.c: New file, mostly extracted from write-po.c.
+ * write-po.h (message_page_width_set): Move declaration to
+ write-catalog.h.
+ (message_print_syntax_properties, message_print_syntax_stringtable):
+ Remove declarations.
+ (msgdomain_list_print): Move out to write-catalog.h, adding a
+ catalog_output_format_ty argument.
+ (msgdomain_list_sort_by_msgid, msgdomain_list_sort_by_filepos): Move
+ out to write-catalog.h.
+ (output_format_po): New declaration.
+ * write-po.c: Don't include fwriteerror.h, error-progname.h.
+ (page_width, message_page_width_set): Move out to write-catalog.c.
+ (use_syntax_properties): Remove variable.
+ (message_print_syntax_properties): Remove function.
+ (use_syntax_stringtable): Remove variable.
+ (message_print_syntax_stringtable): Remove function.
+ (wrap, message_print, message_print_obsolete, msgdomain_list_print_po):
+ Add page_width argument.
+ (msgdomain_list_print): Move out to write-catalog.c, adding a
+ catalog_output_format_ty argument.
+ (cmp_by_msgid, msgdomain_list_sort_by_msgid,
+ cmp_filepos, msgdomain_list_sort_filepos,
+ cmp_by_filepos, msgdomain_list_sort_by_filepos): Move out to
+ write-catalog.c.
+ (output_format_po): New variable.
+ * write-properties.h (msgdomain_list_print_properties): Remove
+ declaration.
+ (output_format_properties): New declaration.
+ * write-properties.c (msgdomain_list_print_properties): Make static.
+ (output_format_properties): New variable.
+ * write-stringtable.h (msgdomain_list_print_stringtable): Remove
+ declaration.
+ (output_format_stringtable): New declaration.
+ * write-stringtable.c (msgdomain_list_print_stringtable): Make static.
+ (output_format_stringtable): New variable.
+ * msgattrib.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msgcat.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msgcomm.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msgconv.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msgen.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msgfilter.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msggrep.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msginit.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msgmerge.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msgunfmt.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * msguniq.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (main): Change handling of --properties-output, --stringtable-output
+ options. Pass the output_syntax to msgdomain_list_print.
+ * xgettext.c: Include write-catalog.h, write-properties.h,
+ write-stringtable.h.
+ (output_syntax): Change type to catalog_output_format_ty.
+ (main): Update. Pass the output_syntax to msgdomain_list_print.
+ (finalize_header): Update.
+ * gettext-po.c: Include write-catalog.h.
+ (po_file_write): Specify PO syntax.
+ * Makefile.am (noinst_HEADERS): Add write-catalog.h.
+ (libgettextsrc_la_SOURCES): Add write.catalog.c.
+
+2006-10-05 Bruno Haible <bruno@clisp.org>
+
+ * lang-table.c (language_table): Add Adangme, Kashubian. Fix the
+ names of Western Frisian, Marshallese, Sinhala.
+ * msginit.c (catalogname_for_locale): Add entries for Kashubian,
+ Western Frisian, South Ndebele. Change entry for Serbian from sr_CS to
+ sr_RS.
+
+2006-10-06 Bruno Haible <bruno@clisp.org>
+
+ * write-java.c (msgdomain_write_java): Use fopen_temp, fwriteerror_temp
+ instead of fopen, fwriteerror.
+ * write-csharp.c (msgdomain_write_csharp): Likewise.
+
+2006-10-06 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 3:0:3.
+
+2006-10-03 Bruno Haible <bruno@clisp.org>
+
+ * message.h (struct message_ty): New fields prev_msgctxt, prev_msgid,
+ prev_msgid_plural.
+ * message.c (message_alloc): Initialize the prev_msg* fields.
+ (message_free): Free the prev_msg* fields.
+ (message_copy): Copy the prev_msg* fields.
+ * msgl-ascii.c (is_ascii_message): Consider also the prev_msg* fields.
+ * msgl-cat.c (catenate_msgdomain_list): Copy the prev_msg* fields if
+ a message is copied, not merged.
+ * msgl-equal.c (message_equal): Consider also the prev_msg* fields.
+ * msgl-iconv.c (convert_prev_msgid): New function.
+ (iconv_message_list): Call it.
+ iconvable_prev_msgid): New function.
+ (is_message_list_iconvable): Call it.
+
+ * po-lex.c (po_lex_previous): New variable.
+ (lex_start, lex_end): Reset it.
+ (keyword_p): Test it. New return values PREV_MSGID, PREV_MSGID_PLURAL,
+ PREV_MSGCTXT.
+ (po_gram_lex): Recognize #| and #~| syntax. New return value
+ PREV_STRING.
+ * po-gram-gen.y (do_callback_message): Add prev_msgctxt, prev_msgid,
+ prev_msgid_plural arguments.
+ (free_message_intro): New macro.
+ (PREV_MSGCTXT, PREV_MSGID, PREV_MSGID_PLURAL, PREV_STRING): New tokens.
+ (prev, message_intro): New structures.
+ (po_file): Renamed from msgfmt.
+ (message): Pass prev_* fields around. Call free_message_intro.
+ (message_intro, prev): New rules.
+ (msg_intro): Renamed from message_intro.
+ (prev_msg_intro, prev_msgid_pluralform, prev_string_list): New rules.
+ * read-po-abstract.h (struct abstract_po_reader_class_ty): Add
+ prev_msgctxt, prev_msgid, prev_msgid_plural arguments to the
+ 'directive_message' method.
+ (po_callback_message): Add prev_msgctxt, prev_msgid,
+ prev_msgid_plural arguments.
+ * read-po-abstract.c (call_directive_message, po_callback_message): Add
+ prev_msgctxt, prev_msgid, prev_msgid_plural arguments.
+ * read-po.h (struct default_po_reader_class_ty): Add prev_msgctxt,
+ prev_msgid, prev_msgid_plural arguments to the 'add_message' method.
+ (default_directive_message, default_add_message): Add prev_msgctxt,
+ prev_msgid, prev_msgid_plural arguments.
+ * read-po.c (call_add_message, default_directive_message,
+ default_add_message): Add prev_msgctxt, prev_msgid, prev_msgid_plural
+ arguments.
+ * read-properties.c (properties_parse): Update.
+ * read-stringtable.c (stringtable_parse): Update.
+ * xgettext.c (exclude_directive_message): Add prev_msgctxt, prev_msgid,
+ prev_msgid_plural arguments.
+ * x-po.c (extract_add_message): Add prev_msgctxt, prev_msgid,
+ prev_msgid_plural arguments.
+
+ * write-po.c (wrap): Add extra_indent argument.
+ (message_print, message_print_obsolete): Print the prev_msgctxt,
+ prev_msgid, prev_msgid_plural fields. Compute an extra_indent.
+
+ * msgmerge.c (keep_previous): New variable.
+ (long_options): Add --previous option.
+ (main): Handle it.
+ (usage): Document --previous option.
+ (message_merge): Add force_fuzzy argument. Set the new message's
+ prev_msg* fields.
+ (match_domain): Update.
+ * msgattrib.c (REMOVE_PREV): New enum item.
+ (long_options): Add --clear-previous option.
+ (main): Handle it.
+ (usage): Document --clear-previous option.
+ (process_message_list): Handle REMOVE_PREV.
+ * msgfmt.c (msgfmt_add_message): Add prev_msgctxt, prev_msgid,
+ prev_msgid_plural arguments.
+ * gettext-po.c (po_message_prev_msgctxt, po_message_set_prev_msgctxt,
+ po_message_prev_msgid, po_message_set_prev_msgid,
+ po_message_prev_msgid_plural, po_message_set_prev_msgid_plural): New
+ functions.
+
+2006-10-03 Bruno Haible <bruno@clisp.org>
+
+ * msgmerge.c (definitions_init): Fix initialization of fresh_lock.
+
+2006-10-03 Bruno Haible <bruno@clisp.org>
+
+ * msgcmp.c (include_fuzzies, include_untranslated): New variables.
+ (long_options): Add options --use-fuzzy, --use-untranslated.
+ (main): Handle them.
+ (usage): Document them.
+ (match_domain): Consider include_fuzzies and include_untranslated.
+
+2006-10-02 Bruno Haible <bruno@clisp.org>
+
+ * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number.
+ * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:1:2.
+
+2006-10-01 Bruno Haible <bruno@clisp.org>
+
+ * x-perl.c (extract_balanced): Remove state argument.
+
+ * x-perl.c (extract_balanced): Remove unused variable prev_last_token.
+
+ Fix Perl parsing bug introduced between 0.14.6 and 0.15.
+ * x-perl.c (extract_balanced): Add eat_delim and comma_delim arguments.
+ Use recursion to handle the case of a keyword not followed by an
+ opening parenthesis. When a keyword is seen, set next_argparser
+ instead of modifying the argparser variable of the current recursion.
+ When seeing an opening parenthesis, distinguish the case of function
+ arguments and the case of a subexpression. Don't call collect_message
+ for unused argument positions.
+ Reported by Nicolas François <nicolas.francois@centraliens.net>.
+
+ * x-perl.c (extract_balanced): Remove unused variable.
+
+2006-09-06 Bruno Haible <bruno@clisp.org>
+
+ * msgl-iconv.c: Include xstriconv.h instead of iconvstring.h.
+ (convert_string, convert_msgstr, iconvable_string, iconvable_msgstr):
+ Use xmem_cd_iconv instead of iconv_string.
+ * recode-sr-latin.c: Include xstriconv.h instead of iconvstring.h.
+ (process): Use xmem_cd_iconv instead of iconv_string.
+
+2006-09-04 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (msginit_SOURCES): Add ../../gettext-runtime/intl/lock.c.
+ Reported by Aaron Williams <aaron_williams@net.com>.
+
+2006-08-28 Bruno Haible <bruno@clisp.org>
+
+ * x-scheme.c (read_object): Don't call arglist_parser_remember if
+ argparser is NULL.
+ * x-elisp.c (read_object): Likewise.
+ * x-librep.c (read_object): Likewise.
+ * x-lisp.c (read_object): Likewise.
+ Reported by Kevin Ryde <user42@zip.com.au>.
+
+2006-08-16 Bruno Haible <bruno@clisp.org>
+
+ * plural-table.c (plural_table): Put Hungarian under nplurals=2.
+ Reported by Arpad Biro <biro_arpad@yahoo.com> and
+ Gabor Kelemen <kelemeng@gnome.hu>.
+
+2006-08-16 Bruno Haible <bruno@clisp.org>
+
+ * read-mo.c: Include stdbool.h, stdlib.h, format.h.
+ (read_mo_file): Mark messages with system-dependent segments as
+ "#, c-format" or "#, objc-format", as appropriate.
+ Reported by Egmont Koblinger <egmont@uhulinux.hu>.
+
+2006-08-07 Bruno Haible <bruno@clisp.org>
+
+ * xgettext.c (remember_a_message): Use the position passed as argument
+ instead of a dummypos.
+ Reported by Paul Eggert <eggert@cs.ucla.edu>.
+
+2006-08-01 Bruno Haible <bruno@clisp.org>
+
+ Fix behaviour of msgmerge when the PO file and the compendium are
+ in different encodings.
+ * msgl-iconv.h (is_message_list_iconvable): New declaration.
+ * msgl-iconv.c (iconvable_string, iconvable_string_list,
+ iconvable_msgid, iconvable_msgstr, is_message_list_iconvable): New
+ functions.
+ * msgmerge.c: Include xallocsa.h.
+ (merge): In the case that the .pot file is ASCII, not UTF-8, convert
+ the definitions and the compendia contents to a common encoding.
+ Reported by Stanislav Brabec <sbrabec@suse.cz>.
+
+2006-07-30 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (AM_CPPFLAGS, LDADD, libgettextsrc_la_LDFLAGS,
+ libgettextpo_la_LDFLAGS, recode_sr_latin_LDADD, RELOCATABLE_SRC_DIR,
+ RELOCATABLE_BUILD_DIR): Replace ../lib with ../gnulib-lib.
+ (JAVACOMP, CSHARPCOMP): Remove lib/ from pathname.
+
+2006-07-30 Bruno Haible <bruno@clisp.org>
+
+ * msgl-cat.c: Include c-strstr.h instead of strstr.h.
+ (catenate_msgdomain_list): Use c_strstr instead of strstr.
+ * msgl-charset.c: Include c-strstr.h instead of strstr.h.
+ (compare_po_locale_charsets): Use c_strstr instead of strstr.
+ * msgl-check.c: Include c-strstr.h instead of strstr.h.
+ (plural_help, check_plural, check_header_entry): Use c_strstr instead
+ of strstr.
+ * msgl-iconv.c: Include c-strstr.h instead of strstr.h.
+ (iconv_message_list): Use c_strstr instead of strstr.
+ * po-charset.c: Include c-strstr.h instead of strstr.h.
+ (po_lex_charset_set): Use c_strstr instead of strstr.
+ * write-po.c: Include c-strstr.h instead of strstr.h.
+ (msgdomain_list_print_po): Use c_strstr instead of strstr.
+ * write-stringtable.c: Include c-strstr.h instead of strstr.h.
+ (write_message): Use c_strstr instead of strstr.
+ * msgcmp.c: Include c-strstr.h instead of strstr.h.
+ (compare): Use c_strstr instead of strstr.
+ * msginit.c: Include c-strstr.h instead of strstr.h.
+ (content_type): Use c_strstr instead of strstr.
+ * msgmerge.c: Include c-strstr.h instead of strstr.h.
+ (message_merge, merge): Use c_strstr instead of strstr.
+ * x-python.c: Include c-strstr.h instead of strstr.h.
+ (try_to_extract_coding): Use c_strstr instead of strstr.
+ * xgettext.c: Include c-strstr.h instead of strstr.h.
+ (remember_a_message, finalize_header): Use c_strstr instead of strstr.
+
+2006-07-23 Bruno Haible <bruno@clisp.org>
+
+ Exploit CPUs with multiple execution units.
+ * msgmerge.c: Include lock.h.
+ (struct definitions_ty): Add 'findex_init_lock' field.
+ (definitions_init): Initialize it.
+ (definitions_init_findex): Ensure findex is initialized by the
+ first thread who attempts so.
+ (match_domain): Split the main loop into two. Parallelize the first
+ loop using OpenMP pragmas.
+ * Makefile.am (msgmerge_CFLAGS): New variable.
+ (msgmerge_LDADD): Add OPENMP_CFLAGS.
+
+2006-07-25 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.msvc: Remove file.
+ * Makefile.am (EXTRA_DIST): Remove Makefile.msvc.
+
+2006-07-25 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.vms: Remove file.
+ * Makefile.am (EXTRA_DIST): Remove Makefile.vms.
+
+2006-07-24 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (include_HEADERS): Remove variable.
+ (nodist_include_HEADERS): New variable.
+ Suggested by Ralf Corsepius <rc040203@freenet.de>.
+
+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.