It is simpler and more natural if the "git interpret-trailers"
is made a filter as its output already goes to sdtout.

Signed-off-by: Christian Couder <chrisc...@tuxfamily.org>
---
 builtin/interpret-trailers.c  |  2 +-
 t/t7513-interpret-trailers.sh |  7 +++++++
 trailer.c                     | 15 +++++++++------
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c
index f79bffa..37237f7 100644
--- a/builtin/interpret-trailers.c
+++ b/builtin/interpret-trailers.c
@@ -23,7 +23,7 @@ int cmd_interpret_trailers(int argc, const char **argv, const 
char *prefix)
 
        struct option options[] = {
                OPT_BOOL(0, "trim-empty", &trim_empty, N_("trim empty 
trailers")),
-               OPT_FILENAME(0, "infile", &infile, N_("use message from file")),
+               OPT_FILENAME(0, "infile", &infile, N_("use message from file, 
instead of stdin")),
                OPT_END()
        };
 
diff --git a/t/t7513-interpret-trailers.sh b/t/t7513-interpret-trailers.sh
index 8be333c..f5ef81f 100755
--- a/t/t7513-interpret-trailers.sh
+++ b/t/t7513-interpret-trailers.sh
@@ -205,4 +205,11 @@ test_expect_success 'using "ifMissing = doNothing"' '
        test_cmp expected actual
 '
 
+test_expect_success 'with input from stdin' '
+       cat complex_message_body >expected &&
+       printf "Bug #42\nFixes: \nAcked-by= \nAcked-by= Junio\nAcked-by= 
Peff\nReviewed-by: \nSigned-off-by: \n" >>expected &&
+       git interpret-trailers "review:" "fix=53" "cc=Linus" "ack: Junio" 
"fix=22" "bug: 42" "ack: Peff" < complex_message >actual &&
+       test_cmp expected actual
+'
+
 test_done
diff --git a/trailer.c b/trailer.c
index 2678b3e..d581371 100644
--- a/trailer.c
+++ b/trailer.c
@@ -465,8 +465,13 @@ static struct strbuf **read_input_file(const char *infile)
 {
        struct strbuf sb = STRBUF_INIT;
 
-       if (strbuf_read_file(&sb, infile, 0) < 0)
-               die_errno(_("could not read input file '%s'"), infile);
+       if (infile) {
+               if (strbuf_read_file(&sb, infile, 0) < 0)
+                       die_errno(_("could not read input file '%s'"), infile);
+       } else {
+               if (strbuf_read(&sb, fileno(stdin), 0) < 0)
+                       die_errno(_("could not read from stdin"));
+       }
 
        return strbuf_split(&sb, '\n');
 }
@@ -531,10 +536,8 @@ void process_trailers(const char *infile, int trim_empty, 
int argc, const char *
 
        git_config(git_trailer_config, NULL);
 
-       /* Print the non trailer part of infile */
-       if (infile) {
-               process_input_file(infile, &infile_tok_first, &infile_tok_last);
-       }
+       /* Print the non trailer part of infile (or stdin if infile is NULL) */
+       process_input_file(infile, &infile_tok_first, &infile_tok_last);
 
        arg_tok_first = process_command_line_args(argc, argv);
 
-- 
1.8.5.2.201.gacc5987


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to