From: Bruno Haible Date: Wed, 7 Jun 2023 15:51:18 +0000 (+0200) Subject: xgettext: In language Python, fix a format string handling bug. X-Git-Tag: v0.22~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf9b3df4e0e7496fae52f814cc04d2ecc3e365f4;p=thirdparty%2Fgettext.git 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. --- diff --git a/gettext-tools/src/xgettext.c b/gettext-tools/src/xgettext.c index 968aaf457..c3534ad14 100644 --- a/gettext-tools/src/xgettext.c +++ b/gettext-tools/src/xgettext.c @@ -1524,7 +1524,7 @@ xgettext_record_flag (const char *optionstring) argnum, value, pass); break; case format_python_brace: - flag_context_list_table_insert (&flag_table_python, 0, + flag_context_list_table_insert (&flag_table_python, 1, name_start, name_end, argnum, value, pass); break; diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am index 108e66186..0cc606a28 100644 --- a/gettext-tools/tests/Makefile.am +++ b/gettext-tools/tests/Makefile.am @@ -143,6 +143,7 @@ TESTS = gettext-1 gettext-2 \ xgettext-rst-1 xgettext-rst-2 \ xgettext-python-1 xgettext-python-2 xgettext-python-3 \ xgettext-python-4 xgettext-python-5 xgettext-python-6 \ + xgettext-python-7 \ xgettext-python-stackovfl-1 xgettext-python-stackovfl-2 \ xgettext-python-stackovfl-3 xgettext-python-stackovfl-4 \ xgettext-ruby-1 \ diff --git a/gettext-tools/tests/xgettext-python-7 b/gettext-tools/tests/xgettext-python-7 new file mode 100755 index 000000000..2b98ac6c1 --- /dev/null +++ b/gettext-tools/tests/xgettext-python-7 @@ -0,0 +1,31 @@ +#!/bin/sh +. "${srcdir=.}/init.sh"; path_prepend_ . ../src + +# Test Python support: --pass-python-brace-format. + +cat <<\EOF > xg-py-7.py +my_old_format(gettext("blaold %d and %s")); +my_new_format(gettext("blanew {foo} and {bar}")); +EOF + +: ${XGETTEXT=xgettext} +${XGETTEXT} --flag=my_old_format:1:python-format \ + --flag=my_new_format:1:python-brace-format \ + --omit-header --no-location -d xg-py-7.tmp xg-py-7.py || Exit 1 +LC_ALL=C tr -d '\r' < xg-py-7.tmp.po > xg-py-7.po || Exit 1 + +cat < xg-py-7.ok +#, python-format +msgid "blaold %d and %s" +msgstr "" + +#, python-brace-format +msgid "blanew {foo} and {bar}" +msgstr "" +EOF + +: ${DIFF=diff} +${DIFF} xg-py-7.ok xg-py-7.po +result=$? + +exit $result