+2015-01-29 Daiki Ueno <ueno@gnu.org>
+
+ * msgexec.texi: Document --newline option.
+
2015-01-28 Daiki Ueno <ueno@gnu.org>
* msgfilter.texi: Document --newline option.
by a null byte. The output of @samp{msgexec 0} is suitable as input for
@samp{xargs -0}.
+@table @samp
+@itemx --newline
+@opindex --newline@r{, @code{msgfilter} option}
+Add newline at the end of each input line.
+
+@end table
+
@vindex MSGEXEC_MSGCTXT@r{, environment variable}
@vindex MSGEXEC_MSGID@r{, environment variable}
@vindex MSGEXEC_MSGID_PLURAL@r{, environment variable}
+2015-01-29 Daiki Ueno <ueno@gnu.org>
+
+ msgexec: Add --newline option
+ See the commit 96dde0b for the rationale.
+ * msgexec.c (newline): New variable.
+ (long_options): Add --newline option.
+ (main): Handle --newline option.
+ (usage): Document --newline option.
+ (process_string): Handle --newline option.
+
2015-01-28 Daiki Ueno <ueno@gnu.org>
msgfilter: Add --newline option
static char **sub_argv;
static int sub_argc;
+static bool newline;
+
/* Maximum exit code encountered. */
static int exitcode;
{ "directory", required_argument, NULL, 'D' },
{ "help", no_argument, NULL, 'h' },
{ "input", required_argument, NULL, 'i' },
+ { "newline", no_argument, NULL, CHAR_MAX + 2 },
{ "properties-input", no_argument, NULL, 'P' },
{ "stringtable-input", no_argument, NULL, CHAR_MAX + 1 },
{ "version", no_argument, NULL, 'V' },
input_syntax = &input_format_stringtable;
break;
+ case CHAR_MAX + 2: /* --newline */
+ newline = true;
+ break;
+
default:
usage (EXIT_FAILURE);
break;
"));
printf ("\n");
printf (_("\
+Command input:\n"));
+ printf (_("\
+ --newline add newline at the end of input\n"));
+ printf ("\n");
+ printf (_("\
Mandatory arguments to long options are mandatory for short options too.\n"));
printf ("\n");
printf (_("\
int fd[1];
void (*orig_sigpipe_handler)(int);
int exitstatus;
+ char *newstr;
/* Set environment variables for the subprocess.
Note: These environment variables, especially MSGEXEC_MSGCTXT and
successfully without having read all of the input that we feed it. */
orig_sigpipe_handler = signal (SIGPIPE, SIG_IGN);
- if (full_write (fd[0], str, len) < len)
+ if (newline)
+ {
+ newstr = XNMALLOC (len + 1, char);
+ memcpy (newstr, str, len);
+ newstr[len++] = '\n';
+ }
+ else
+ newstr = (char *) str;
+
+ if (full_write (fd[0], newstr, len) < len)
if (errno != EPIPE)
error (EXIT_FAILURE, errno,
_("write to %s subprocess failed"), sub_name);
+ if (newstr != str)
+ free (newstr);
+
close (fd[0]);
signal (SIGPIPE, orig_sigpipe_handler);
+2015-01-29 Daiki Ueno <ueno@gnu.org>
+
+ * msgexec-6: New file.
+ * Makefile.am (TESTS): Add new test.
+
2015-01-28 Daiki Ueno <ueno@gnu.org>
* msgfilter-8: New file.
msgcomm-26 msgcomm-27 msgcomm-28 \
msgconv-1 msgconv-2 msgconv-3 msgconv-4 msgconv-5 msgconv-6 msgconv-7 \
msgen-1 msgen-2 msgen-3 msgen-4 \
- msgexec-1 msgexec-2 msgexec-3 msgexec-4 msgexec-5 \
+ msgexec-1 msgexec-2 msgexec-3 msgexec-4 msgexec-5 msgexec-6 \
msgfilter-1 msgfilter-2 msgfilter-3 msgfilter-4 msgfilter-5 \
msgfilter-6 msgfilter-7 msgfilter-8 \
msgfilter-sr-latin-1 msgfilter-quote-1 \
--- /dev/null
+#! /bin/sh
+. "${srcdir=.}/init.sh"; path_prepend_ . ../src
+
+# Test --newline option.
+
+cat <<\EOF > mex-test6.po
+# HEADER.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Bonnie Tyler\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: married-men:4
+#, fuzzy
+msgid "The world is full of married men"
+msgstr "So viele verheiratete Männer"
+
+#: married-men:5
+msgid "with wives who never understand"
+msgstr "und ihre Frauen verstehen sie nicht"
+
+#: married-men:6
+msgid "They're looking for someone to share"
+msgstr ""
+
+# schwer zu übersetzen...
+#: married-men:7
+msgid "the excitement of a love affair"
+msgstr ""
+
+#: married-men:8
+msgid "Just as soon as they find you"
+msgstr ""
+
+#: married-men:9
+msgid "They warn you and darn you"
+msgstr ""
+
+#~ msgid "You fly on the wings of romance"
+#~ msgstr "Die Flügel der frischen Liebe\n"
+#~ "heben dich zum Himmel"
+
+#, fuzzy
+#~ msgid "In the eyes of the world"
+#~ msgstr "Für die anderen"
+
+# Etwas freie Übersetzung.
+#~ msgid "You're just another crazy girl"
+#~ msgstr "bist du bloß ein verrücktes dummes Ding"
+
+#~ msgid "Who loves a married man"
+#~ msgstr "das einen verheirateten Mann liebt"
+EOF
+
+cat <<\EOF > mex-test6.sh
+#! /bin/sh
+echo "========================= $MSGEXEC_LOCATION =========================" | LC_ALL=C tr -d '\r'
+cat <<MEOF
+$MSGEXEC_MSGID
+---
+MEOF
+cat
+echo | LC_ALL=C tr -d '\r'
+exit 0
+EOF
+chmod a+x mex-test6.sh
+
+: ${MSGEXEC=msgexec}
+LC_ALL=C \
+${MSGEXEC} --newline -i mex-test6.po ./mex-test6.sh > mex-test6.out 2> mex-test6.err
+result=$?
+cat mex-test6.err | grep -v 'warning: Locale charset' | grep -v '^ '
+test $result = 0 || { exit 1; }
+
+cat <<\EOF > mex-test6.ok
+========================= mex-test6.po:4 =========================
+
+---
+Project-Id-Version: Bonnie Tyler
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+
+========================= mex-test6.po:12 =========================
+The world is full of married men
+---
+So viele verheiratete Männer
+
+========================= mex-test6.po:16 =========================
+with wives who never understand
+---
+und ihre Frauen verstehen sie nicht
+
+========================= mex-test6.po:20 =========================
+They're looking for someone to share
+---
+
+
+========================= mex-test6.po:25 =========================
+the excitement of a love affair
+---
+
+
+========================= mex-test6.po:29 =========================
+Just as soon as they find you
+---
+
+
+========================= mex-test6.po:33 =========================
+They warn you and darn you
+---
+
+
+========================= mex-test6.po:36 =========================
+You fly on the wings of romance
+---
+Die Flügel der frischen Liebe
+heben dich zum Himmel
+
+========================= mex-test6.po:41 =========================
+In the eyes of the world
+---
+Für die anderen
+
+========================= mex-test6.po:45 =========================
+You're just another crazy girl
+---
+bist du bloß ein verrücktes dummes Ding
+
+========================= mex-test6.po:48 =========================
+Who loves a married man
+---
+das einen verheirateten Mann liebt
+
+EOF
+
+: ${DIFF=diff}
+${DIFF} mex-test6.ok mex-test6.out
+result=$?
+
+exit $result