* [RFC/PATCH] pager: do not fork a pager if environment variable PAGER is set to NONE
@ 2006-04-15 13:16 Johannes Schindelin
2006-04-15 20:50 ` Junio C Hamano
0 siblings, 1 reply; 5+ messages in thread
From: Johannes Schindelin @ 2006-04-15 13:16 UTC (permalink / raw)
To: git
This helps debugging tremendously.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
| 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
a91a9371e117555a03cfe7d24515787fb13005b6
--git a/pager.c b/pager.c
index 1364e15..1136adf 100644
--- a/pager.c
+++ b/pager.c
@@ -5,9 +5,8 @@ #include "cache.h"
* something different on Windows, for example.
*/
-static void run_pager(void)
+static void run_pager(const char *prog)
{
- const char *prog = getenv("PAGER");
if (!prog)
prog = "less";
setenv("LESS", "-S", 0);
@@ -16,10 +15,11 @@ static void run_pager(void)
void setup_pager(void)
{
+ const char *prog = getenv("PAGER");
pid_t pid;
int fd[2];
- if (!isatty(1))
+ if (!isatty(1) || (prog != NULL && !strcmp(prog, "NONE")))
return;
if (pipe(fd) < 0)
return;
@@ -43,6 +43,6 @@ void setup_pager(void)
close(fd[0]);
close(fd[1]);
- run_pager();
+ run_pager(prog);
exit(255);
}
--
1.3.0.rc4.g667c
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [RFC/PATCH] pager: do not fork a pager if environment variable PAGER is set to NONE
2006-04-15 13:16 [RFC/PATCH] pager: do not fork a pager if environment variable PAGER is set to NONE Johannes Schindelin
@ 2006-04-15 20:50 ` Junio C Hamano
2006-04-16 2:01 ` Johannes Schindelin
0 siblings, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2006-04-15 20:50 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> This helps debugging tremendously.
>
> Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
I like what this wants to do. I am not so sure PAGER=NONE is a
good convention, however.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/PATCH] pager: do not fork a pager if environment variable PAGER is set to NONE
2006-04-15 20:50 ` Junio C Hamano
@ 2006-04-16 2:01 ` Johannes Schindelin
2006-04-16 2:20 ` Junio C Hamano
0 siblings, 1 reply; 5+ messages in thread
From: Johannes Schindelin @ 2006-04-16 2:01 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Hi,
On Sat, 15 Apr 2006, Junio C Hamano wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> > This helps debugging tremendously.
> >
> > Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>
> I like what this wants to do. I am not so sure PAGER=NONE is a
> good convention, however.
I am sure it is not.
One solution would be to introduce yet another command line option
"--no-pager", but I find that ugly.
Another solution would be to check if the environment variable NO_PAGER is
set.
Wishes?
Ciao,
Dscho
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/PATCH] pager: do not fork a pager if environment variable PAGER is set to NONE
2006-04-16 2:01 ` Johannes Schindelin
@ 2006-04-16 2:20 ` Junio C Hamano
2006-04-16 2:44 ` Johannes Schindelin
0 siblings, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2006-04-16 2:20 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> Hi,
>
> On Sat, 15 Apr 2006, Junio C Hamano wrote:
>
>> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>>
>> > This helps debugging tremendously.
>> >
>> > Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>>
>> I like what this wants to do. I am not so sure PAGER=NONE is a
>> good convention, however.
>
> I am sure it is not.
>
> One solution would be to introduce yet another command line option
> "--no-pager", but I find that ugly.
>
> Another solution would be to check if the environment variable NO_PAGER is
> set.
>
> Wishes?
Honestly, undecided. Not that I think people would do
PAGER=NONE to mean a program /usr/bin/NONE.
Right now, the following does not say anything:
$ PAGER= git log
but I do not think that is a reasonably behaviour, either. So
detecting PAGER is set to an empty string (not "nonexistence" -
the current behaviour of defaulting to "less" in such a case is
reasonable) is probably a better alternative.
A somewhat related topic; I often set PAGER=cat when I do not
want the --[More]-- prompt and I thing many Emacs users do this.
It might also be good to detect it and omit piping in such a
case, but that is independent, so if you are going to do this as
well, please make it a separate patch.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/PATCH] pager: do not fork a pager if environment variable PAGER is set to NONE
2006-04-16 2:20 ` Junio C Hamano
@ 2006-04-16 2:44 ` Johannes Schindelin
0 siblings, 0 replies; 5+ messages in thread
From: Johannes Schindelin @ 2006-04-16 2:44 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Hi,
On Sat, 15 Apr 2006, Junio C Hamano wrote:
> A somewhat related topic; I often set PAGER=cat when I do not
> want the --[More]-- prompt and I thing many Emacs users do this.
> It might also be good to detect it and omit piping in such a
> case, but that is independent, so if you are going to do this as
> well, please make it a separate patch.
I was not quite sure if PAGER=cat could be taken as "user does not want
any pager to be fork()ed", but you are probably right: PAGER=cat means
that stdout is forwarded to stdout, i.e. we are better off not fork()ing
and calling "cat":
---
[PATCH] pager: do not fork a pager if PAGER=cat
This helps debugging tremendously.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
| 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
4a617a436bba9288cec5d3918d02c5b0e652df98
--git a/pager.c b/pager.c
index 1364e15..86e93b3 100644
--- a/pager.c
+++ b/pager.c
@@ -5,9 +5,8 @@ #include "cache.h"
* something different on Windows, for example.
*/
-static void run_pager(void)
+static void run_pager(const char *prog)
{
- const char *prog = getenv("PAGER");
if (!prog)
prog = "less";
setenv("LESS", "-S", 0);
@@ -16,10 +15,11 @@ static void run_pager(void)
void setup_pager(void)
{
+ const char *prog = getenv("PAGER");
pid_t pid;
int fd[2];
- if (!isatty(1))
+ if (!isatty(1) || (prog != NULL && !strcmp(prog, "cat")))
return;
if (pipe(fd) < 0)
return;
@@ -43,6 +43,6 @@ void setup_pager(void)
close(fd[0]);
close(fd[1]);
- run_pager();
+ run_pager(prog);
exit(255);
}
--
1.3.0.rc4.gb6b20-dirty
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-04-16 2:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-15 13:16 [RFC/PATCH] pager: do not fork a pager if environment variable PAGER is set to NONE Johannes Schindelin
2006-04-15 20:50 ` Junio C Hamano
2006-04-16 2:01 ` Johannes Schindelin
2006-04-16 2:20 ` Junio C Hamano
2006-04-16 2:44 ` Johannes Schindelin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox