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

Re: [RFC] sending errors to stdout under $PAGER

From
Shawn O. Pearce <spearce@spearce.org>
Date
Feb 17, 2008, 07:50 UTC
Message-ID
<20080217075033.GP24004@spearce.org>
In-Reply-To
<7vbq6g90gy.fsf@gitster.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> wrote:
Show 9 quoted lines
> Because we spawn the pager as the foreground process and feed
> its input via pipe from the real command, we cannot affect the
> exit status the shell sees from git command when the pager is in
> use (I think there is not much gain we can have by working it
> around, though).  But at least it may make sense to show the
> error message to the user sitting in front of the pager, perhaps
> like this.
> 
> What do people think?  Have I overlooked any downsides?
I think this is a good idea.

If you are using an interactive pager, you have asked for the content to come to you through that. Not unlike how I have chosen to have the content come to me through a virtual pty and not a printer with green-and-white bar paper. :)

I've been bitten by this in the past a few times, but I have also been knowledgable enough about git, the command I ran, and the project I ran it on to realize something wasn't right with the output I am seeing in the pager and retry without the pager to see the real error(s).

Show 16 quoted lines
> +++ b/usage.c
> @@ -4,12 +4,15 @@
>   * Copyright (C) Linus Torvalds, 2005
>   */
>  #include "git-compat-util.h"
> +#include "cache.h"
>  
>  static void report(const char *prefix, const char *err, va_list params)
>  {
>  	char msg[256];
> +	FILE *outto = (pager_in_use() ? stdout : stderr);
> +
>  	vsnprintf(msg, sizeof(msg), err, params);
> -	fprintf(stderr, "%s%s\n", prefix, msg);
> +	fprintf(outto, "%s%s\n", prefix, msg);
>  }
-- 
Shawn.
Previous: Junio C HamanoNext: Jeff King
Message 2 of 9 in “[RFC] sending errors to stdout under $PAGER”
  1. Junio C HamanoFeb 16, 2008
  2. Shawn O. PearceFeb 17, 2008
  3. Jeff KingFeb 17, 2008
  4. Edgar ToernigFeb 17, 2008
  5. Johannes SchindelinFeb 17, 2008
  6. Junio C HamanoFeb 17, 2008
  7. Jeff KingFeb 17, 2008
  8. Junio C HamanoFeb 17, 2008
  9. Johannes SchindelinFeb 17, 2008

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.