]> git.ipfire.org Git - thirdparty/gettext.git/log
thirdparty/gettext.git
23 months agoxgettext: Perl: Avoid unbounded nesting_depth growth, part 4.
Bruno Haible [Mon, 18 Sep 2023 18:04:47 +0000 (20:04 +0200)] 
xgettext: Perl: Avoid unbounded nesting_depth growth, part 4.

* gettext-tools/src/x-perl.c: Improve parsing of array dereferences.
(extract_variable): After parsing a braced {variable_name}, increment
varbody_length, so as to not parse the following character. If this character
is a closing parenthesis, is would disturb the enclosing extract_balanced call.

Test case:
==========================================
sub in_multi_expanded($)
{
  if (@{$self}) {
  }
}
==========================================

23 months agoxgettext: Perl: Avoid unbounded nesting_depth growth, part 3.
Bruno Haible [Mon, 18 Sep 2023 17:26:54 +0000 (19:26 +0200)] 
xgettext: Perl: Avoid unbounded nesting_depth growth, part 3.

* gettext-tools/src/x-perl.c: Return from extract_balanced when a subroutine's
definition terminates and that subroutine was defined after a declaration that
ended with a semicolon.
(extract_perl): Pass semicolon_delim=true.

Test case:
==========================================
my %a = 4;

sub b
{
}
==========================================

23 months agoxgettext: Perl: Avoid unbounded nesting_depth growth, part 2.
Bruno Haible [Mon, 18 Sep 2023 17:02:01 +0000 (19:02 +0200)] 
xgettext: Perl: Avoid unbounded nesting_depth growth, part 2.

* gettext-tools/src/x-perl.c: Return from extract_balanced when a subroutine's
definition terminates.
(extract_balanced): Test whether the first token is 'sub'. If so, don't use
the usual symbol parsing and return when a token_type_lbrace was seen.

Test cases:
==========================================
sub import {
}
==========================================
sub import {
  if (!$module_loaded) {
    Texinfo::XSLoader::override("", "");
    Texinfo::XSLoader::override("", "");
    $module_loaded = 1;
  }
  goto &Exporter::import;
}
==========================================

23 months agoxgettext: Perl: Avoid unbounded nesting_depth growth, part 1.
Bruno Haible [Mon, 18 Sep 2023 14:18:23 +0000 (16:18 +0200)] 
xgettext: Perl: Avoid unbounded nesting_depth growth, part 1.

* gettext-tools/src/x-perl.c: Return from extract_balanced when a semicolon
outside parentheses is seen.
(extract_balanced): Add parameters semicolon_delim, eat_semicolon_delim.
All callers changed.

Test case:
=================
use strict;
=================

23 months agoxgettext: Perl: Add ability to debug the nesting_depth.
Bruno Haible [Sun, 17 Sep 2023 15:37:25 +0000 (17:37 +0200)] 
xgettext: Perl: Add ability to debug the nesting_depth.

* gettext-tools/src/x-perl.c (DEBUG_NESTING_DEPTH): New macro.
(extract_balanced): Use it.

23 months agoxgettext: Perl: Refactor.
Bruno Haible [Sun, 17 Sep 2023 15:31:23 +0000 (17:31 +0200)] 
xgettext: Perl: Refactor.

* gettext-tools/src/x-perl.c: Reindent all '#if DEBUG_PERL' lines.

23 months agobuild: Fix "make install" failure on Android.
Bruno Haible [Sun, 17 Sep 2023 19:11:09 +0000 (21:11 +0200)] 
build: Fix "make install" failure on Android.

This patch fixes two problems with "make install" on Android:

