summaryrefslogtreecommitdiffstats
path: root/gettext-tools/src/xgettext.c
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2015-03-05 12:00:09 +0900
committerDaiki Ueno <ueno@gnu.org>2015-03-09 18:24:52 +0900
commit5c2d4fc20a40d1ec70730a6bcdc03cb2eb0e16c9 (patch)
tree62f1773b1dd04721d6dd10ee70042044476c9988 /gettext-tools/src/xgettext.c
parent4d2115c62a723dc9e375433261c1bf3e45928815 (diff)
downloadexternal_gettext-5c2d4fc20a40d1ec70730a6bcdc03cb2eb0e16c9.zip
external_gettext-5c2d4fc20a40d1ec70730a6bcdc03cb2eb0e16c9.tar.gz
external_gettext-5c2d4fc20a40d1ec70730a6bcdc03cb2eb0e16c9.tar.bz2
format-kde: Recognize KUIT markup
Reported by Chusslove Illich in: https://lists.gnu.org/archive/html/bug-gettext/2015-01/msg00017.html * gettext-tools/src/format.h (formatstring_kde_kuit): New variable declaration. * gettext-tools/src/format.c (formatstring_parsers): Register formatstring_kde_kuitas a format string parser. * gettext-tools/src/format-kde-kuit.c: New file. * gettext-tools/src/message.h (NFORMATS): Increment. (enum format_type): New enum value format_kde_kuit. * gettext-tools/src/xgettext.c (xgettext_record_flag): Handle format_kde_kuit. * gettext-tools/src/Makefile.am (xgettext_SOURCES): Move libexpat-compat.c to... (libgettextsrc_la_SOURCES): ...here. (xgettext_LDADD): Move @LTLIBEXPAT@ to... (libgettextsrc_la_LDFLAGS): ...here. (FORMAT_SOURCE): Add format-kde-kuit.c. * gettext-tools/libgettextpo/Makefile.am (libgettextpo_la_AUXSOURCES): Add ../src/format-kde-kuit.c and ../src/libexpat-compat.c. (libgettextpo_la_LDFLAGS): Add @LTLIBEXPAT@. * gettext-tools/tests/format-kde-kuit-1: New file. * gettext-tools/tests/format-kde-kuit-2: New file. * gettext-tools/tests/Makefile.am (TESTS): Add new tests. * gettext-tools/doc/gettext.texi (kde-kuit-format): New subsection. * NEWS: Mention KUIT format string support.
Diffstat (limited to 'gettext-tools/src/xgettext.c')
-rw-r--r--gettext-tools/src/xgettext.c34
1 files changed, 32 insertions, 2 deletions
diff --git a/gettext-tools/src/xgettext.c b/gettext-tools/src/xgettext.c
index 310b349..1c9830e 100644
--- a/gettext-tools/src/xgettext.c
+++ b/gettext-tools/src/xgettext.c
@@ -1864,6 +1864,11 @@ xgettext_record_flag (const char *optionstring)
name_start, name_end,
argnum, value, pass);
break;
+ case format_kde_kuit:
+ flag_context_list_table_insert (&flag_table_cxx_kde, 2,
+ name_start, name_end,
+ argnum, value, pass);
+ break;
case format_boost:
flag_context_list_table_insert (&flag_table_cxx_boost, 1,
name_start, name_end,
@@ -2543,7 +2548,19 @@ meta information, not the empty string.\n")));
&& (possible_format_p (is_format[format_qt])
|| possible_format_p (is_format[format_qt_plural])
|| possible_format_p (is_format[format_kde])
- || possible_format_p (is_format[format_boost]))))
+ || possible_format_p (is_format[format_kde_kuit])
+ || possible_format_p (is_format[format_boost])))
+ /* Avoid flagging a string as kde-format when it's known to
+ be a kde-kuit-format string. */
+ && !(i == format_kde
+ && possible_format_p (is_format[format_kde_kuit]))
+ /* Avoid flagging a string as kde-kuit-format when it's
+ known to be a kde-format string. Note that this relies
+ on the fact that format_kde < format_kde_kuit, so a
+ string will be marked as kde-format if both are
+ undecided. */
+ && !(i == format_kde_kuit
+ && possible_format_p (is_format[format_kde])))
{
struct formatstring_parser *parser = formatstring_parsers[i];
char *invalid_reason = NULL;
@@ -2678,7 +2695,19 @@ remember_a_message_plural (message_ty *mp, char *string,
&& (possible_format_p (mp->is_format[format_qt])
|| possible_format_p (mp->is_format[format_qt_plural])
|| possible_format_p (mp->is_format[format_kde])
- || possible_format_p (mp->is_format[format_boost]))))
+ || possible_format_p (mp->is_format[format_kde_kuit])
+ || possible_format_p (mp->is_format[format_boost])))
+ /* Avoid flagging a string as kde-format when it's known
+ to be a kde-kuit-format string. */
+ && !(i == format_kde
+ && possible_format_p (mp->is_format[format_kde_kuit]))
+ /* Avoid flagging a string as kde-kuit-format when it's
+ known to be a kde-format string. Note that this relies
+ on the fact that format_kde < format_kde_kuit, so a
+ string will be marked as kde-format if both are
+ undecided. */
+ && !(i == format_kde_kuit
+ && possible_format_p (mp->is_format[format_kde])))
{
struct formatstring_parser *parser = formatstring_parsers[i];
char *invalid_reason = NULL;
@@ -3706,6 +3735,7 @@ language_to_extractor (const char *name)
{
result.flag_table = &flag_table_cxx_kde;
result.formatstring_parser2 = &formatstring_kde;
+ result.formatstring_parser3 = &formatstring_kde_kuit;
}
/* Likewise for --boost. */
if (recognize_format_boost && strcmp (tp->name, "C++") == 0)