Bruno Haible [Fri, 4 Oct 2019 15:59:22 +0000 (17:59 +0200)]
build: Fix the build error in gettext-tools/examples/po.
Reported by Nick Alcock <nix@esperi.org.uk>
at <https://savannah.gnu.org/bugs/?56529>.
* gettext-tools/examples/po/Makefile.am (USE_BUILT_PROGS): New variable.
(hello-*.pot): Use it.
($(srcdir)/../hello-*/po/$(LL).po): Likewise.
* HACKING: Remove the workaround.
Bruno Haible [Fri, 4 Oct 2019 11:20:12 +0000 (13:20 +0200)]
libxml: Simplify autoconf macro.
* gnulib-local/m4/libxml.m4 (gl_LIBXML): Don't test for dlopen and shlload.
The test for dlopen failed, because it would require linking with '-ldl'.
The test for shlload failed, because the function on HP-UX is called 'shl_load'
and it would require linking with '-ldld'.
Bruno Haible [Fri, 4 Oct 2019 09:47:18 +0000 (11:47 +0200)]
build: Don't fetch gnulib a second time in libtextstyle.
* autogen.sh: Set GNULIB_SRCDIR when invoking libtextstyle/autogen.sh.
* libtextstyle/autogen.sh: Remove all git operations. Look at the GNULIB_SRCDIR
environment variable. Ignore the GNULIB_TOOL environment variable.
Bruno Haible [Sun, 29 Sep 2019 18:20:36 +0000 (20:20 +0200)]
msgcat: Signal error when the same msgid is used with and without msgid_plural.
Suggested by Mikko Rantalainen <mikko.rantalainen@peda.net>
in <https://lists.gnu.org/archive/html/bug-gettext/2019-09/msg00020.html>.
* gettext-tools/src/msgl-cat.c (catenate_msgdomain_list): Signal an error when
the same msgid is used with and without msgid_plural.
* gettext-tools/src/msgcat.c (main): Exit with failure code if there was an
error.
* gettext-tools/src/msgcomm.c (main): Likewise.
* gettext-tools/src/msguniq.c (main): Likewise.
* gettext-tools/tests/msgcat-21: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.
Bruno Haible [Sun, 29 Sep 2019 12:29:41 +0000 (14:29 +0200)]
xgettext: Fix parsing of XML tags that end in /> and have attributes.
Reported by Matej Marusak <marusak.matej@gmail.com>
in <https://savannah.gnu.org/bugs/?56848>.
* gettext-tools/src/x-javascript.c (phase5_get): After reading a string, reset
the lexical_context to the previous one, not to lc_outside. When reading /> at
the end of an XML element, decrement xml_element_depth.
* gettext-tools/tests/xgettext-javascript-6: Add a test.
Bruno Haible [Sun, 29 Sep 2019 10:58:09 +0000 (12:58 +0200)]
xgettext: Recognize text blocks in Java parser.
* autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add
unictype/syntax-java-whitespace.
* gettext-tools/src/x-java.c: Include unictype.h.
(strip_indent): New function.
(phase5_get): Parse text blocks (Java 13 syntax).
* gettext-tools/tests/xgettext-java-2: Add tests of text blocks.
* gettext-tools/doc/gettext.texi (Java): Mention the text block syntax.
* NEWS: Mention the change.
Bruno Haible [Mon, 16 Sep 2019 00:47:44 +0000 (02:47 +0200)]
xgettext: Recognize 'env' and assignments in Shell scripts.
Reported by Jason Vas Dias <jason.vas.dias@gmail.com>
in <https://lists.gnu.org/archive/html/bug-gettext/2019-08/msg00032.html>.
* gettext-tools/src/x-sh.c (enum word_type): Add t_assignment.
(read_word): Recognize assignments.
(read_command): In a function position, ignore assignments and 'env' tokens.
* gettext-tools/tests/xgettext-sh-7: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.
* NEWS: Mention the change.
Bruno Haible [Sun, 1 Sep 2019 15:51:31 +0000 (17:51 +0200)]
build: Add support for shallow-cloning of subdirectories.
* gitsub.sh (func_usage): Document allowed git options with 'git pull'.
(func_pull): Accept GIT_OPTIONS argument.
(pull): Parse git options before complaining about too many arguments.
Pass the git options to func_pull.
Bruno Haible [Sun, 25 Aug 2019 21:37:44 +0000 (23:37 +0200)]
xgettext: Assume that Python source files are in UTF-8 by default.
Reported by ilias iliadis <apiuano-bugs@yahoo.gr>
at <https://savannah.gnu.org/bugs/?55231>.
* gettext-tools/src/xg-encoding.h (xgettext_global_source_encoding): Allow a
NULL value.
* gettext-tools/src/xg-encoding.c (xgettext_global_source_encoding): Likewise.
* gettext-tools/src/xgettext.c (main): Initialize
xgettext_global_source_encoding with NULL, not "ASCII". Handle a NULL
xgettext_global_source_encoding.
(extract_from_file): Use ASCII as default for xgettext_global_source_encoding.
* gettext-tools/src/x-javascript.c (extract_javascript): Likewise.
* gettext-tools/src/x-python.c (phase2_getc): Signal an error when encountering
an invalid or incomplete UTF-8 character.
(set_current_file_source_encoding): In the error message, use
xgettext_current_file_source_encoding instead of
xgettext_global_source_encoding.
(extract_python): Use UTF-8 as default for xgettext_global_source_encoding.
* gettext-tools/tests/xgettext-python-3: Verify that if the source file has no
magic coding comment but is UTF-8 encoded, xgettext succeeds.
* NEWS: Mention the change.
Bruno Haible [Sun, 25 Aug 2019 17:17:21 +0000 (19:17 +0200)]
Add support for Java format strings in the Formatter syntax.
* gettext-tools/src/message.h (format_type): Add format_java_printf.
(NFORMATS): Increment.
* gettext-tools/src/message.c (format_language, format_language_pretty): Add
entry for format_java_printf.
* gettext-tools/src/format.h (formatstring_java_printf): New declaration.
* gettext-tools/src/format-java.c: Update comments.
* gettext-tools/src/format-java-printf.c: New file.
* gettext-tools/src/format.c (formatstring_parsers): Add entry for
format_java_printf.
* gettext-tools/src/x-java.h (SCANNERS_JAVA): Use formatstring_java_printf.
* gettext-tools/src/x-java.c (init_flag_table_java): Add entries relevant to
format strings in Formatter syntax.
* gettext-tools/src/xgettext.c (xgettext_record_flag): Add support for
format_java_printf.
* gettext-tools/src/FILES: Add format-java-printf.c.
* gettext-tools/src/Makefile.am (FORMAT_SOURCE): Add format-java-printf.c.
* gettext-tools/woe32dll/gettextsrc-exports.c: Export formatstring_java_printf.
* gettext-tools/libgettextpo/Makefile.am (libgettextpo_la_AUXSOURCES): Likewise.
* gettext-tools/tests/xgettext-6 (xg-test6.java): Add test for recognition of
format strings in Formatter syntax.
* gettext-tools/tests/format-java-printf-1: New file.
* gettext-tools/tests/format-java-printf-2: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add them.
* gettext-tools/tests/lang-java: Add two uses of String.format to the program.
* gettext-tools/doc/gettext.texi (PO Files): Document java-printf-format and
no-java-printf-format.
(java-format): Describe both kinds of format strings. Update URLs.
(Java): Mention the second kind of format string as well.
* NEWS: Mention the improvement.
Bruno Haible [Thu, 22 Aug 2019 14:36:59 +0000 (16:36 +0200)]
xgettext: Handle newlines in Lua long bracket literal strings correctly.
Reported by Frans de Jonge <fransdejonge@gmail.com>
at <https://savannah.gnu.org/bugs/?56794>.
* gettext-tools/src/x-lua.c (phase3_get): Test for EOF first. After an opening
long bracket, swallow one newline.
* gettext-tools/tests/xgettext-lua-1: Add tests for newlines in long brackets.
* gettext-tools/tests/xgettext-lua-2: Update comment.
Bruno Haible [Mon, 19 Aug 2019 08:24:30 +0000 (10:24 +0200)]
doc: Fix documentation of gettext, ngettext programs.
* gettext-runtime/doc/rt-gettext.texi: Clarify when the additional newline is
emitted.
* gettext-runtime/doc/rt-ngettext.texi: Remove '\c' from the list of recognized
escape sequences.
Bruno Haible [Sun, 18 Aug 2019 23:34:34 +0000 (01:34 +0200)]
xgettext: Fix parsing of escaped single-quote characters in shell parser.
Reported by Markus Gothe <nietzsche@lysator.liu.se>
at <https://savannah.gnu.org/bugs/?49809>.
* gettext-tools/src/x-sh.c (phase2_getc): Handle the case c == '\''
&& !open_singlequote && !open_doublequote differently.
* gettext-tools/tests/xgettext-sh-1: Add test with an escape single-quote.
Bruno Haible [Sun, 18 Aug 2019 11:27:30 +0000 (13:27 +0200)]
Don't extract Icon values from .desktop files into POT files.
Reported by Piotr Drąg <piotrdrag@gmail.com>
at <https://savannah.gnu.org/support/?108887>
and by Will Thompson <wjt@endlessm.com>
at <https://savannah.gnu.org/bugs/?56543>.
There was a discussion starting at
<https://lists.freedesktop.org/archives/xdg/2019-June/014158.html>.
The most interesting posts in this thread were
<https://lists.freedesktop.org/archives/xdg/2019-June/014164.html>
<https://lists.freedesktop.org/archives/xdg/2019-June/014167.html>.
* gettext-tools/doc/gettext.texi (Icons): New subsubsection.
* gettext-tools/src/read-desktop.c (desktop_add_default_keywords): Don't add
"Icon".
* gettext-tools/src/x-desktop.c: Update comments.
* gettext-tools/doc/xgettext.texi (Desktop): Remove 'Icon' from the list of
extracted keys.
* gettext-tools/tests/xgettext-desktop-2: New file.
* gettext-tools/tests/msgfmt-desktop-3: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add them.
* NEWS: Mention the change.
Bruno Haible [Wed, 14 Aug 2019 18:52:35 +0000 (20:52 +0200)]
libtextstyle: Document the hyperlink support.
* libtextstyle/doc/libtextstyle.texi (The NO_TERM_HYPERLINKS variable): New
section.
(Hyperlinks): New subsection.
(The abstract styled_ostream class): Document styled_ostream_get_hyperlink_ref,
styled_ostream_get_hyperlink_id, styled_ostream_set_hyperlink.
(The term_ostream class): Document term_ostream_get_hyperlink_ref,
term_ostream_get_hyperlink_id, term_ostream_set_hyperlink.
(The html_ostream class): Document html_ostream_get_hyperlink_ref,
html_ostream_set_hyperlink_ref.
* libtextstyle/NEWS: Mention it.
* libtextstyle/gnulib-local/lib/html-ostream.oo.h (struct html_ostream): Add
methods get_hyperlink_ref, set_hyperlink_ref.
* libtextstyle/gnulib-local/lib/html-ostream.oo.c (struct html_ostream): Add
field hyperlink_ref;
(write_attribute_value): New function.
(html_ostream::free): Emit an anchor end if needed.
(html_ostream::get_hyperlink_ref, html_ostream::set_hyperlink_ref): New
functions.
(html_ostream_create): Initialize the hyperlink_ref field.
* libtextstyle/lib/textstyle.h (html_ostream_get_hyperlink_ref,
html_ostream_set_hyperlink_ref): New declarations.
Bruno Haible [Wed, 14 Aug 2019 00:46:36 +0000 (02:46 +0200)]
libtextstyle: Support the NO_COLOR environment variable.
It follows the specification at https://no-color.org/.
The support is in the example programs, not in the function
styled_ostream_create, so that it can be overridden through the command-line
option --color=always.
We only test whether the environment variable is set, not whether its value
is non-empty. POSIX-specified environment variables are treated like unset
when their value is empty; this is because in the old days it was not possible
to unset an environment variable. But nowadays:
- all shells support the 'unset' built-in,
- all platforms that have the setenv() function also have the unsetenv()
function, and
- the 'env' program from GNU coreutils supports --unset=VARIABLE to unset a
variable.
This makes it possible to unset an environment variable that is set by the
parent process.
* libtextstyle/adhoc-tests/hello.c (main): Do not emit styling when the
environment variable NO_COLOR is set.
* libtextstyle/examples/color-filter/filter.c (main): Likewise.
* libtextstyle/examples/color-hello/hello.c (main): Likewise.
* gettext-tools/src/write-catalog.c (msgdomain_list_print): Likewise.
* libtextstyle/doc/libtextstyle.texi (The NO_COLOR variable): New section.
* libtextstyle/NEWS: Mention it.
Bruno Haible [Mon, 12 Aug 2019 01:31:49 +0000 (03:31 +0200)]
xalloc: Add x2realloc function, from gnulib.
* gnulib-local/lib/xalloc.h (x2realloc): New declaration, from
gnulib/lib/xalloc.h.
* gnulib-local/lib/xmalloc.c (x2nrealloc): New function, from
gnulib/lib/xalloc.h.
(x2realloc): New function, from gnulib/lib/xmalloc.c.
* gnulib-local/modules/xalloc (configure.ac): Require AC_C_INLINE.
Bruno Haible [Sun, 28 Jul 2019 17:21:32 +0000 (19:21 +0200)]
xgettext: Fix parsing of JavaScript template literals inside functions.
Reported by Dmitry Vinnik <vinnik.dmitry07@gmail.com>
in <https://savannah.gnu.org/bugs/?56678>.
* gettext-tools/src/x-javascript.c (brace_depths, brace_depths_alloc): New
variables.
(brace_depth): Remove variable.
(new_brace_depth_level): New function.
(phase5_get): Invoke it. Access the top of the brace_depths stack.
(extract_javascript): Don't set brace_depth. Invoke new_brace_depth_level
instead.
* gettext-tools/tests/xgettext-javascript-7: Test template literals inside a
function.
Bruno Haible [Thu, 4 Jul 2019 14:27:33 +0000 (16:27 +0200)]
build: Fix build errors with MSVC.
* gettext-tools/libgettextpo/exported.sh.in: Remove one level of eval.
* gettext-tools/libgettextpo/Makefile.am (config.h): Redirect compiler output to
stderr. Remove symbols that contain an '@'.
* libtextstyle/lib/Makefile.am (config.h): Likewise.
Bruno Haible [Mon, 20 May 2019 19:26:30 +0000 (21:26 +0200)]
Update after gnulib changed.
* gettext-runtime/intl/setlocale.c (search): Optimize away a redundant strcmp()
invocation.
(locales_with_principal_territory): New array.
(langcmp, get_main_locale_with_same_language): New functions.
(locales_with_principal_language): New array.
(terrcmp, get_main_locale_with_same_territory): New functions.
(rpl_setlocale): When setlocale_single failed, try again with a locale that is
more likely to exist. Don't warn if the environment variable SETLOCALE_VERBOSE
is not set.
Bruno Haible [Mon, 20 May 2019 01:04:18 +0000 (03:04 +0200)]
Update after gnulib changed.
* gettext-runtime/m4/intlmacosx.m4 (gt_INTL_MACOSX): Don't test for
CFLocaleCopyCurrent.
* gettext-runtime/intl/localename.c: Remove includes for
HAVE_CFLOCALECOPYCURRENT.
(gl_locale_name_environ, gl_locale_name_default): Remove code for
HAVE_CFLOCALECOPYCURRENT.
Bruno Haible [Sun, 19 May 2019 11:10:06 +0000 (13:10 +0200)]
msgmerge: Fix behaviour of --for-msgfmt on PO files with no translations.
Reported by Don Lawrence <dlawrence@iecok.com>
in <https://lists.freedesktop.org/archives/p11-glue/2019-May/000700.html>
via Daiki Ueno
in <https://lists.gnu.org/archive/html/bug-gettext/2019-05/msg00124.html>.
* gettext-tools/src/msgmerge.c (main): Treat force_po like true if for_msgfmt
is true.
* gettext-tools/tests/msgmerge-26: Add test of PO file with no translations.
Bruno Haible [Sat, 18 May 2019 22:33:19 +0000 (00:33 +0200)]
build: Restore the ability to build gettext-tools separately, part 2.
* gettext-tools/configure.ac: New option --with-installed-csharp-dll.
(USE_INSTALLED_CSHARP_DLL): New conditional.
* gettext-tools/src/Makefile.am (CSHARP_DLL_DIR): New variable.
(msgunfmt.net.exe): Use it.
* configure.ac: Filter out --with-installed-csharp-dll from inherited --help
output.
* PACKAGING: Document that gettext-tools's configure needs to be invoked with
--with-installed-csharp-dll.
Bruno Haible [Sat, 18 May 2019 21:33:06 +0000 (23:33 +0200)]
build: Restore the ability to build gettext-tools separately, part 1.
Reported by Hanspeter Niederstrasser <nieder@users.sourceforge.net>
in <https://savannah.gnu.org/bugs/?56333>.
Code based on patch by Miguel Ángel Arruga Vivas <rosen644835@gmail.com>.
* autogen.sh: Copy libtextstyle.m4 for use by gettext-tools.
* gettext-tools/configure.ac: New option --with-installed-libtextstyle.
(USE_INSTALLED_LIBTEXTSTYLE): New conditional.
* gettext-tools/src/Makefile.am (textstyle.h): Disable rule if
USE_INSTALLED_LIBTEXTSTYLE is true.
(LT_LIBTEXTSTYLE): New variable.
(libgettextsrc_la_LDFLAGS): Use it instead of hardcoding a relative filename of
libtextstyle.la.
* configure.ac: Filter out --with-installed-libtextstyle from inherited --help
output.
* Makefile.am (distcheck-hook): Compare different copies of libtextstyle.m4.
* PACKAGING: Document that gettext-tools's configure needs to be invoked with
--with-installed-libtextstyle.
Bruno Haible [Sat, 11 May 2019 22:21:16 +0000 (00:21 +0200)]
Update bug reporting instructions.
* README: Tell users to report bugs in the bug tracker or by email. Use the
mailing list address, not the alias.
* gettext-runtime/libasprintf/README: Likewise.
* gettext-tools/doc/gettext.texi (Introduction): Likewise.
(Plural forms): Use the mailing list address, not the alias.
* configure.ac (AC_INIT): Use the mailing list address, not the alias.
* gettext-runtime/configure.ac (AC_INIT): Likewise.
* gettext-tools/configure.ac (AC_INIT): Likewise.
* gettext-tools/examples/configure.ac (AC_INIT): Likewise.
* gettext-runtime/po/Makevars (MSGID_BUGS_ADDRESS): Use the mailing list
address, not the alias.
* gettext-tools/po/Makevars (MSGID_BUGS_ADDRESS): Likewise.
* gettext-tools/examples/po/Makefile.am (MSGID_BUGS_ADDRESS): Likewise.
* gettext-tools/examples/hello-*/po/Makevars (MSGID_BUGS_ADDRESS): Likewise.
* gettext-tools/examples/hello-*/po/Makefile.am (MSGID_BUGS_ADDRESS): Likewise.
* gettext-tools/examples/hello-objc-gnustep/po/GNUmakefile (MSGID_BUGS_ADDRESS):
Likewise.
* gettext-tools/examples/hello-c++-kde/hello.cc (main): Likewise.
* gettext-runtime/src/envsubst.c (main): Move URL out of translatable string.
(usage): Tell users to report bugs in the bug tracker or by email. Use the
mailing list address, not the alias.
* gettext-runtime/src/gettext.c: Likewise.
* gettext-runtime/src/ngettext.c: Likewise.
* gettext-tools/src/cldr-plurals.c: Likewise.
* gettext-tools/src/hostname.c: Likewise.
* gettext-tools/src/msgattrib.c: Likewise.
* gettext-tools/src/msgcat.c: Likewise.
* gettext-tools/src/msgcmp.c: Likewise.
* gettext-tools/src/msgcomm.c: Likewise.
* gettext-tools/src/msgconv.c: Likewise.
* gettext-tools/src/msgen.c: Likewise.
* gettext-tools/src/msgexec.c: Likewise.
* gettext-tools/src/msgfilter.c: Likewise.
* gettext-tools/src/msgfmt.c: Likewise.
* gettext-tools/src/msggrep.c: Likewise.
* gettext-tools/src/msginit.c: Likewise.
* gettext-tools/src/msgmerge.c: Likewise.
* gettext-tools/src/msgunfmt.c: Likewise.
* gettext-tools/src/msguniq.c: Likewise.
* gettext-tools/src/recode-sr-latin.c: Likewise.
* gettext-tools/src/urlget.c: Likewise.
* gettext-tools/src/xgettext.c: Likewise.
* gettext-tools/tests/tstgettext.c: Likewise.
* gettext-tools/tests/tstngettext.c: Likewise.
* gettext-tools/misc/autopoint.in (func_usage): Tell users to report bugs in the
bug tracker or by email. Use the mailing list address, not the alias.
* gettext-tools/misc/convert-archive.in (func_usage): Likewise.
* gettext-tools/misc/gettextize.in (func_usage): Likewise.
Bruno Haible [Sun, 5 May 2019 14:59:55 +0000 (16:59 +0200)]
Add unit test for libintl_version.
* gettext-tools/tests/intl-version-prg.c: New file.
* gettext-tools/tests/intl-version: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.
(check_PROGRAMS): Add intl-version-prg.
(intl_version_prg_SOURCES, intl_version_prg_LDADD): New variables.