2013-11-11 Daiki Ueno * 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: . 2013-08-12 Daiki Ueno * xgettext.c (remember_a_message): Handle multi-line extracted comments. Reported by Gabor Kelemen in . 2013-08-08 Miguel Angel Arruga Vivas (tiny change) Fix copyright year in xgettext version string. * xgettext.c (main): Update copyright year. 2013-07-11 Daiki Ueno Fix crash when parsing '..' with non-string argument. Reported by Koen Dergent at . * x-lua.c (extract_balanced): Skip stray '..'. 2013-06-27 Daiki Ueno * x-python.c (phase5_pushback): Increment size to 2. 2013-06-25 Daiki Ueno Fix handling of \u escape sequences in Tcl. * x-tcl.c (do_getc_escaped): Fix handling of \u. Reported by Guido Berhoerster in . 2013-06-17 Daiki Ueno * x-python.c (init_flag_table_python): Enable python-brace-format by default. 2013-06-17 Daiki Ueno * 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 Daiki Ueno 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 footnote 2. 2013-06-10 Daiki Ueno * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). Suggested by Stefano Lattarini in . 2013-06-04 Daiki Ueno 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 * x-javascript.c (phase7_getuc): Treat non-legitimate character escape sequences more strictly. 2013-05-20 Pavel Kharitonov (tiny change) Add --previous option to msgattrib. * msgattrib.c (long_options, main, process_message_list): (usage): Add --previous option. 2013-05-12 Daiki Ueno 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 . 2013-05-03 Daiki Ueno * user-email.sh.in (lowercase_sed): Don't use non-portable character escape in sed 's' command. Reported by Ben Fox-Moore in and thanks to Ineiev for the suggestion. 2013-04-26 Daiki Ueno 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 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 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 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 * xgettext.c (usage): Wrap long lines in --help output. 2013-04-17 Andreas Stricker 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 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 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 Daiki Ueno Extract msgctxt from Glade input files. Reported at * 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 * Makefile.am (libgettextsrc_la_CPPFLAGS): Define to specify Woe32 DLL export flags. 2013-01-09 Andreas Stricker (tiny change) * po-xerror.c: Include error.h for error_message_count. * read-catalog-abstract.c: Likewise. 2013-01-06 Daiki Ueno * 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 * xgettext.c (construct_header): Fix memory leak. 2012-12-25 Daiki Ueno * gettext-0.18.2 released. 2012-06-03 Jim Meyering * msginit.c: Spelling fixes. * write-catalog.c: Likewise. 2012-05-03 Bruno Haible Document msgfmt option --endianness. * msgfmt.c (usage): Document the option --endianness. Reported by Paul Martin via Santiago Vila . 2012-01-26 Bruno Haible 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 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 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 via Santiago Vila . 2011-07-29 Bruno Haible 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 via Santiago Vila . 2011-06-13 Bruno Haible 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 Avoid link error when linking statically on AIX 7. * Makefile.am (xgettext_LDADD): Add LTLIBICONV. 2011-04-13 Bruno Haible * msgcat.c (usage): Fix description of --use-first. * msgcomm.c (usage): Fix typo. Reported by Matthijs Kooijman. 2011-06-04 Bruno Haible 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 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 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 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 (tiny change) * plural-table.c (plural_table): Added Belarusian, copied from Russian and Ukrainian. 2010-11-07 Bruno Haible 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 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 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 Rely more on libtool. * Makefile.am (libgettextsrc_la_LDFLAGS): Use -no-undefined always. Don't use @LTNOUNDEF@. 2010-06-06 Bruno Haible 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 * gettext-0.18.1 released. 2010-06-03 Bruno Haible xgettext: Recognize language of files ending in .perl. * x-perl.h (EXTENSIONS_PERL): Recognize .perl. Suggested by Ævar Arnfjörð Bjarmason . 2010-06-03 Bruno Haible 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 Link with libunistring, if it exists. * Makefile.am (LDADD, libgettextsrc_la_LDFLAGS): Add LTLIBUNISTRING. 2010-05-18 Bruno Haible 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 * gettext-0.18 released. 2010-05-09 Bruno Haible * 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 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 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 2010-03-31 Guido Flohr 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 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 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 via Santiago Vila . 2010-02-20 Bruno Haible * plural-table.c (plural_table): Add Bulgarian. Reported by Roumen Petrov . 2010-02-20 Bruno Haible * plural-table.c (plural_table): Sort in the same order as gettext.texi. 2010-02-17 Bruno Haible 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 . 2009-12-21 Bruno Haible * 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 * *.h, *.c, *.y: Untabify. 2009-11-28 Bruno Haible * x-perl.c (extract_variable): Fix tp->type when returning at EOF. Reported by Guido Flohr . 2009-11-15 Bruno Haible * x-python.c: Update comments regarding PEP 0263. 2009-09-05 Bruno Haible * 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 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 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 * 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 Avoid a gcc warning. * msgfilter.c (sub_argv): Change type to 'const char **'. (main): Update. 2009-08-10 Bruno Haible 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 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) 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 * x-perl.c (x_perl_prelex): Recognize the perl 5.10 operator '//'. Reported by Kevin Ryde . 2009-05-29 Bruno Haible 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 * 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 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 at . 2009-03-29 Bruno Haible * 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 . 2009-01-27 Bruno Haible * 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 * plural-table.c (plural_table): Put Turkish under nplurals=2. Reported by Sertaç Ö. Yıldız . 2009-01-26 Bruno Haible * 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 Fix bug introduced on 2005-10-01. * msgl-charset.c (compare_po_locale_charsets): Fix recognition of header entry. 2009-01-25 Bruno Haible Fix bug introduced on 2008-10-04. * read-catalog-abstract.c (po_parse_comment_special): Initialize *rangep. Reported by Ralf Wildenhues . 2009-01-18 Bruno Haible * 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 . 2009-01-18 Bruno Haible 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 * 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 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 Update after gnulib changed. * Makefile.am (RELOCATABLE_STRIP): New variable. 2008-12-07 Bruno Haible * write-po.c (message_print_comment_filepos): Use a 'const' pointer where possible. * write-stringtable.c (write_message): Likewise. 2008-12-07 Bruno Haible 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 * msgfilter.c: Include xvasprintf.h, xsetenv.h. (process_message): Set the environment variables MSGFILTER_MSGCTXT, MSGFILTER_MSGID, MSGFILTER_LOCATION. 2008-10-28 Bruno Haible * msgmerge.c (match_domain): Remove space between '#' and 'pragma' for OpenMP. Reported by Lamarque Eric . 2008-10-04 Bruno Haible * 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 via . 2008-10-04 Bruno Haible * 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 . (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 . (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 * 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 * 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 * Makefile.am (msg*_DEPENDENCIES, xgettext_DEPENDENCIES, recode_sr_latin_DEPENDENCIES): Add $(WOE32_LDADD). 2008-09-28 Bruno Haible * msgexec.c (process_string): Don't die from SIGPIPE if the subprocess does not want our input. Reported by Rainer Tammer . 2008-09-28 Bruno Haible * Makefile.am (msgcmp_LDADD): Add MSGMERGE_LIBM. Reported by Rainer Tammer . 2008-09-27 Bruno Haible * 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 * write-catalog.c (cmp_by_msgid, cmp_by_filepos): Compare the msgctxt fields if the msgid fields are the same. Reported by Rainer Tammer . 2008-09-15 Bruno Haible * Makefile.am (msg*_DEPENDENCIES, xgettext_DEPENDENCIES, recode_sr_latin_DEPENDENCIES): New variables. 2008-09-15 Bruno Haible * 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 * 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 * 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 * 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 Bruno Haible * 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 Bruno Haible * xgettext.c: Include concat-filename.h. (main, xgettext_open): Use xconcatenated_filename instead of concatenated_filename. 2008-09-01 Bruno Haible * 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 * msgexec.c: Include . (main): Block SIGPIPE for the duration of the processing. 2008-08-23 Bruno Haible 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 via . 2008-08-16 Bruno Haible * 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 via . 2008-08-16 Bruno Haible * x-php.c (extract_balanced): Fix small bug in 2007-03-17 commit. 2008-08-15 Bruno Haible * 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 in . 2008-08-14 Bruno Haible * format-python.c (format_parse): For '%', set the type to FAT_NONE. 2008-08-14 Bruno Haible * format-python.c (format_check): Require the same number of unnamed arguments also when !equality. Reported by Alexander Dupuy in . 2008-08-14 Bruno Haible * msgmerge.c: Include "glthread/lock.h" instead of "lock.h". 2008-08-03 Bruno Haible * x-python.c (mixed_string_buffer_append): Replace a lone high surrogate with U+FFFD. Reported by Yann via Santiago Vila . 2008-07-19 Bruno Haible * 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 宋浩 . 2008-06-10 Bruno Haible * 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 * msginit.c (get_field, put_field): Recognize a field also if there is no space after the ':'. Reported by Nacho . 2008-05-16 Bruno Haible * msgl-iconv.c (iconvable_prev_msgid): Fix typo. Reported by Karl Eichwalder via Philipp Thomas at . 2008-05-10 Bruno Haible * 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 * 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 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 * xgettext.c (usage): Clarify single-letter options that take an optional argument: -c, -k, -m, -M. 2008-04-16 Bruno Haible * msginit.c (catalogname_for_locale): Add entries for Maori, Uighur. 2008-02-20 Jakub Jelinek Bruno Haible * 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 * msgmerge.c (match_domain): Remove the prev_msgid fields also from the untranslated messages. Reported by Yukiko Bando via Chusslove Illich (Часлав Илић) . 2008-02-04 Bruno Haible * 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 * 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 . 2008-01-13 Bruno Haible * Makefile.am (noinst_headers): Add msgl-header.h. 2007-12-24 Bruno Haible 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 * write-po.c (wrap): Avoid breaking line in the middle of a format directive. Reported by Dwayne Bailey . 2007-11-07 Jim Meyering Bruno Haible * write-catalog.c (msgdomain_list_print): Fix open() call. 2007-11-07 Bruno Haible * gettext-0.17 released. 2007-10-28 Bruno Haible * color.c (style_file_lookup): New function. (style_file_prepare): Use it. 2007-10-21 Bruno Haible 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 . 2007-10-20 Bruno Haible * msgmerge.c (message_merge): Set the fuzzy flag if the msgid_plural changed. Suggested by Chusslove Illich (Часлав Илић) . 2007-10-20 Bruno Haible 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 (Часлав Илић) . 2007-10-20 Bruno Haible * 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 * 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 * 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 * 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 * 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 * 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 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 . 2007-09-02 Bruno Haible Correct handling of different libexpat ABIs. * x-glade.c: Include . (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 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 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 * po-lex.c: Include uniwidth.h. 2007-06-19 Bruno Haible * x-c.c (phase8_get): Call free_token, so that the reference to tmp.comment gets dropped. 2007-08-27 Bruno Haible * x-python.c (phase7_getuc): Interpret octal and hexadecimal escapes as Unicode code points inside Unicode strings. Reported and patch by Jakub Wilk . 2007-08-23 Bruno Haible * 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 * 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 . 2007-07-07 Bruno Haible * Makefile.am (AM_CPPFLAGS): Remove reference to libuniname directory. (LIBUNINAME): Remove variable. (xgettext_LDADD): Update. 2007-07-04 Bruno Haible 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 . 2007-06-30 Bruno Haible * hostname.c (main): Use the standard --version output, see . * 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 * lang-table.c (language_table): Fix entry for Javanese. 2007-06-28 Bruno Haible * format-gcc-internal.c (format_parse): Tweak an error message. Reported by Karl Eichwalder. 2007-06-28 Bruno Haible * 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 . 2007-06-25 Bruno Haible 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 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 . 2007-06-09 Bruno Haible * 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 * 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 * 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 * 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 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 * 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 * msgl-check.c: Include stdio.h instead of vasprintf.h. * po-lex.c: Don't include vasprintf.h. 2007-03-27 Bruno Haible * 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 * 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 * 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 . 2007-03-10 Bruno Haible * msginit.c (get_user_fullname): Reduce scope of local variables. 2007-03-04 Bruno Haible Moved --enable-relocatable infrastructure to gnulib. * Makefile.am: Remove SET_RELOCATABLE invocation. 2007-02-25 Bruno Haible * 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 * 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 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 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 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 * 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 * 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 * msgfilter.c: Include unconditionally. 2007-01-26 Bruno Haible * msginit.c: Don't include strpbrk.h, use instead. 2007-01-26 Bruno Haible * msgmerge.c: Don't include stpncpy.h, use instead. 2007-01-26 Bruno Haible * msgfmt.c: Don't include stpcpy.h, use instead. * msgmerge.c: Likewise. 2007-01-21 Bruno Haible * 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 * msgmerge.c (message_merge): Copy the obsolete bit from the ref message. Reported by Leonardo Fontenelle . 2006-12-24 Bruno Haible * Makefile.am (AM_CXXFLAGS): New variable. 2006-12-23 Bruno Haible * 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 * 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 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 * 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 * write-po.c: Include write-catalog.h instead of write-properties.h, write-stringtable.h. 2006-11-26 Bruno Haible * 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 * 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 * 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 * write-catalog.h: Include ostream.h. Don't include . (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 . (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 . (write_escaped_string, write_message, write_stringtable, msgdomain_list_print_stringtable): Replace 'FILE *' argument with an 'ostream_t' argument. 2006-11-12 Bruno Haible * write-po.c (wrap): Indent by use of spaces, not tabs. 2006-11-03 Bruno Haible 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 * plural-eval.h [C++]: Define functions without name mangling. 2006-10-29 Bruno Haible Clean up libgettextpo exports in C++ mode. * po-gram.h: Wrap declarations in extern "C". 2006-10-29 Bruno Haible 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 * 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 * format-awk.c (format_parse): Fix bug with unnumbered argument in precision field. 2006-11-27 Bruno Haible * gettext-0.16.1 released. 2006-10-26 Bruno Haible * gettext-0.16 released. 2006-10-24 Bruno Haible * 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 . 2006-10-24 Bruno Haible * msgmerge.c (struct definitions_ty): Remove semicolon after gl_lock_define invocation. 2006-10-21 Bruno Haible * po-error.h (po_error, po_error_at_line): Use format attribute only with gcc >= 3.1. 2006-10-21 Bruno Haible * 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 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 3:0:3. 2006-10-03 Bruno Haible * 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 * msgmerge.c (definitions_init): Fix initialization of fresh_lock. 2006-10-03 Bruno Haible * 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 * 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 * 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 . * x-perl.c (extract_balanced): Remove unused variable. 2006-09-06 Bruno Haible * 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 * Makefile.am (msginit_SOURCES): Add ../../gettext-runtime/intl/lock.c. Reported by Aaron Williams . 2006-08-28 Bruno Haible * 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 . 2006-08-16 Bruno Haible * plural-table.c (plural_table): Put Hungarian under nplurals=2. Reported by Arpad Biro and Gabor Kelemen . 2006-08-16 Bruno Haible * 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 . 2006-08-07 Bruno Haible * xgettext.c (remember_a_message): Use the position passed as argument instead of a dummypos. Reported by Paul Eggert . 2006-08-01 Bruno Haible 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 . 2006-07-30 Bruno Haible * 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 * 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 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 * Makefile.msvc: Remove file. * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. 2006-07-25 Bruno Haible * Makefile.vms: Remove file. * Makefile.am (EXTRA_DIST): Remove Makefile.vms. 2006-07-24 Bruno Haible * Makefile.am (include_HEADERS): Remove variable. (nodist_include_HEADERS): New variable. Suggested by Ralf Corsepius . 2006-07-21 Bruno Haible * gettext-0.15 released. 2006-07-20 Bruno Haible * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. 2006-07-20 Bruno Haible * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:0:2. 2006-07-14 Bruno Haible * Makefile.am (MOSTLYCLEANFILES): New variable. 2006-07-02 Bruno Haible * write-csharp.c (msgdomain_write_csharp): Update. * write-java.c (msgdomain_write_java): Update. 2006-06-29 Bruno Haible * write-csharp.c (msgdomain_write_csharp): Update. * write-java.c (msgdomain_write_java): Likewise. 2006-06-28 Bruno Haible Assume on all Unix platforms. Assume closedir works. * msginit.c: Don't include , , . (find_pot): Use closedir directly. 2006-06-27 Bruno Haible Assume correct S_ISDIR macro. * write-csharp.c: Remove test of STAT_MACROS_BROKEN. * write-java.c: Likewise. 2006-04-14 Bruno Haible Assume autoconf >= 2.60. * Makefile.am (localedir): Remove variable. 2006-06-21 Bruno Haible * x-sh.c (read_word): Recognize the Bash process substitution syntax. 2006-06-21 Bruno Haible * x-sh.c (read_word): Recognize $(...) and $((...)) also inside double-quoted strings. Reported by Michelle Konzack . 2006-06-04 Bruno Haible * msgl-check.c (check_plural_eval): Declare 'distribution' as volatile, so that it is unaffected by longjmp. 2006-06-04 Bruno Haible * xgettext.c (arglist_parser_done): Cast length argument for format string. 2006-05-31 Bruno Haible * 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 . 2006-05-22 Bruno Haible * msgfilter.c: Include also on Minix. Reported by Leonard den Ottolander . 2006-05-17 Bruno Haible Cygwin portability. * hostname.c (WIN32_NATIVE): Renamed from WIN32. 2006-05-16 Bruno Haible * Makefile.am (CLEANFILES): Add gettext-po.h. 2006-05-16 Bruno Haible * 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 * msgfilter.c (main): Change type of i. 2006-05-15 Bruno Haible * Makefile.am: Test flag WOE32DLL instead of CYGWINDLL. 2006-05-14 Bruno Haible * x-php.c (x_php_lex): Fix handling of here documents. Reported by Gaëtan Frenoy . 2006-05-12 Bruno Haible * write-csharp.c [MINGW]: Include . (mkdir): Define using _mkdir. * write-java.c [MINGW]: Include . (mkdir): Define using _mkdir. 2006-05-11 Bruno Haible * 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 * 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 * plural-eval.h (USE_SIGINFO): Don't define on Cygwin. 2006-05-02 Charles Wilson * 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 * filters.h: Add C++ guards. 2006-05-07 Bruno Haible * x-perl.c (extract_variable): Fix syntax error introduced on 2005-10-03. 2006-05-07 Bruno Haible * 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 * write-java.c (msgdomain_write_java): Specify source-version 1.3 and require target-version 1.1. 2006-04-30 Bruno Haible * 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 * 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 * msginit.c (project_id, project_id_version, get_user_email): Close the FILE in case of I/O error. 2006-04-30 Bruno Haible * 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 * msgexec.c: Include unconditionally. * msgfilter.c: Likewise. * msggrep.c: Likewise. * msginit.c: Likewise. * hostname.c: Likewise. * urlget.c: Likewise. 2006-04-17 Bruno Haible * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). 2006-04-09 Bruno Haible * 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 * 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 . 2006-04-02 Bruno Haible * 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 * xgettext.c (main): Treat --keyword= like --keyword. 2006-03-28 Bruno Haible * 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 * msgl-iconv.c: Include iconvstring.h. Don't include . (iconv_string): Remove function, moved to ../lib/. 2006-03-19 Bruno Haible * 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 . 2006-03-19 Bruno Haible * xgettext.c (arglist_parser_done): Use error_at_line instead of error. 2006-03-16 Bruno Haible * 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 . 2006-03-16 Bruno Haible 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 . 2006-03-16 Bruno Haible * xgettext.c (set_format_flags_from_context): Break long line. 2006-03-11 Bruno Haible * message.c (fuzzy_search_goal_function): Use 'volatile double'. 2006-03-11 Bruno Haible 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 . 2006-03-09 Bruno Haible * Makefile.am (CXXLINK) [!mingw]: Overwrite automake's value. Fixes unintended dependency on libstdc++ introduced on 2005-07-05. 2005-10-09 Bruno Haible * 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 * 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 * 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 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 * 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 * x-php.c (x_php_lex): Treat byte values >= 127 like alphabetic. Reported by Hagen Fritsch . 2005-12-25 Bruno Haible 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 * msgl-iconv.c (iconv_message_list): Fix syntax error. Reported by Dave Patton . 2005-12-04 Bruno Haible * Makefile.am (CSHARPCOMPFLAGS): Use value set by csharpcomp.m4. 2005-11-29 Colin Watson * 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 * write-csharp.c (write_csharp_code): Add culture_name argument. Emit an AssemblyCulture note for it. (msgdomain_write_csharp): Update. Suggested by Pepa . 2005-10-09 Bruno Haible * 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 * 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 * plural-exp.c: Renamed from plural.c. * Makefile.am (libgettextsrc_la_SOURCES): Update. 2005-10-18 Bruno Haible 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 (Часлав Илић) . 2005-10-09 Bruno Haible * msginit.c (catalogname_for_locale, language_of_locale): Drop support of CEN locale name syntax. 2005-10-05 Bruno Haible * 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 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 * 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 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 * 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 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 * 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 * 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 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 * message.c (message_list_hash_insert_entry): Update. 2005-10-03 Bruno Haible * 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 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 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 * 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 . 2005-10-01 Bruno Haible 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 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 * 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 * 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 * 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 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 * msgfmt.c (check_plural): Fix broken determination of max_nplurals. 2005-09-17 Bruno Haible 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 * 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 * x-csharp.c: Include xerror.h. 2005-09-11 Bruno Haible * user-email.sh.in: Add support for Mozilla Thunderbird and GNOME Evolution 2. Improve mutt support. 2005-08-26 Bruno Haible * plural-table.c (plural_table): Add an entry about Romanian. Explanations by Eddy Petrişor . 2005-08-23 Bruno Haible * 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 * 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 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 * user-email.sh.in (datarootdir): New variable. 2005-07-26 Bruno Haible 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 * po-lex.c (mb_width): Remove gcc warnings on platform with unsigned 'char' type (e.g. Linux/PowerPC). Reported by Jeff Rizzo . 2005-07-05 Bruno Haible * 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 * write-po.c (wrap): Output \a and \v as an escape sequence, like \b, \f, \r. Suggested by Asgeir Frimannsson . 2005-05-05 Bruno Haible * 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 * 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 . 2005-05-01 Bruno Haible 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 . 2005-04-18 Bruno Haible * 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 * gettext-0.14.6 released. 2006-06-21 Bruno Haible * Makefile.am (CLEANFILES): Add msgfmt.net.exe.mdb, msgunfmt.net.exe.mdb. 2006-06-21 Bruno Haible * gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number. 2006-06-20 Bruno Haible * 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 . 2005-05-23 Bruno Haible * gettext-0.14.5 released. 2005-05-23 Bruno Haible * gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number. 2005-05-21 Bruno Haible * 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 . 2005-04-11 Bruno Haible * gettext-0.14.4 released. 2005-04-11 Bruno Haible * gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number. 2005-03-14 Bruno Haible * gettext-0.14.3 released. 2005-03-08 Bruno Haible * gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number. 2005-02-26 Bruno Haible * 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 * format-scheme.c (parse_upto): Remove support for ~!. Reported by Kevin Ryde . 2005-02-24 Bruno Haible * gettext-0.14.2 released. 2005-02-12 Bruno Haible * Makefile.msvc (gettextpo.lib): Link with intl.lib as well. 2005-02-12 Bruno Haible * Makefile.msvc (msginit_OBJECTS): Add plural-count.obj. * Makefile.vms (msginit_OBJECTS): Add plural-count.obj. 2005-02-10 Bruno Haible * gettext-po.h (po_header_set_field): New declaration. * gettext-po.c (po_header_set_field): New function. Suggested by Ross Golder . 2005-02-10 Bruno Haible * gettext-po.h (LIBGETTEXTPO_VERSION): New macro. (libgettextpo_version): New declaration. * gettext-po.c (libgettextpo_version): New variable. 2005-02-10 Bruno Haible * 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 . 2005-02-10 Bruno Haible * gettext-po.h (po_message_set_extracted_comments): New declaration. * gettext-po.c (po_message_set_extracted_comments): New function. Suggested by Asgeir Frimannsson . 2005-02-08 Bruno Haible * msginit.c (get_user_email): Cast _() to 'char *', to avoid compiler warning. 2005-02-07 Bruno Haible 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ş . 2005-02-07 Bruno Haible * project-id: Use LC_ALL=C to protect range expression against Estonian locale. 2005-02-06 Bruno Haible 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 . 2005-02-04 Bruno Haible * plural-table.c (plural_table): Add an entry about Vietnamese. Explanations by Clytie Siddall . 2005-01-29 Bruno Haible * 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 * msgfmt.c (formatstring_error_logger): Cast the fprrintf argument, to make it work on big-endian 64-bit machines. 2005-01-16 Bruno Haible 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 * 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 * 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 . 2005-01-08 Bruno Haible * msggrep.c (usage): Explain COMMENT-PATTERN syntax as well. 2005-01-06 Bruno Haible * x-tcl.c (read_word): Ignore non-space whitespace at the beginning. Reported by William J Poser . 2005-01-06 Bruno Haible * 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 * 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 * gettext-po.c (po_file_read): Interpret "-" and "/dev/stdin" as denoting stdin. Suggested by Asgeir Frimannsson . 2004-11-29 Bruno Haible * Makefile.am (libgettextpo_la_LDFLAGS): Add @LTLIBINTL@ @LTLIBICONV@. Reported by Sam Steingold . 2004-10-01 Guido Flohr * x-perl.c (x_perl_prelex): Recognize function names starting with '-'. Reported by Ryan Anderson . 2004-09-16 Bruno Haible * format.h (formatstring_error_logger_t): Modify decl for GCC <= 3.0. Reported by Jens A. Tkotz . 2004-09-11 Bruno Haible * 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 . 2004-09-06 Bruno Haible * 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 * 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 * Makefile.am (msginit_LDADD): Use the INTL_MACOSX_LDFLAGS. 2004-08-30 Bruno Haible * plural-table.c (plural_table): Czech is now like Slovak. Reported by Stepan Kasal . 2004-06-23 Bruno Haible * x-c.c (phase1_getc): Fix phase0_getc invocation. Reported by Matt Dreezer . 2004-05-14 Bruno Haible * format-java.c (message_format_parse): Fix argument of freesa() calls. 2004-03-19 Bruno Haible * Makefile.am (install-exec-clean): Don't remove libgettextsrc.a on AIX. Reported by Kouichi Hashikawa . 2004-03-14 Bruno Haible * format-lisp.c (parse_upto): Add integer restriction for the dispatch argument in ~[...~]. 2004-03-02 Bruno Haible * 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 . 2004-02-27 Bruno Haible * plural-table.c (plural_table): Add an entry about Serbian. Reported by Danilo Segan . 2004-01-29 Bruno Haible * gettext-0.14.1 released. 2004-01-28 Bruno Haible * gettext-0.14 released. 2004-01-18 Bruno Haible * 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 * 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 * msginit.c (fill_header): Avoid a NULL pointer access when the header has no comment attached to it. Reported by Josep Puigdemont . 2004-01-09 Bruno Haible * 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 * 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 * read-mo.h (read_mo_file): Change 'fn' into 'filename'. * read-mo.c (read_mo_file): Likewise. 2003-12-28 Bruno Haible * 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 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 * read-java.c (msgdomain_read_java): Relocate also the GETTEXTJAR value. * urlget.c (fetch): Likewise. 2003-12-26 Bruno Haible * 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 * 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 * 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 * 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 * 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 Assume automake-1.8. * Makefile.am (install-exec-local): Renamed from install-exec-am. 2003-11-30 Bruno Haible * 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 * gettext-0.13.1 released. 2003-12-14 Bruno Haible * 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 * x-c.c (phase7_getc): Remove dead code. * x-java.c (accumulate_escaped): More precise error message. 2003-12-02 Bruno Haible * msginit.c (catalogname_for_locale): Treat sr_CS like sr_YU. 2003-11-30 Bruno Haible * gettext-0.13 released. 2003-11-28 Bruno Haible * xgettext.c (set_format_flags_from_context): Add casts, to make it compile in C++ mode. 2003-11-22 Bruno Haible * 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 * format-lisp.c (check_params): Use ngettext for one of the messages. Reported by Rafał Maszkowski . 2003-11-15 Bruno Haible * Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. 2003-11-09 Bruno Haible * msginit.c (main): Drop the blank line in --no-translator mode. 2003-11-07 Bruno Haible * xgettext.c (remember_a_message): Omit the programmer comments of a duplicated msgid only if they are redundant. Reported by Christian Neumair . 2003-11-05 Bruno Haible * user-email.sh.in: Renamed from user-email.in. Internationalize, use localedir and gettext. * FILES: Update. 2003-10-23 Bruno Haible * 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 * 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 * 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 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 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 . 2003-10-13 Bruno Haible 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 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 * hostname.c (xgethostname): Add support for native Woe32 API. 2003-10-21 Bruno Haible * message.c (message_list_search): Avoid casting a pointer to a local variable; it violated strict aliasing. 2003-10-21 Bruno Haible * write-java.c (mkdir): Redefine on mingw. 2003-10-12 Bruno Haible 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 * x-java.c (phase3_getc): Fix typo: Use phase2_ungetc, not phase2_getc. 2003-10-20 Bruno Haible Portability to AIX with cc. * xgettext.h (struct flag_context_ty): Define the bitfields of type 'unsigned int'. 2003-10-20 Bruno Haible 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 * xgettext.c (main): Drop suffix ".in" from input file name, if present, before looking at the file extension. 2003-10-09 Bruno Haible * 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 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 * 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 * xgettext.c (substring_match): Remove variable. (long_options): Remove --keyword-substring option. (main): Remove handling of --keyword-substring option. 2003-10-05 Bruno Haible * 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 * 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 * msgmerge.c (main): Make option -N work. Reported by Liu Garfield . 2003-10-04 Bruno Haible 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 * x-glade.c (start_element_handler): Implement extract_all behaviour. 2003-10-04 Bruno Haible * 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 * 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 Bruno Haible * 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 . 2003-09-22 Bruno Haible * x-sh.c (read_word): Warn about $"...". 2003-09-18 Bruno Haible * 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 * 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 * 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 * FILES: Update. 2003-09-14 Bruno Haible 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 * 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 * 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 . 2003-09-13 Bruno Haible * 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 Fix behaviour of " --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 * po-lex.c (mbfile_getc): Handle unexpected return value of u8_mbtouc(). Reported by Jochen Hein . 2003-09-09 Bruno Haible * read-properties.c (phase4_getuc): Cast line_number to 'unsigned long' before outputting it. 2003-09-09 Bruno Haible * 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 * 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 * 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 * 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 * format-gcc-internal.c (isdigit): Remove unused macro. * format-perl-brace.c (isdigit): Likewise. 2003-09-01 Guido Flohr * 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 * x-perl.c: Include getline.h. 2003-08-24 Bruno Haible * 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 * msgfilter.c (process_message): Cast xrealloc() result. 2003-08-24 Bruno Haible * msgfilter.c: On Windows, include instead of . * msggrep.c: Likewise. 2003-08-24 Bruno Haible * 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 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 * 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 * 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 * 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 * msginit.c (catalogname_for_locale): Add entries for Aragonese, Haitian, Sichuan Yi, Limburgish. (englishname_of_language): Likewise. 2003-08-08 Bruno Haible * 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 * x-perl.c (extract_quotelike_pass3): Fix \x handling. Reported by Guido Flohr. 2003-07-05 Bruno Haible * 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 Support for PHP >= 4.2.0. * x-php.c (init_keywords): Add ngettext, dngettext, dcngettext to the built-in keywords. Reported by A. Sopicki . 2003-06-27 Bruno Haible * 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 * x-perl.c (extract_quotelike_pass3): Fix handling of doubled backslashes in single-quoted strings. 2003-06-23 Bruno Haible * format-perl-bracket.c (format_check): Allow additional bracketed items in the msgstr. 2003-06-22 Bruno Haible * write-properties.c: Don't include exit.h and gettext.h. 2003-06-22 Bruno Haible * x-php.c (phase3_ungetc): Comment out unused function. 2003-06-21 Bruno Haible * 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 * x-perl.c (extract_quotelike_pass3): Fix handling of double backslash. 2003-06-19 Bruno Haible * 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 * 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 * 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 * 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 * 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 * 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 * 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 < * 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 * 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 * 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 * 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 * 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 . 2003-05-27 Bruno Haible * plural-table.c (plural_table): Correct entry for Slovak. Reported by Marcel Telka . 2003-05-24 Bruno Haible * 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 * gettext-0.12.1 released. 2003-05-21 Bruno Haible * msggrep.c (main) [Solaris]: Fix syntax error. Reported by Valery Beaud . 2003-05-21 Bruno Haible * xgettext.c (output_syntax): New variable. (main): Set it. (finalize_header): If --properties-output was given, set the charset. 2003-05-18 Bruno Haible * 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 * gettext-0.12 released. 2003-05-17 Bruno Haible * 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 * msginit.c (F_OK): Provide a fallback value. Reported by Perry Rapp. 2003-05-10 Bruno Haible * msgl-iconv.c (iconv_string): Don't return -1 just because the string is longer than 4 KB. Reported by Denis Barbier . 2003-05-04 Bruno Haible * 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 * msgfilter.c: Include also on EMX. Reported by Andreas Buening . 2003-04-26 Bruno Haible * 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 * 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 * 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 * 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 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 * read-po.c (readall_directive_message): Separate accumulation and reset. * x-po.c (extract_directive_message): Likewise. 2003-04-13 Bruno Haible * 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 * plural-table.c (plural_table): Add an entry about Faroese. Reported by Jacob Sparre Andersen . 2003-04-13 Bruno Haible * 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 * Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no lines. Don't use the force target. Correct wildcard syntax. Suggested by Jouk Jansen . 2003-04-13 Bruno Haible * xgettext.c (construct_header): Remove spurious comma. 2003-03-30 Bruno Haible * 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 * 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 Native Woe32/MSVC support. * Makefile.msvc: New file. * Makefile.am (EXTRA_DIST): Add it. * msgfilter.c: Include 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 , for F_OK. Include only if it exists. (get_user_pwd, get_user_fullname): Adapt for when 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 only if it exists. 2003-03-28 Bruno Haible * msgmerge.c (main): Use copy_file_preserving instead of copy_file. 2003-03-16 Bruno Haible * str-list.h (string_list_join): Comment out. * str-list.c (string_list_join): Comment out. 2003-03-10 Bruno Haible * msggrep.c (no_pass): Mention option -C. (usage): Document option -C completely. Reported by Martin Quinson . 2003-02-28 Bruno Haible 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 * 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 . 2003-03-03 Bruno Haible * msgen.c (usage): Don't say that the entries are marked fuzzy. Reported by Karl Eichwalder . 2003-02-23 Bruno Haible 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 * x-python.c (init_keywords): Add u*gettext variants and plural handling functions added in Python 2.3. 2003-02-22 Bruno Haible * Makefile.am (installdirs): Remove dependency, redundant with automake >= 1.6. 2003-02-20 Bruno Haible * Makefile.am (libgettextpo_la_DEPENDENCIES): New variable. Reported by Jim Meyering . 2003-02-19 Bruno Haible * 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 * 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 * 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 * user-email.in: Add support for GNOME evolution, OpenOffice and StarOffice with nonstandard installation directory. 2003-02-15 Bruno Haible * 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 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.