summaryrefslogtreecommitdiffstats
path: root/gettext-tools
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2014-05-31 15:44:17 +0900
committerDaiki Ueno <ueno@gnu.org>2014-05-31 15:44:17 +0900
commit108bf80c79b05b22dccfad20468238b29bfc605b (patch)
treecdc085e90e539e816627e5b1bc9d521662e5da4b /gettext-tools
parent3a78eca9e7bd70521a0f64657b4c5904797927df (diff)
downloadexternal_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/ChangeLog6
-rw-r--r--gettext-tools/doc/msgexec.texi8
-rw-r--r--gettext-tools/src/ChangeLog7
-rw-r--r--gettext-tools/src/msgexec.c12
-rw-r--r--gettext-tools/tests/ChangeLog4
-rwxr-xr-xgettext-tools/tests/msgexec-520
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