From: Daiki Ueno Date: Sat, 31 May 2014 06:44:17 +0000 (+0900) Subject: msgexec: Pass previous msgid to the child process X-Git-Tag: v0.19~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=108bf80c79b05b22dccfad20468238b29bfc605b;p=thirdparty%2Fgettext.git msgexec: Pass previous msgid to the child process Suggested by Pavel Kharitonov in: . * msgexec.c (process_string): Set MSGEXEC_PREV_* envvar. --- diff --git a/gettext-tools/doc/ChangeLog b/gettext-tools/doc/ChangeLog index 257b46da1..78009db8c 100644 --- a/gettext-tools/doc/ChangeLog +++ b/gettext-tools/doc/ChangeLog @@ -1,3 +1,9 @@ +2014-05-31 Daiki Ueno + + * msgexec.texi: Document the environment variable + MSGEXEC_PREV_MSGCTXT, MSGEXEC_PREV_MSGID, and + MSGEXEC_PREV_MSGID_PLURAL. + 2014-05-31 Daiki Ueno * msgfilter.texi: Document the environment variable diff --git a/gettext-tools/doc/msgexec.texi b/gettext-tools/doc/msgexec.texi index 5ef640c86..a190072c2 100644 --- a/gettext-tools/doc/msgexec.texi +++ b/gettext-tools/doc/msgexec.texi @@ -22,6 +22,9 @@ by a null byte. The output of @samp{msgexec 0} is suitable as input for @vindex MSGEXEC_MSGID_PLURAL@r{, environment variable} @vindex MSGEXEC_LOCATION@r{, environment variable} @vindex MSGEXEC_PLURAL_FORM@r{, environment variable} +@vindex MSGEXEC_PREV_MSGCTXT@r{, environment variable} +@vindex MSGEXEC_PREV_MSGID@r{, environment variable} +@vindex MSGEXEC_PREV_MSGID_PLURAL@r{, environment variable} During each @var{command} invocation, the environment variable @code{MSGEXEC_MSGID} is bound to the message's msgid, and the environment variable @code{MSGEXEC_LOCATION} is bound to the location in the PO file @@ -31,6 +34,11 @@ unbound. If the message has a plural form, environment variable @code{MSGEXEC_MSGID_PLURAL} is bound to the message's msgid_plural and @code{MSGEXEC_PLURAL_FORM} is bound to the order number of the plural actually processed (starting with 0), otherwise both are unbound. +If the message has a previous msgid (added by @code{msgmerge}), +environment variable @code{MSGEXEC_PREV_MSGCTXT} is bound to the +message's previous msgctxt, @code{MSGEXEC_PREV_MSGID} is bound to +the previous msgid, and @code{MSGEXEC_PREV_MSGID_PLURAL} is bound to +the previous msgid_plural. @cindex catalog encoding and @code{msgexec} output Note: It is your responsibility to ensure that the @var{command} can cope diff --git a/gettext-tools/src/ChangeLog b/gettext-tools/src/ChangeLog index 8247050e6..19641dcc1 100644 --- a/gettext-tools/src/ChangeLog +++ b/gettext-tools/src/ChangeLog @@ -1,3 +1,10 @@ +2014-05-31 Daiki Ueno + + msgexec: Pass previous msgid to the child process + Suggested by Pavel Kharitonov in: + . + * msgexec.c (process_string): Set MSGEXEC_PREV_* envvar. + 2014-05-31 Daiki Ueno msgfilter: Pass previous msgid to the child process diff --git a/gettext-tools/src/msgexec.c b/gettext-tools/src/msgexec.c index c3af66a8f..7a5d550cf 100644 --- a/gettext-tools/src/msgexec.c +++ b/gettext-tools/src/msgexec.c @@ -378,6 +378,18 @@ process_string (const message_ty *mp, const char *str, size_t len) (long) mp->pos.line_number); xsetenv ("MSGEXEC_LOCATION", location, 1); free (location); + if (mp->prev_msgctxt != NULL) + xsetenv ("MSGEXEC_PREV_MSGCTXT", mp->prev_msgctxt, 1); + else + unsetenv ("MSGEXEC_PREV_MSGCTXT"); + if (mp->prev_msgid != NULL) + xsetenv ("MSGEXEC_PREV_MSGID", mp->prev_msgid, 1); + else + unsetenv ("MSGEXEC_PREV_MSGID"); + if (mp->prev_msgid_plural != NULL) + xsetenv ("MSGEXEC_PREV_MSGID_PLURAL", mp->prev_msgid_plural, 1); + else + unsetenv ("MSGEXEC_PREV_MSGID_PLURAL"); /* Open a pipe to a subprocess. */ child = create_pipe_out (sub_name, sub_path, sub_argv, NULL, false, true, diff --git a/gettext-tools/tests/ChangeLog b/gettext-tools/tests/ChangeLog index 1b421f567..aa1d3f0fe 100644 --- a/gettext-tools/tests/ChangeLog +++ b/gettext-tools/tests/ChangeLog @@ -1,3 +1,7 @@ +2014-05-31 Daiki Ueno + + * msgexec-5: Test MSGEXEC_PREV_MSGID and MSGEXEC_PREV_MSGID_PLURAL. + 2014-05-31 Daiki Ueno * msgfilter-6: Test MSGFILTER_PREV_MSGID and diff --git a/gettext-tools/tests/msgexec-5 b/gettext-tools/tests/msgexec-5 index 1b9dac646..a2c13cd20 100755 --- a/gettext-tools/tests/msgexec-5 +++ b/gettext-tools/tests/msgexec-5 @@ -15,6 +15,8 @@ msgstr "'Votre commande, s'il vous plait', dit le garcon." # Les gateaux allemands sont les meilleurs du monde. #, c-format +#| msgid "a piece of bread" +#| msgid_plural "%d pieces of bread" msgid "a piece of cake" msgid_plural "%d pieces of cake" msgstr[0] "un morceau de gateau" @@ -36,6 +38,8 @@ cat < mex-test5.ok + + --- Content-Type: text/plain; charset=ASCII Plural-Forms: nplurals=2; plural=(n > 1); @@ -64,24 +70,32 @@ Plural-Forms: nplurals=2; plural=(n > 1); 'Your command, please?', asked the waiter. + + --- 'Votre commande, s'il vous plait', dit le garcon. -========================= mex-test5.po:14 ========================= +========================= mex-test5.po:16 ========================= a piece of cake %d pieces of cake 0 +a piece of bread +%d pieces of bread --- un morceau de gateau -========================= mex-test5.po:14 ========================= +========================= mex-test5.po:16 ========================= a piece of cake %d pieces of cake 1 +a piece of bread +%d pieces of bread --- %d morceaux de gateau -========================= mex-test5.po:20 ========================= +========================= mex-test5.po:22 ========================= %s is replaced by %s. + + --- %2$s remplace %1$s. EOF