1) On this platform, libtool is configured to relink libraries during
"make install".
This leads to a problem during the installation of libgettextsrc: The relink
command that libtool emits has the form

  $CC -shared -fPIC -DPIC .libs/*.o -L$(libdir) ... -lgettextlib ... \
      -o .libs/libgettextsrc-@VERSION@.soT

The option -lgettextlib resolves to $(libdir)/libgettextlib.a, not to
$(libdir)/libgettextlib-@VERSION@.so.
Thus the linker attempts to include many object files from libgettextlib.a
into libgettextsrc-@VERSION@.soT, but some of these reference global variables
in a non-PIC way, and the linker thus complains

  ld.lld: error: relocation R_ARM_REL32 cannot be used against symbol 'program_name'; recompile with -fPIC

2) The installed executables don't have a RUNPATH property that points to the
directory that contains the shared libraries. Thus these executables don't run.

Reported at <https://savannah.gnu.org/patch/index.php?10393>.

* m4/libtool.m4: On Android, fix library_names_spec and
hardcode_libdir_flag_spec.

23 months agodoc: Document how to combine POT files.
Bruno Haible [Sun, 17 Sep 2023 13:04:07 +0000 (15:04 +0200)] 
doc: Document how to combine POT files.

Triggered by <https://savannah.gnu.org/bugs/index.php?64490>.

* gettext-tools/doc/gettext.texi (Combining POTs): New section.

23 months agoxgettext: Avoid a warning 'Charset "CHARSET" is not a portable encoding name'.
Bruno Haible [Sun, 17 Sep 2023 09:54:45 +0000 (11:54 +0200)] 
xgettext: Avoid a warning 'Charset "CHARSET" is not a portable encoding name'.

* gettext-tools/src/po-charset.h (po_lex_charset_set): Add is_pot_role
parameter.
* gettext-tools/src/po-charset.c (po_lex_charset_set): Likewise.
* gettext-tools/src/po-lex.h (gram_pot_role): New declaration.
(lex_start): Add is_pot_role parameter.
* gettext-tools/src/po-lex.c (gram_pot_role): New variable.
(lex_start): Add is_pot_role parameter.
(lex_end): Update.
* gettext-tools/src/po-gram-gen.y (do_callback_message): Pass gram_pot_role to
po_lex_charset_set.
* gettext-tools/src/read-catalog-abstract.h (struct catalog_input_format): Add
is_pot_role parameter to the 'parse' member.
(catalog_reader_parse): Add is_pot_role parameter.
* gettext-tools/src/read-po.c (po_parse): Add is_pot_role parameter.
* gettext-tools/src/read-properties.c (properties_parse): Likewise.
* gettext-tools/src/read-stringtable.c (stringtable_parse): Likewise.
* gettext-tools/src/read-catalog-abstract.c (catalog_reader_parse): Add
is_pot_role parameter.
* gettext-tools/src/x-po.c (extract): Pass is_pot_role as true.
* gettext-tools/src/xgettext.c (read_exclusion_file): Likewise.
* gettext-tools/src/read-catalog.c (read_catalog_stream): Pass is_pot_role as
false.
* gettext-tools/src/msgfmt.c (read_catalog_file_msgfmt): Likewise.

23 months agoFix typo in comment.
Bruno Haible [Sun, 17 Sep 2023 09:00:54 +0000 (11:00 +0200)] 
Fix typo in comment.

* gettext-tools/src/po-lex.h (po_gram_lex): Fix typo in comment.

23 months agobuild: Install auxiliary programs in $(libexecdir), not $(libdir). Part 3.
Bruno Haible [Sun, 17 Sep 2023 08:44:23 +0000 (10:44 +0200)] 
build: Install auxiliary programs in $(libexecdir), not $(libdir). Part 3.

* PACKAGING: Update accordingly.

23 months agoxgettext: Avoid error 'present charset "CHARSET" is not a portable encoding name...
Bruno Haible [Sat, 16 Sep 2023 22:18:47 +0000 (00:18 +0200)] 
xgettext: Avoid error 'present charset "CHARSET" is not a portable encoding name' when possible.

Reported by Arsen Arsenović <arsen@aarsen.me>
at <https://savannah.gnu.org/bugs/?64490>.

This changes the behaviour back to the one from gettext 0.21.1, where this
xgettext invocation produced just a warning.

* gettext-tools/src/msgl-iconv.c (iconv_message_list_internal): Don't give an
error when a PO file has a header entry with charset=CHARSET and is entirely
ASCII.
* gettext-tools/src/msgl-cat.c (catenate_msgdomain_list): Likewise.
* gettext-tools/tests/xgettext-combine-1: New file.
* gettext-tools/tests/xgettext-combine-2: New file.
* gettext-tools/tests/xgettext-combine-3: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add them.

23 months agolibgettextpo: Fix compilation error on Android.
Bruno Haible [Sat, 16 Sep 2023 15:49:23 +0000 (17:49 +0200)] 
libgettextpo: Fix compilation error on Android.

* gettext-tools/libgettextpo/gettext-po.c: Include error.h second.
(orig_error, orig_error_at_line): New variables.
(error, error_at_line): Undefine afterwards.
(po_file_read_v2): Use these variables instead of the error, error_at_line
symbols.

23 months agoFix another misnomer.
Bruno Haible [Sat, 16 Sep 2023 10:50:44 +0000 (12:50 +0200)] 
Fix another misnomer.

* gettext-runtime/intl/Makefile.am (AM_CPPFLAGS): Set BUILDING_LIBRARY instead
of BUILDING_DLL.
* gettext-runtime/intl/intl-compat.c (SHLIB_EXPORTED): Test BUILDING_LIBRARY
instead of BUILDING_DLL.
* gettext-runtime/intl/printf.c (SHLIB_EXPORTED): Likewise.
* gettext-runtime/intl/setlocale.c (SHLIB_EXPORTED): Likewise.

23 months agoFix a misnomer.
Bruno Haible [Sat, 16 Sep 2023 10:32:25 +0000 (12:32 +0200)] 
Fix a misnomer.

* gettext-runtime/configure.ac: Prefer the term "shared library", since the term
"DLL" applies only to Windows.
* gettext-runtime/intl/configure.ac: Likewise.
* gettext-tools/configure.ac: Likewise.
* gettext-runtime/intl/export.h (LIBINTL_SHLIB_EXPORTED): Renamed from
LIBINTL_DLL_EXPORTED. Prefer the term "shared library", since the term "DLL"
applies only to Windows.
* gettext-runtime/intl/Makefile.am (AM_CPPFLAGS): Update comment.
(libgnuintl.h): Insert LIBINTL_SHLIB_EXPORTED instead of LIBINTL_DLL_EXPORTED.
* gettext-runtime/intl/gettextP.h: Use LIBGLOCALE_SHLIB_EXPORTED instead of
LIBGLOCALE_DLL_EXPORTED. Use LIBINTL_SHLIB_EXPORTED instead of
LIBINTL_DLL_EXPORTED.
* gettext-runtime/intl/loadinfo.h (LIBINTL_SHLIB_EXPORTED): Renamed from
LIBINTL_DLL_EXPORTED.
* gettext-runtime/intl/intl-compat.c (SHLIB_EXPORTED): Renamed from
DLL_EXPORTED. Prefer the term "shared library", since the term "DLL" applies
only to Windows.
* gettext-runtime/intl/printf.c (SHLIB_EXPORTED): Likewise.
* gettext-runtime/intl/setlocale.c (SHLIB_EXPORTED): Likewise.
* gettext-tools/woe32dll/export.h: Update comment.

23 months agointl: Improve support for clang.
Bruno Haible [Fri, 15 Sep 2023 22:27:42 +0000 (00:27 +0200)] 
intl: Improve support for clang.

* gettext-runtime/intl/libgnuintl.in.h (_INTL_MAY_RETURN_STRING_ARG): Use
__attribute__ also for clang.

23 months agointl: Don't export the symbol 'rpl_isnanf' on MSVC.
Bruno Haible [Fri, 15 Sep 2023 21:15:19 +0000 (23:15 +0200)] 
intl: Don't export the symbol 'rpl_isnanf' on MSVC.

* gettext-runtime/intl/configure.ac: Define rpl_isnanf to _libintl_isnanf.

23 months agointl: Don't export the symbol 'mbszero' on Windows platforms.
Bruno Haible [Fri, 15 Sep 2023 21:12:34 +0000 (23:12 +0200)] 
intl: Don't export the symbol 'mbszero' on Windows platforms.

* gettext-runtime/intl/configure.ac: Define mbszero to _libintl_mbszero.

23 months agointl: Don't export libintl_hash_string.
Bruno Haible [Fri, 15 Sep 2023 21:09:49 +0000 (23:09 +0200)] 
intl: Don't export libintl_hash_string.

* gettext-runtime/intl/hash-string.h (__hash_string): Expand to
_libintl_hash_string, not libintl_hash_string.

23 months agointl: Fix list of exported symbols (regression 2021-06-19).
Bruno Haible [Fri, 15 Sep 2023 21:06:11 +0000 (23:06 +0200)] 
intl: Fix list of exported symbols (regression 2021-06-19).

Reported by <fxcoudert@gcc.gnu.org>
and Christian Weisgerber <naddy@mips.inka.de>
in <https://savannah.gnu.org/bugs/?64323>
and <https://lists.gnu.org/archive/html/bug-gettext/2023-07/msg00005.html>.
Analyzed by Christian Weisgerber <naddy@mips.inka.de> and
Tijl Coosemans <tijl@FreeBSD.org>.

* gettext-runtime/intl/Makefile.am (AM_CPPFLAGS): Set BUILDING_DLL.
* gettext-runtime/intl/intl-compat.c: Update comments.

23 months agointl: Fix a build error on Android.
Bruno Haible [Fri, 15 Sep 2023 18:54:32 +0000 (20:54 +0200)] 
intl: Fix a build error on Android.

The declaration in Android's <math.h>
  long double frexpl(long double, int*) __RENAME_LDBL(frexp, 3, 21);
has the effect that frexpl.o defines the symbol _libintl_frexp, not
_libintl_frexpl, if config.h contains
  #define frexp _libintl_frexp
  #define frexpl _libintl_frexpl

* gettext-runtime/intl/configure.ac:
If REPLACE_FREXP is 1, don't redirect frexp to _libintl_frexp.
If REPLACE_FREXPL is 1, don't redirect frexpl to _libintl_frexp.

23 months agointl: Annotate *printf functions with __attribute__ __nonnull__.
Bruno Haible [Thu, 14 Sep 2023 11:35:48 +0000 (13:35 +0200)] 
intl: Annotate *printf functions with __attribute__ __nonnull__.

* gettext-runtime/intl/libgnuintl.in.h (_INTL_ARG_NONNULL): New macro.
(fprintf, vfprintf, printf, vprintf, sprintf, vsprintf, snprintf, vsnprintf,
asprintf, vasprintf, fwprintf, vfwprintf, wprintf, vwprintf, swprintf,
vswprintf): Annotate with _INTL_ARG_NONNULL.

23 months agointl: Annotate *printf functions with __attribute__ __format__.
Bruno Haible [Thu, 14 Sep 2023 09:13:22 +0000 (11:13 +0200)] 
intl: Annotate *printf functions with __attribute__ __format__.

Reported by Pierre Ossman <ossman@cendio.se> at
<https://savannah.gnu.org/bugs/?64384>.

* gettext-runtime/intl/libgnuintl.in.h (_INTL_ATTRIBUTE_FORMAT,
_INTL_ATTRIBUTE_SPEC_PRINTF_STANDARD, _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD):
New macros.
(fprintf, vfprintf, printf, vprintf, sprintf, vsprintf, snprintf, vsnprintf,
asprintf, vasprintf): Annotate with _INTL_ATTRIBUTE_FORMAT_PRINTF_STANDARD.
* gettext-runtime/intl/printf.c: Update comment.

23 months agointl: Don't compile relocatable.c any more.
Bruno Haible [Wed, 13 Sep 2023 21:11:52 +0000 (23:11 +0200)] 
intl: Don't compile relocatable.c any more.

The library does not need relocatable.h any more since today.

As a side effect, libintl.la gets installed again and "make uninstall" erases
the installed libintl.{a,so} again (regressions from 2021-06-20).
Reported by David Bohman <debohman@gmail.com> at
<https://savannah.gnu.org/bugs/?64536>.

* autogen.sh (GNULIB_MODULES_LIBINTL): Remove relocatable-lib-lgpl.
* gnulib-local/modules/gettext-runtime-intl-misc (Makefile.am): Don't augment
AM_CPPFLAGS.
* gettext-runtime/intl/configure.ac: Don't set enable_relocatable.
Don't define the C symbols relocate, relocate2.
* gettext-runtime/intl/compat.c: New file.
* gettext-runtime/intl/Makefile.am: Update comments.
(LIBINTLSOURCES): Add compat.c.
(compat.lo): New rule.

23 months agointl: Use a locale.alias file only on glibc systems.
Bruno Haible [Wed, 13 Sep 2023 12:03:21 +0000 (14:03 +0200)] 
intl: Use a locale.alias file only on glibc systems.

On systems without glibc, it makes no sense if libintl supports locale name
aliases that the system's setlocale() does not support. Therefore better
disable the locale.alias processing on these platforms.

Also, stop installing locale.alias, because on systems without glibc we won't
read it any more, and on systems with glibc we need to use the preinstalled
one in /usr/share/locale/locale.alias.

* gettext-runtime/intl/localealias.c: Don't include relocatable.h.
(relocate, relocate2): Remove macros.
(LOCALE_ALIAS_PATH): Define a fallback.
(_nl_expand_alias): Simplify on systems without glibc.
(read_alias_file, extend_alias_table, alias_compare): Don't define on systems
without glibc.
* gettext-runtime/intl/Makefile.am (AM_CPPFLAGS): Don't set LOCALE_ALIAS_PATH.
(EXTRA_DIST): Remove locale.alias, ref-add.sin, ref-del.sin.
(MOSTLYCLEANFILES): Remove ref-add.sed, red-del.sed.
(ref-add.sed, ref-del.sed, install-data-aliasfile, installdirs-aliasfile,
uninstall-aliasfile): Remove rules.
* gettext-runtime/intl/locale.alias: Remove file.
* gettext-runtime/intl/ref-add.sin: Remove file.
* gettext-runtime/intl/ref-del.sin: Remove file.
* gettext-tools/src/Makefile.am (aliaspath): Remove variable.
(DEFS): Don't set LOCALE_ALIAS_PATH.
* PACKAGING: Don't mention locale.alias.

23 months agointl: Clarify the role of locale.alias.
Bruno Haible [Wed, 13 Sep 2023 11:06:10 +0000 (13:06 +0200)] 
intl: Clarify the role of locale.alias.

This is part of the patch
<https://sourceware.org/pipermail/libc-alpha/2023-September/151524.html>.

* gettext-runtime/intl/localealias.c: Explain the form and the purpose of the
locale.alias file.

23 months agointl: Fix build failure with "make -j".
Bruno Haible [Tue, 12 Sep 2023 09:33:41 +0000 (11:33 +0200)] 
intl: Fix build failure with "make -j".

Reported by Christian Weisgerber <naddy@mips.inka.de> at
<https://lists.gnu.org/archive/html/bug-gettext/2023-09/msg00005.html>.

* gettext-runtime/intl/Makefile.am (langprefs.lo, log.lo): Depend on gettextP.h
and its subordinate includes.

23 months agointl: Treat C.UTF-8 locale like C locale.
Bruno Haible [Sun, 10 Sep 2023 18:33:09 +0000 (20:33 +0200)] 
intl: Treat C.UTF-8 locale like C locale.

The wiki page https://sourceware.org/glibc/wiki/Proposals/C.UTF-8
says that "Setting LC_ALL=C.UTF-8 will ignore LANGUAGE just like it
does with LC_ALL=C." This is now implemented in glibc. Implement it
for other platforms as well.

* gettext-runtime/intl/dcigettext.c (DCIGETTEXT, guess_category_value): Treat
C.<encoding> locale like the C locale.
* gettext-runtime/NEWS: Mention it.
* NEWS: Likewise.
* gettext-tools/tests/intl-0: New file, based on gettext-tools/tests/intl-1.
* gettext-tools/tests/Makefile.am (TESTS): Add it.

23 months agoSync woe32dll/export.h with GNU libiconv and GNU libunistring.
Bruno Haible [Thu, 7 Sep 2023 11:46:06 +0000 (13:46 +0200)] 
Sync woe32dll/export.h with GNU libiconv and GNU libunistring.

* gettext-tools/woe32dll/export.h: Update comments. Correct indentation.

23 months agoUpdate after gnulib changed.
Bruno Haible [Wed, 6 Sep 2023 19:47:00 +0000 (21:47 +0200)] 
Update after gnulib changed.

23 months agoUpdate to the newest gnulib.
Bruno Haible [Wed, 6 Sep 2023 19:41:23 +0000 (21:41 +0200)] 
Update to the newest gnulib.

23 months agoDon't export symbols from static object files on Windows.
Bruno Haible [Wed, 6 Sep 2023 19:13:25 +0000 (21:13 +0200)] 
Don't export symbols from static object files on Windows.

* gettext-tools/configure.ac (DLL_VARIABLE): Test DLL_EXPORT, not WOE32DLL.
(WOE32DLL): Don't define as a C macro.
* gettext-runtime/configure.ac: Likewise.
(DLL_VARIABLE): Drop special assumption regarding 'exit_failure'.

23 months agolibtextstyle: Don't export symbols from static MSVC .obj files.
Bruno Haible [Wed, 6 Sep 2023 18:59:36 +0000 (20:59 +0200)] 
libtextstyle: Don't export symbols from static MSVC .obj files.

* libtextstyle/lib/Makefile.am (config.h): Don't alias isatty to
libtextstyle_isatty here, before the Windows header files have been included.
* libtextstyle/gnulib-local/lib/isatty.c.diff: New file.
* libtextstyle/Makefile.am (EXTRA_DIST): Add it.

23 months agointl: Don't export symbols from static MSVC .obj files.
Bruno Haible [Wed, 6 Sep 2023 18:59:03 +0000 (20:59 +0200)] 
intl: Don't export symbols from static MSVC .obj files.

* gettext-runtime/intl/configure.ac (WOE32DLL): Set to 1 or 0, not 'yes' or
'no'. Don't define as C macro any more.
(DLL_VARIABLE): Test DLL_EXPORT, not _DLL.
* gettext-runtime/intl/export.h: Use the value of WOE32DLL at configure time.
Set LIBINTL_DLL_EXPORTED to empty on MSVC when DLL_EXPORT is not defined.
* gettext-runtime/intl/Makefile.am (libgnuintl.h): Substitute the value of
@WOE32DLL@.
* gettext-runtime/intl/intl-compat.c (DLL_EXPORTED): Set to empty on MSVC when
DLL_EXPORT is not defined.
* gettext-runtime/intl/printf.c (DLL_EXPORTED): Likewise.
* gettext-runtime/intl/setlocale.c (DLL_EXPORTED): Likewise.

23 months agoRecognize the *-*-windows* config triplets introduced on 2023-06-26.
Bruno Haible [Wed, 6 Sep 2023 15:13:26 +0000 (17:13 +0200)] 
Recognize the *-*-windows* config triplets introduced on 2023-06-26.

* libtextstyle/lib/Makefile.am: Treat windows* as equivalent to mingw*.

23 months agoRecognize the *-*-windows* config triplets introduced on 2023-06-26.
Bruno Haible [Wed, 30 Aug 2023 12:21:46 +0000 (14:21 +0200)] 
Recognize the *-*-windows* config triplets introduced on 2023-06-26.

* gettext-runtime/configure.ac: Treat windows* as equivalent to mingw*.
* gettext-runtime/intl/configure.ac: Likewise.
* gettext-runtime/libasprintf/configure.ac: Likewise.
* gettext-tools/configure.ac: Likewise.
* gettext-tools/m4/locale-de.m4 (gt_LOCALE_DE_UTF8): Likewise.
* libtextstyle/configure.ac: Likewise.
* m4/woe32-dll.m4 (gl_WOE32_DLL): Likewise.

2 years agomsgmerge: Deprecate option '--sort-output'.
Bruno Haible [Fri, 14 Jul 2023 16:23:06 +0000 (18:23 +0200)] 
msgmerge: Deprecate option '--sort-output'.

Reported by Ben Siemerink <gnu@mail.qoben.com> in
<https://savannah.gnu.org/bugs/?61249>.

* gettext-tools/src/msgmerge.c (main): Warn when option '--sort-output' is used.
(usage): Mark the option '--sort-output' deprecated.
* gettext-tools/doc/msgmerge.texi: Likewise.
* NEWS: Mention it.

2 years agoImprove support for GtkBuilder 4.
Bruno Haible [Fri, 14 Jul 2023 16:11:10 +0000 (18:11 +0200)] 
Improve support for GtkBuilder 4.

Reported by Stuart <stuart.a.hayhurst@gmail.com> in
<https://lists.gnu.org/archive/html/bug-gettext/2023-07/msg00010.html>.

* gettext-tools/its/gtkbuilder.its: Recognize translatable="1" and similar as
equivalent to translatable="yes".
* NEWS: Mention it.

2 years agoUpdate the installation instructions for Windows.
Bruno Haible [Thu, 29 Jun 2023 13:19:10 +0000 (15:19 +0200)] 
Update the installation instructions for Windows.

* INSTALL.windows: Add a note about MSYS2.

2 years agobuild: Stop using the gnulib module 'gettext'. Part 2.
Bruno Haible [Fri, 23 Jun 2023 06:41:34 +0000 (08:41 +0200)] 
build: Stop using the gnulib module 'gettext'. Part 2.

* Makefile.am (distcheck-hook): Remove checks of nls.m4 and progtest.m4.

2 years agobuild: Ensure that makeinfo ≥ 6.8 checks the @menu structure.
Bruno Haible [Thu, 22 Jun 2023 23:41:41 +0000 (01:41 +0200)] 
build: Ensure that makeinfo â‰¥ 6.8 checks the @menu structure.

See <https://lists.gnu.org/archive/html/bug-texinfo/2023-06/msg00015.html>.

* gettext-tools/doc/Makefile.am (MAKEINFO): Add option
"-c CHECK_NORMAL_MENU_STRUCTURE=1".

2 years agoFix lang-python-* failures when a traditional French locale is present.
Bruno Haible [Mon, 19 Jun 2023 16:33:36 +0000 (18:33 +0200)] 
Fix lang-python-* failures when a traditional French locale is present.

This is caused by the new UTF-8 encoded messages in .mo files, together
with a bug in gettext.py from Python 2.7 that prohibits reencoding of the
looked-up messages at run time.

* gettext-tools/tests/lang-python-1: Instead of conditionally skipping the test
in the $LOCALE_FR_UTF8 locale, conditionally skip the test in the $LOCALE_FR
locale.
* gettext-tools/tests/lang-python-2: Likewise.

2 years agobuild: Stop using the gnulib module 'gettext'.
Bruno Haible [Mon, 19 Jun 2023 15:22:58 +0000 (17:22 +0200)] 
build: Stop using the gnulib module 'gettext'.

This avoids possible trouble due to divergences between gettext and gnulib.

* autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Remove 'gettext'.
Avoid an error message if gettext-tools/gnulib-m4/po.m4 does not yet exist.

2 years agobuild: Silence most warnings from gcc 11.
Bruno Haible [Mon, 19 Jun 2023 13:05:34 +0000 (15:05 +0200)] 
build: Silence most warnings from gcc 11.

* m4/more-warnings.m4 (gt_MORE_WARNINGS): With gcc 11 or older, silence three
more types of warnings.

2 years agobuild: Remove redundant .m4 file.
Bruno Haible [Mon, 19 Jun 2023 11:22:19 +0000 (13:22 +0200)] 
build: Remove redundant .m4 file.

* gettext-runtime/m4/intlmacosx.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.
* Makefile.am (distcheck-hook): Don't check it.
* gettext-tools/m4/Makefile.am (aclocal_DATA): Take it from the
gettext-runtime/gnulib-m4/ directory.

2 years agobuild: Remove redundant .m4 file.
Bruno Haible [Mon, 19 Jun 2023 10:52:46 +0000 (12:52 +0200)] 
build: Remove redundant .m4 file.

* autogen.sh (GNULIB_MODULES_LIBINTL): Add iconv.
* gettext-runtime/m4/iconv.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.
* Makefile.am (distcheck-hook): Don't check it.
* gettext-tools/m4/Makefile.am (aclocal_DATA): Take it from the
gettext-runtime/gnulib-m4/ directory.

2 years agobuild: Move a .m4 file to where it belongs.
Bruno Haible [Mon, 19 Jun 2023 10:12:57 +0000 (12:12 +0200)] 
build: Move a .m4 file to where it belongs.

* autogen.sh: Pass '-I m4' when generating gettext-runtime/intl/configure.
* gettext-runtime/intl/m4/intdiv0.m4: Moved here from
gettext-runtime/m4/intdiv0.m4.
* gettext-runtime/intl/Makefile.am (ACLOCAL_AMFLAGS): Add '-I m4'.
(EXTRA_DIST): Add m4/intdiv0.m4.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove intdiv0.m4.

2 years agobuild: Remove redundant .m4 file.
Bruno Haible [Mon, 19 Jun 2023 10:04:40 +0000 (12:04 +0200)] 
build: Remove redundant .m4 file.

* gettext-runtime/m4/inttypes_h.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.
* Makefile.am (distcheck-hook): Don't check it.

2 years agobuild: Remove redundant .m4 file.
Bruno Haible [Mon, 19 Jun 2023 09:59:02 +0000 (11:59 +0200)] 
build: Remove redundant .m4 file.

* gettext-runtime/intl/configure.ac: Don't invoke gl_AC_HEADER_STDINT_H.
* gettext-runtime/m4/stdint_h.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.
* Makefile.am (distcheck-hook): Don't check it.

2 years agobuild: Simplify.
Bruno Haible [Mon, 19 Jun 2023 09:52:23 +0000 (11:52 +0200)] 
build: Simplify.

* gettext-runtime/intl/configure.ac: Inline the gt_INTL_SUBDIR_CORE macro.
* gettext-runtime/m4/intl.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.

2 years agobuild: Assume that <stdint.h> or <inttypes.h> defines uintmax_t.
Bruno Haible [Mon, 19 Jun 2023 09:43:49 +0000 (11:43 +0200)] 
build: Assume that <stdint.h> or <inttypes.h> defines uintmax_t.

OpenBSD has it since OpenBSD 3.9 (2006).

* gettext-runtime/m4/intl.m4 (gt_INTL_SUBDIR_CORE): Don't invoke
gl_AC_TYPE_UINTMAX_T.
* gettext-runtime/m4/uintmax_t.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.

2 years agobuild: Remove unused .m4 file.
Bruno Haible [Mon, 19 Jun 2023 09:24:31 +0000 (11:24 +0200)] 
build: Remove unused .m4 file.

* gettext-runtime/m4/intmax.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.

2 years agobuild: Remove redundant .m4 file.
Bruno Haible [Mon, 19 Jun 2023 09:21:01 +0000 (11:21 +0200)] 
build: Remove redundant .m4 file.

* gettext-runtime/m4/size_max.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.
* Makefile.am (distcheck-hook): Don't check it.

2 years agobuild: Remove redundant .m4 file.
Bruno Haible [Mon, 19 Jun 2023 08:57:15 +0000 (10:57 +0200)] 
build: Remove redundant .m4 file.

* gettext-runtime/libasprintf/configure.ac: Don't invoke gl_XSIZE.
* gettext-runtime/m4/xsize.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.
* Makefile.am (distcheck-hook): Don't check it.

2 years agobuild: Remove redundant .m4 file.
Bruno Haible [Mon, 19 Jun 2023 09:16:46 +0000 (11:16 +0200)] 
build: Remove redundant .m4 file.

* gettext-runtime/m4/flexmember.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.
* Makefile.am (distcheck-hook): Don't check it.

2 years agobuild: Remove redundant .m4 file.
Bruno Haible [Mon, 19 Jun 2023 09:16:00 +0000 (11:16 +0200)] 
build: Remove redundant .m4 file.

* gettext-runtime/m4/fcntl-o.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.
* Makefile.am (distcheck-hook): Don't check it.

2 years agobuild: Install auxiliary programs in $(libexecdir), not $(libdir). Part 2.
Bruno Haible [Sun, 18 Jun 2023 15:33:19 +0000 (17:33 +0200)] 
build: Install auxiliary programs in $(libexecdir), not $(libdir). Part 2.

* gettext-tools/src/user-email.sh.in: Use libexecdir instead of libdir.

2 years agobuild: Install auxiliary programs in $(libexecdir), not $(libdir).
Bruno Haible [Sun, 18 Jun 2023 13:50:06 +0000 (15:50 +0200)] 
build: Install auxiliary programs in $(libexecdir), not $(libdir).

The GNU Coding Standards say that auxiliary programs should be installed in a
subdir of $(libexecdir).
<https://www.gnu.org/prep/standards/html_node/Directory-Variables.html>

Originally, I did not do this because I also wanted to follow the Linux
Filesystem Hierarchy Standard, which in version 2 did not support /usr/libexec.
This has changed in 2015: The FHS version 3 now allows installation into
/usr/libexec.
<https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s07.html>

Reported by Bastien Roucariès <rouca@debian.org> in
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1032010>.

* gettext-tools/src/Makefile.am (pkglibexecdir): New variable.
(DEFS): Pass a LIBEXECDIR macro.
(hostname_CPPFLAGS, urlget_CPPFLAGS, cldr_plurals_CPPFLAGS, hostname_LDFLAGS,
urlget_LDFLAGS, cldr_plurals_LDFLAGS, install-exec-local, installdirs-local,
uninstall-local): Use pkglibexecdir instead of pkglibdir.
* gettext-tools/src/msginit.c (project_id, project_id_version, plural_forms):
Test $GETTEXTLIBEXECDIR_SRCDIR instead of $GETTEXTLIBDIR_SRCDIR. Use LIBEXECDIR
instead of LIBDIR.
(get_user_email, language_team_address): Use LIBEXECDIR instead of LIBDIR.
* gettext-tools/tests/msginit-3: Set GETTEXTLIBEXECDIR_SRCDIR instead of
GETTEXTLIBDIR_SRCDIR.
* gettext-tools/tests/msginit-4: Likewise. Set GETTEXTLIBEXECDIR_BUILDDIR
instead of GETTEXTLIBDIR_BUILDDIR.

2 years agobuild: Remove a .m4 file that duplicates gnulib functionality.
Bruno Haible [Sun, 18 Jun 2023 13:22:52 +0000 (15:22 +0200)] 
build: Remove a .m4 file that duplicates gnulib functionality.

* gettext-runtime/m4/printf-posix.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.
* gettext-runtime/intl/configure.ac: Use gl_PRINTF_POSITIONS instead of
gt_PRINTF_POSIX.
* gettext-runtime/libasprintf/configure.ac: Likewise.

2 years agobuild: Remove unused and outdated .m4 file.
Bruno Haible [Sun, 18 Jun 2023 13:04:15 +0000 (15:04 +0200)] 
build: Remove unused and outdated .m4 file.

* gettext-runtime/m4/visibility.m4: Remove file.
* gettext-runtime/m4/Makefile.am (EXTRA_DIST): Remove it.

2 years agoUpdate release steps.
Bruno Haible [Sat, 17 Jun 2023 13:54:48 +0000 (15:54 +0200)] 
Update release steps.

2 years agoRelease 0.22 v0.22
Bruno Haible [Sat, 17 Jun 2023 12:21:09 +0000 (14:21 +0200)] 
Release 0.22

2 years agoUpdate release steps.
Bruno Haible [Sat, 17 Jun 2023 10:59:46 +0000 (12:59 +0200)] 
Update release steps.

2 years agoexamples: Use infrastructure from gettext version 0.22.
Bruno Haible [Thu, 15 Jun 2023 23:49:32 +0000 (01:49 +0200)] 
examples: Use infrastructure from gettext version 0.22.

* gettext-tools/examples/hello-*/configure.ac: Use AM_GNU_GETTEXT_VERSION with
version 0.22.
* gettext-tools/examples/hello-c++-kde/configure.in.in: Likewise.
* gettext-tools/examples/hello-*/m4/Makefile.am: Update .m4 file list.
* gettext-tools/examples/hello-*/autoclean.sh: Likewise.

