git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v5 09/14] trailer: if no input file is passed, read from stdin

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 7, 2014, 00:12 UTC
Message-ID
<xmqqa9e3wzju.fsf@gitster.dls.corp.google.com>
In-Reply-To
<20140206202004.325.76199.chriscool@tuxfamily.org>
Christian Couder <chriscool@tuxfamily.org> writes:
> It is simpler and more natural if the "git interpret-trailers"
> is made a filter as its output already goes to sdtout.
sdtout?

Why isn't this a pure filter without any "infile" parameter in the first place?

Show 68 quoted lines
> Signed-off-by: Christian Couder <chriscool@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 04b0ae2..ae8e561 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 186316f..108e104 100644
> --- a/trailer.c
> +++ b/trailer.c
> @@ -483,8 +483,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');
>  }
> @@ -551,10 +556,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);
Previous: Christian CouderNext: Christian Couder
Message 38 of 48 in “Add interpret-trailers builtin”
  1. 00/14 Add interpret-trailers builtinChristian Couder, Feb 6, 2014
  2. 01/14 Add data structures and basic functions for commit trailersChristian Couder, Feb 6, 2014
  3. Junio C HamanoFeb 6, 2014
  4. Christian CouderFeb 9, 2014
  5. Eric SunshineFeb 10, 2014
  6. Junio C HamanoFeb 6, 2014
  7. Christian CouderFeb 9, 2014
  8. 02/14 trailer: process trailers from file and argumentsChristian Couder, Feb 6, 2014
  9. Junio C HamanoFeb 7, 2014
  10. Christian CouderFeb 9, 2014
  11. Junio C HamanoFeb 10, 2014
  12. Christian CouderFeb 10, 2014
  13. Junio C HamanoFeb 10, 2014
  14. Christian CouderFeb 11, 2014
  15. Junio C HamanoFeb 11, 2014
  16. Christian CouderFeb 14, 2014
  17. Junio C HamanoFeb 14, 2014
  18. Christian CouderFeb 14, 2014
  19. Junio C HamanoFeb 14, 2014
  20. Junio C HamanoFeb 14, 2014
  21. Junio C HamanoFeb 15, 2014
  22. Junio C HamanoFeb 21, 2014
  23. Christian CouderFeb 23, 2014
  24. 03/14 trailer: read and process config informationChristian Couder, Feb 6, 2014
  25. 04/14 trailer: process command line trailer argumentsChristian Couder, Feb 6, 2014
  26. Junio C HamanoFeb 7, 2014
  27. Christian CouderFeb 9, 2014
  28. 05/14 trailer: parse trailers from input fileChristian Couder, Feb 6, 2014
  29. 06/14 trailer: put all the processing together and printChristian Couder, Feb 6, 2014
  30. 07/14 trailer: add interpret-trailers commandChristian Couder, Feb 6, 2014
  31. Junio C HamanoFeb 7, 2014
  32. Christian CouderFeb 7, 2014
  33. Junio C HamanoFeb 7, 2014
  34. Junio C HamanoFeb 7, 2014
  35. 08/14 trailer: add tests for "git interpret-trailers"Christian Couder, Feb 6, 2014
  36. Junio C HamanoFeb 7, 2014
  37. 09/14 trailer: if no input file is passed, read from stdinChristian Couder, Feb 6, 2014
  38. Junio C HamanoFeb 7, 2014
  39. 10/14 trailer: execute command from 'trailer.<name>.command'Christian Couder, Feb 6, 2014
  40. Junio C HamanoFeb 7, 2014
  41. Junio C HamanoFeb 7, 2014
  42. 11/14 trailer: add tests for trailer commandChristian Couder, Feb 6, 2014
  43. 12/14 trailer: set author and committer env variablesChristian Couder, Feb 6, 2014
  44. Junio C HamanoFeb 7, 2014
  45. Junio C HamanoFeb 7, 2014
  46. 13/14 trailer: add tests for commands using env variablesChristian Couder, Feb 6, 2014
  47. 14/14 Documentation: add documentation for 'git interpret-trailers'Christian Couder, Feb 6, 2014
  48. Eric SunshineFeb 10, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.