diff options
author | Daiki Ueno <ueno@gnu.org> | 2014-05-31 15:44:17 +0900 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2014-05-31 15:44:17 +0900 |
commit | 108bf80c79b05b22dccfad20468238b29bfc605b (patch) | |
tree | cdc085e90e539e816627e5b1bc9d521662e5da4b /gettext-tools | |
parent | 3a78eca9e7bd70521a0f64657b4c5904797927df (diff) | |
download | external_gettext-108bf80c79b05b22dccfad20468238b29bfc605b.zip external_gettext-108bf80c79b05b22dccfad20468238b29bfc605b.tar.gz external_gettext-108bf80c79b05b22dccfad20468238b29bfc605b.tar.bz2 |
msgexec: Pass previous msgid to the child process
Suggested by Pavel Kharitonov in:
<http://lists.gnu.org/archive/html/bug-gettext/2014-05/msg00022.html>.
* msgexec.c (process_string): Set MSGEXEC_PREV_* envvar.
Diffstat (limited to 'gettext-tools')
-rw-r--r-- | gettext-tools/doc/ChangeLog | 6 | ||||
-rw-r--r-- | gettext-tools/doc/msgexec.texi | 8 | ||||
-rw-r--r-- | gettext-tools/src/ChangeLog | 7 | ||||
-rw-r--r-- | gettext-tools/src/msgexec.c | 12 | ||||
-rw-r--r-- | gettext-tools/tests/ChangeLog | 4 | ||||
-rwxr-xr-x | gettext-tools/tests/msgexec-5 | 20 |
6 files changed, 54 insertions, 3 deletions
diff --git a/gettext-tools/doc/ChangeLog b/gettext-tools/doc/ChangeLog index 257b46d..78009db 100644 --- a/gettext-tools/doc/ChangeLog +++ b/gettext-tools/doc/ChangeLog @@ -1,5 +1,11 @@ 2014-05-31 Daiki Ueno <ueno@gnu.org> + * msgexec.texi: Document the environment variable + MSGEXEC_PREV_MSGCTXT, MSGEXEC_PREV_MSGID, and + MSGEXEC_PREV_MSGID_PLURAL. + +2014-05-31 Daiki Ueno <ueno@gnu.org> + * msgfilter.texi: Document the environment variable MSGFILTER_PREV_MSGCTXT, MSGFILTER_PREV_MSGID, and MSGFILTER_PREV_MSGID_PLURAL. diff --git a/gettext-tools/doc/msgexec.texi b/gettext-tools/doc/msgexec.texi index 5ef640c..a190072 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 8247050..19641dc 100644 --- a/gettext-tools/src/ChangeLog +++ b/gettext-tools/src/ChangeLog @@ -1,5 +1,12 @@ 2014-05-31 Daiki Ueno <ueno@gnu.org> + msgexec: Pass previous msgid to the child process + Suggested by Pavel Kharitonov in: + <http://lists.gnu.org/archive/html/bug-gettext/2014-05/msg00022.html>. + * msgexec.c (process_string): Set MSGEXEC_PREV_* envvar. + +2014-05-31 Daiki Ueno <ueno@gnu.org> + msgfilter: Pass previous msgid to the child process Suggested by Pavel Kharitonov in: <http://lists.gnu.org/archive/html/bug-gettext/2014-05/msg00022.html>. diff --git a/gettext-tools/src/msgexec.c b/gettext-tools/src/msgexec.c index c3af66a..7a5d550 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 1b421f5..aa1d3f0 100644 --- a/gettext-tools/tests/ChangeLog +++ b/gettext-tools/tests/ChangeLog @@ -1,5 +1,9 @@ 2014-05-31 Daiki Ueno <ueno@gnu.org> + * msgexec-5: Test MSGEXEC_PREV_MSGID and MSGEXEC_PREV_MSGID_PLURAL. + +2014-05-31 Daiki Ueno <ueno@gnu.org> + * msgfilter-6: Test MSGFILTER_PREV_MSGID and MSGFILTER_PREV_MSGID_PLURAL. diff --git a/gettext-tools/tests/msgexec-5 b/gettext-tools/tests/msgexec-5 index 1b9dac6..a2c13cd 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 <<MEOF $MSGEXEC_MSGID $MSGEXEC_MSGID_PLURAL $MSGEXEC_PLURAL_FORM +$MSGEXEC_PREV_MSGID +$MSGEXEC_PREV_MSGID_PLURAL --- MEOF cat @@ -56,6 +60,8 @@ cat <<\EOF > 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 |