2 years agoUpdate translations from TP.
Bruno Haible [Thu, 15 Jun 2023 18:40:13 +0000 (20:40 +0200)] 
Update translations from TP.

* gettext-runtime/po/*.po: Update from TP.
* gettext-runtime/po/LINGUAS: Add ka.
* gettext-tools/po/*.po: Update from TP.
* gettext-tools/po/LINGUAS: Add hr.
* gettext-tools/examples/po/*.po: Update from TP.

2 years agoPrepare for 0.22 release.
Bruno Haible [Thu, 15 Jun 2023 18:09:46 +0000 (20:09 +0200)] 
Prepare for 0.22 release.

* gettext-runtime/doc/matrix.texi: Update from TP.
* gettext-runtime/doc/nls.texi (STATUS): Update.
* gettext-runtime/intl/libgnuintl.in.h (LIBINTL_VERSION): Bump.
* gettext-tools/libgettextpo/gettext-po.in.h (LIBGETTEXTPO_VERSION): Bump.
* libtextstyle/version.sh: Update VERSION_NUMBER, RELEASE_DATE.
* gettext-runtime/po/Makefile.in.in: Bump Origin version.
* gettext-runtime/m4/gettext.m4: Update version at the first line.
* gettext-runtime/m4/intl.m4: Likewise.
* NEWS, libtextstyle/NEWS: Update.
* libtextstyle/lib/Makefile.am (LTV_*): Bump to 2:0:2.
* gettext-tools/libgettextpo/Makefile.am (LTV_*): Bump to 5:9:5.
* gettext-tools/emacs/po-mode.el (po-mode-version-string): Bump.
* gettext-tools/configure.ac (ARCHIVE_VERSION): Bump to 0.22.
* gettext-tools/misc/autopoint.in: Allow version 0.22.

2 years agoUpdate copyright year in --version output.
Bruno Haible [Thu, 15 Jun 2023 18:00:40 +0000 (20:00 +0200)] 
Update copyright year in --version output.

* gettext-runtime/src/envsubst.c (main): Update copyright year in --version
output.
* gettext-runtime/src/gettext.c (main): Likewise.
* gettext-runtime/src/ngettext.c (main): Likewise.
* gettext-runtime/src/gettext.sh.in (func_version): Likewise.
* gettext-tools/src/cldr-plurals.c (main): Likewise.
* gettext-tools/src/hostname.c (main): Likewise.
* gettext-tools/src/msgattrib.c (main): Likewise.
* gettext-tools/src/msgcat.c (main): Likewise.
* gettext-tools/src/msgcmp.c (main): Likewise.
* gettext-tools/src/msgcomm.c (main): Likewise.
* gettext-tools/src/msgconv.c (main): Likewise.
* gettext-tools/src/msgen.c (main): Likewise.
* gettext-tools/src/msgexec.c (main): Likewise.
* gettext-tools/src/msgfilter.c (main): Likewise.
* gettext-tools/src/msgfmt.c (main): Likewise.
* gettext-tools/src/msggrep.c (main): Likewise.
* gettext-tools/src/msginit.c (main): Likewise.
* gettext-tools/src/msgmerge.c (main): Likewise.
* gettext-tools/src/msgunfmt.c (main): Likewise.
* gettext-tools/src/msguniq.c (main): Likewise.
* gettext-tools/src/recode-sr-latin.c (main): Likewise.
* gettext-tools/src/urlget.c (main): Likewise.
* gettext-tools/src/xgettext.c (main): Likewise.
* gettext-tools/misc/autopoint.in (func_version): Likewise.
* gettext-tools/misc/convert-archive.in (func_version): Likewise.
* gettext-tools/misc/gettextize.in (func_version): Likewise.

2 years agoUpdate POTFILES.in.
Bruno Haible [Thu, 15 Jun 2023 15:19:25 +0000 (17:19 +0200)] 
Update POTFILES.in.

* gettext-runtime/po/POTFILES.in: Update.
* gettext-tools/po/POTFILES.in: Update.

2 years agointl: Fix translation lookup failure when wbindtextdomain is used.
Bruno Haible [Sat, 17 Jun 2023 08:49:04 +0000 (10:49 +0200)] 
intl: Fix translation lookup failure when wbindtextdomain is used.

Reported by Luca Bacci <luca.bacci@outlook.com> at
<https://savannah.gnu.org/bugs/index.php?64311>.

The bug showed up when a call to bindtextdomain() with an absolute directory
and a call to wbindtextdomain() for a different domain was in effect.
Translations in the first referenced domain worked, translations in the second
referenced domain did not.

* gettext-runtime/intl/loadinfo.h (struct loaded_l10nfile, _nl_make_l10nflist):
Improve comments.
* gettext-runtime/intl/finddomain.c (_nl_loaded_domains): Likewise.
* gettext-runtime/intl/l10nflist.c (_nl_make_l10nflist): Fix code that looks up
the loaded_l10nfile in the given list, and make it more maintainable.
* gettext-tools/tests/intl-6: Improve comments.
* gettext-tools/tests/intl-6-prg.c (main): Restructure.
* gettext-tools/tests/intl-7: New file, based on gettext-tools/tests/intl-6.
* gettext-tools/tests/intl-6-prg.c: New file, based on
gettext-tools/tests/intl-6-prg.c.
* gettext-tools/tests/Makefile.am (TESTS): Add intl-7.
(check_PROGRAMS): Add intl-7-prg.
(intl_7_prg_SOURCES, intl_7_prg_LDADD): New variables.

2 years agoAdd comments about tests that fail on Solaris derivatives.
Bruno Haible [Thu, 15 Jun 2023 15:04:12 +0000 (17:04 +0200)] 
Add comments about tests that fail on Solaris derivatives.

* gettext-tools/tests/msgmerge-compendium-6: Add comment about Solaris 11
derivatives.

2 years agoAdd comments about tests that fail on Alpine Linux.
Bruno Haible [Thu, 15 Jun 2023 15:03:19 +0000 (17:03 +0200)] 
Add comments about tests that fail on Alpine Linux.

* gettext-tools/tests/format-c-5: Add comment about musl libc.

2 years agoMake internationalization tests stricter on Solaris 11 systems.
Bruno Haible [Thu, 15 Jun 2023 15:00:56 +0000 (17:00 +0200)] 
Make internationalization tests stricter on Solaris 11 systems.

* gettext-tools/tests/format-c-5-prg.c (main): Don't expect an Arabic digit
output in a locale other than Farsi.
* gettext-tools/tests/format-c-5: Try an Arabic locale as well.

2 years agoFix a bug in the last commit.
Bruno Haible [Thu, 15 Jun 2023 21:33:50 +0000 (23:33 +0200)] 
Fix a bug in the last commit.

* gettext-tools/src/write-mo.c (write_table): Include the number of system
dependent string pairs in the computation of the hash table's size.
* gettext-tools/tests/msgfmt-20: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.

2 years agoMake translations of strings with <inttypes.h> macros work with musl libc.
Bruno Haible [Thu, 15 Jun 2023 07:47:15 +0000 (09:47 +0200)] 
Make translations of strings with <inttypes.h> macros work with musl libc.

* gettext-tools/src/write-mo.h (no_redundancy): New declaration.
* gettext-tools/src/write-mo.c (SIZEOF): New macro.
(no_redundancy): New variable.
(struct sysdep_instantiation_rule): New type.
(useful_instantiation_rules): New variable.
(concat_prefix_cs, get_sysdep_segment_value): New functions.
(write_table): Add a second pass, that instantiates system dependent string
pairs.
* gettext-tools/src/msgfmt.c (long_options): Add --no-redundancy.
(main): Handle the --no-redundancy option.
(usage): Document the --no-redundancy option.
* gettext-tools/doc/msgfmt.texi: Document the --no-redundancy option.
* gettext-tools/tests/msgfmt-12: Test the msgfmt result with and without
--no-redundancy.
* gettext-tools/tests/msgunfmt-2: Pass option --no-redundancy to msgfmt.
* NEWS: Mention the change.
* gettext-tools/tests/format-c-3: Include the redundant instantiations in the
expected result of msgunfmt.
* gettext-tools/tests/format-c-4: Likewise.

2 years agoSimplify code.
Bruno Haible [Thu, 15 Jun 2023 07:34:07 +0000 (09:34 +0200)] 
Simplify code.

* gettext-tools/src/locating-rule.c: Don't include mem-hash-map.h.

2 years agomem-hash-map: Fix a left-over from 2001-11-20.
Bruno Haible [Thu, 15 Jun 2023 07:30:44 +0000 (09:30 +0200)] 
mem-hash-map: Fix a left-over from 2001-11-20.

* gnulib-local/lib/mem-hash-map.h (hash_init): Fix comment.
* gnulib-local/lib/mem-hash-map.c (hash_init): Likewise.
* gettext-tools/src/msgl-fsearch.c (message_fuzzy_index_alloc): Don't test the
return value of hash_init.

2 years agoChange some tests to give more insights.
Bruno Haible [Wed, 14 Jun 2023 13:06:34 +0000 (15:06 +0200)] 
Change some tests to give more insights.

* gettext-tools/tests/format-c-3-prg.c (_): Remove macro.
(main): Test also a simple translation.
* gettext-tools/tests/format-c-4-prg.c: Likewise.
* gettext-tools/tests/format-c-5-prg.c: Likewise.
* gettext-tools/tests/format-c-3: Update.
* gettext-tools/tests/format-c-4: Likewise.
* gettext-tools/tests/format-c-5: Likewise.

2 years agoFix another system-tests failure on musl libc.
Bruno Haible [Wed, 14 Jun 2023 11:56:38 +0000 (13:56 +0200)] 
Fix another system-tests failure on musl libc.

* gettext-tools/tests/intl-3: With gettext from musl libc, use a different
expected output.

2 years agoAvoid the need for charset conversion at run time on musl libc.
Bruno Haible [Wed, 14 Jun 2023 11:56:24 +0000 (13:56 +0200)] 
Avoid the need for charset conversion at run time on musl libc.

This fixes 1 system-tests failure (intl-2) and 3 tests failures (lang-c,
lang-c++, lang-sh).

* gettext-tools/src/write-mo.h (no_convert_to_utf8): New declaration.
(msgdomain_write_mo): Add a 4th parameter.
* gettext-tools/src/write-mo.c: Include po-charset.h, msgl-iconv.h.
(no_convert_to_utf8): New variable.
(msgdomain_write_mo): Add a 4th parameter. Convert the message list to UTF-8.
* gettext-tools/src/msgfmt.c (long_options): Add --no-convert.
(main): Handle the --no-convert option. Pass a 4th argument to
msgdomain_write_mo.
(usage): Document the --no-convert option.
* gettext-tools/doc/msgfmt.texi: Document the --no-convert option.
* gettext-tools/doc/gettext.texi (MO Files): Document the character encoding of
strings in MO files.
* gettext-tools/tests/msgfmt-5: Use msgfmt option --no-convert.
* gettext-tools/tests/msgfmt-12: Likewise.
* gettext-tools/tests/lang-pascal: Likewise.
* NEWS: Mention the change.

2 years agoTrivial refactoring.
Bruno Haible [Wed, 14 Jun 2023 07:37:18 +0000 (09:37 +0200)] 
Trivial refactoring.

* gettext-tools/src/msgcmp.c (compare): Pass po_charset_utf8 to
iconv_msgdomain_list.
* gettext-tools/src/msgmerge.c (merge): Likewise.
* gettext-tools/src/xgettext.c (main): Likewise.

2 years agoMake internationalization tests stricter on musl systems.
Bruno Haible [Tue, 13 Jun 2023 23:43:50 +0000 (01:43 +0200)] 
Make internationalization tests stricter on musl systems.

* gettext-tools/m4/locale-de.m4 (gt_LOCALE_DE_UTF8): On musl systems, set
LOCALE_DE_UTF8 to "de_DE.UTF-8" instead of "none".

2 years agoUpdate after gnulib changed.
Bruno Haible [Thu, 15 Jun 2023 08:29:53 +0000 (10:29 +0200)] 
Update after gnulib changed.

2 years agoUpdate to the newest gnulib
Bruno Haible [Thu, 15 Jun 2023 08:26:11 +0000 (10:26 +0200)] 
Update to the newest gnulib

2 years agomsgfmt: Silence javac note "uses unchecked or unsafe operations".
Bruno Haible [Sun, 11 Jun 2023 22:45:35 +0000 (00:45 +0200)] 
msgfmt: Silence javac note "uses unchecked or unsafe operations".

* gettext-tools/src/write-java.c (write_java_code): Add template parameters to
Hashtable and Enumeration references.

2 years agoUpdate after gnulib changed.
Bruno Haible [Sun, 11 Jun 2023 01:41:53 +0000 (03:41 +0200)] 
Update after gnulib changed.

* NEWS: Mention the newly supported Java versions.

2 years agoUpdate to the newest gnulib.
Bruno Haible [Sun, 11 Jun 2023 01:37:02 +0000 (03:37 +0200)] 
Update to the newest gnulib.

2 years agoFix Windows exports list regarding C++ format strings.
Bruno Haible [Fri, 9 Jun 2023 08:27:03 +0000 (10:27 +0200)] 
Fix Windows exports list regarding C++ format strings.

* gettext-tools/woe32dll/gettextsrc-exports.c: Add formatstring_cplusplus_brace.

2 years agoNew example 'hello-c++20'.
Bruno Haible [Fri, 9 Jun 2023 01:37:43 +0000 (03:37 +0200)] 
New example 'hello-c++20'.

* gettext-tools/examples/hello-c++20: New directory, based on
gettext-tools/examples/hello-c++.
* gettext-tools/examples/Makefile.am (EXAMPLESFILES, EXAMPLESDIRS): Update.
* gettext-tools/examples/po/Makefile.am (POTFILES, SMALLPOTS,
SMALLPOFILES_FOR_lang): Update.
(hello-c++20.pot, hello-c++20/po/$(LL).po): New rules.
* gettext-tools/examples/README: Update.
* gettext-tools/examples/check-examples (func_check_autoclean_all,
func_check_distclean_all, func_check_maintainerclean_all,
func_check_maintainerclean_vpath_all, func_check_dist_all,
func_check_dist_vpath_all, func_check_install_all, func_check_uninstall_all,
func_check_distcheck_all, func_check_all): Handle this directory as well.
* NEWS: Mention the new example.

2 years agoAdd support for C++ format strings.
Bruno Haible [Thu, 8 Jun 2023 18:41:14 +0000 (20:41 +0200)] 
Add support for C++ format strings.

* gettext-tools/src/message.h (enum format_type): New enum item
format_cplusplus_brace.
(NFORMATS): Increment.
* gettext-tools/src/message.c (format_language, format_language_pretty): Add
entries for format_cplusplus_brace.
* gettext-tools/src/format.h (formatstring_cplusplus_brace): New declaration.
* gettext-tools/src/format-c++-brace.c: New file, based on
gettext-tools/src/format-awk.c.
* gettext-tools/src/format.c (formatstring_parsers): Add an entry for
format_cplusplus_brace.
* gettext-tools/src/Makefile.am (FORMAT_SOURCE): Add format-c++-brace.c.
* gettext-tools/src/FILES: Update.
* gettext-tools/src/x-c.h (SCANNERS_C): In language C++, use
formatstring_cplusplus_brace as second format string parser.
* gettext-tools/src/x-c.c (init_flag_table_c): Initialize flags related to
c++-format.
* gettext-tools/src/xgettext.c (xgettext_record_flag): Handle
format_cplusplus_brace.
(recognize_qt_formatstrings, language_to_extractor): Update.
* gettext-tools/src/xg-arglist-parser.c (arglist_parser_done): Update.
* gettext-tools/libgettextpo/Makefile.am (libgettextpo_la_AUXSOURCES): Add
format-c++-brace.c.
* gettext-tools/tests/format-c++-brace-1: New file, based on
gettext-tools/tests/format-c-1.
* gettext-tools/tests/format-c++-brace-2: New file, based on
gettext-tools/tests/format-c-2.
* gettext-tools/tests/lang-c++20: New file, based on
gettext-tools/tests/lang-c++.
* gettext-tools/tests/Makefile.am (TESTS): Add them.
* gettext-tools/doc/gettext.texi (PO Files): Mention c++-format and
no-c++-format.
(Preparing strings): Add subheading "No programmer-defined format string
directives".
(Mark Keywords): Mention the need to use std::vformat instead of std::format.
(c++-format): New subsection.
* gettext-tools/doc/lang-c.texi: Mention the syntax for C++ format strings.
* NEWS: Mention the change.

tweak c++-format

2 years agoNEWS: Mention Unicode 15.
Bruno Haible [Thu, 8 Jun 2023 18:45:23 +0000 (20:45 +0200)] 
NEWS: Mention Unicode 15.

* NEWS: Mention that Unicode 15 is supported. Done in gnulib on 2022-10-16.

2 years agoSimplify format-c-1 test.
Bruno Haible [Thu, 8 Jun 2023 18:36:26 +0000 (20:36 +0200)] 
Simplify format-c-1 test.

* gettext-tools/tests/format-c-1: Remove a redundant test case.

2 years agoSimplify lang-c++ test.
Bruno Haible [Thu, 8 Jun 2023 13:00:47 +0000 (15:00 +0200)] 
Simplify lang-c++ test.

* gettext-tools/tests/lang-c++: Remove unneeded include.

2 years agoTweak comments.
Bruno Haible [Wed, 7 Jun 2023 23:30:24 +0000 (01:30 +0200)] 
Tweak comments.

2 years agoxgettext: Avoid side effects of the Vala extractor on the C extractor.
Bruno Haible [Wed, 7 Jun 2023 16:57:37 +0000 (18:57 +0200)] 
xgettext: Avoid side effects of the Vala extractor on the C extractor.

* gettext-tools/src/xgettext.h (xgettext_record_flag): Add more comments.
* gettext-tools/src/xgettext.c (xgettext_record_flag): Parse an optional
'!BACKEND' suffix. When present, limit the effects of c-format related flags to
the specified flag table(s).
* gettext-tools/src/x-vala.c (init_flag_table_vala): Append '!Vala' to all
xgettext_record_flag arguments.
* gettext-tools/tests/xgettext-c-format-6: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.

2 years agoxgettext: In language Python, fix a format string handling bug.
Bruno Haible [Wed, 7 Jun 2023 15:51:18 +0000 (17:51 +0200)] 
xgettext: In language Python, fix a format string handling bug.

The option --flag=my_new_format:1:python-brace-format used to mark strings
inside my_new_format invocations as being 'python-format' instead of
'python-brace-format'.

* gettext-tools/src/xgettext.c (xgettext_record_flag): Use the correct index
into flag_table_python.
* gettext-tools/tests/xgettext-python-7: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.

2 years agoxgettext: In language Vala, fix a format string handling bug.
Bruno Haible [Wed, 7 Jun 2023 15:22:03 +0000 (17:22 +0200)] 
xgettext: In language Vala, fix a format string handling bug.

* gettext-tools/src/xgettext.c (xgettext_record_flag): Store format_c related
flags also in flag_table_vala.
* gettext-tools/tests/xgettext-vala-5: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.

2 years agoxgettext: Reduce code duplication.
Bruno Haible [Wed, 7 Jun 2023 13:50:03 +0000 (15:50 +0200)] 
xgettext: Reduce code duplication.

* gettext-tools/src/xg-arglist-context.h (flag_context_list_table_add): Add
comment.
* gettext-tools/src/xg-arglist-context.c (set_flags_for_formatstring_type): New
function, extracted from flag_context_list_table_add.
(flag_context_list_table_add): Use it.

2 years agoxgettext: Support up to 4 format string parsers at the same time.
Bruno Haible [Mon, 5 Jun 2023 10:31:30 +0000 (12:31 +0200)] 
xgettext: Support up to 4 format string parsers at the same time.

* gettext-tools/src/xg-arglist-context.h (struct flag_context_ty): Add fields
is_format4, pass_format4.
* gettext-tools/src/xg-arglist-context.c (null_context, passthrough_context,
inherited_context, passthrough_context_circular_list,
flag_context_list_table_add): Update.
* gettext-tools/src/xg-message.c (set_format_flags_from_context,
decide_is_format, remember_a_message_plural): Update.
* gettext-tools/src/xgettext.h (current_formatstring_parser4): New declaration.
* gettext-tools/src/xgettext.c (struct extractor_ty): Add field
formatstring_parser4.
(current_formatstring_parser4): New variable.
(main, extract_from_file, language_to_extractor): Update.

2 years agoFix libintl exports.
Bruno Haible [Sun, 4 Jun 2023 18:48:28 +0000 (20:48 +0200)] 
Fix libintl exports.

On mingw, rpl_mbrtowc, rpl_mbsinit, hard_locale were exported.
On Cygwin, rpl_mbrtowc, rpl_vasnprintf were exported.

* gettext-runtime/intl/configure.ac: Map more rpl_* symbols to _libintl_*.

2 years agoUpdate to the newest gnulib.
Bruno Haible [Mon, 5 Jun 2023 09:28:53 +0000 (11:28 +0200)] 
Update to the newest gnulib.