Re: [RFC] sending errors to stdout under $PAGER
From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:44:14
Junio C Hamano [off-list ref] wrote:
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).
quoted hunk ↗ jump to hunk
+++ 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.