* [PATCH] diff-tree: stop on broken output pipe
@ 2006-01-02 0:17 Johannes Schindelin
2006-01-02 1:21 ` Andreas Ericsson
2006-01-06 22:36 ` Junio C Hamano
0 siblings, 2 replies; 5+ messages in thread
From: Johannes Schindelin @ 2006-01-02 0:17 UTC (permalink / raw)
To: git, junkio
---
Without this, on my iBook git-whatchanged keeps running when I
quit "less". I have to interrupt the process a second time. No
idea why it works on Linux.
diff-tree.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
a3ff3aa99f1cc7d1e59563fbf22fed8a4f3f2d24
diff --git a/diff-tree.c b/diff-tree.c
index efa2b94..c06ccd3 100644
--- a/diff-tree.c
+++ b/diff-tree.c
@@ -25,8 +25,9 @@ static int call_diff_flush(void)
return 0;
}
if (header) {
- if (!no_commit_id)
- printf("%s%c", header, diff_options.line_termination);
+ if (!no_commit_id && printf("%s%c", header,
+ diff_options.line_termination) < 0)
+ die("broken output pipe");
header = NULL;
}
diff_flush(&diff_options);
--
1.0.GIT
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] diff-tree: stop on broken output pipe
2006-01-02 0:17 [PATCH] diff-tree: stop on broken output pipe Johannes Schindelin
@ 2006-01-02 1:21 ` Andreas Ericsson
2006-01-02 11:01 ` Johannes Schindelin
2006-01-06 22:36 ` Junio C Hamano
1 sibling, 1 reply; 5+ messages in thread
From: Andreas Ericsson @ 2006-01-02 1:21 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git
Johannes Schindelin wrote:
> ---
>
> Without this, on my iBook git-whatchanged keeps running when I
> quit "less". I have to interrupt the process a second time. No
> idea why it works on Linux.
>
On Linux the sending end dies when it catches SIGPIPE. I would have
thought that should happen on OSX too. What shell are you running?
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] diff-tree: stop on broken output pipe
2006-01-02 1:21 ` Andreas Ericsson
@ 2006-01-02 11:01 ` Johannes Schindelin
0 siblings, 0 replies; 5+ messages in thread
From: Johannes Schindelin @ 2006-01-02 11:01 UTC (permalink / raw)
To: Andreas Ericsson; +Cc: git
Hi,
On Mon, 2 Jan 2006, Andreas Ericsson wrote:
> Johannes Schindelin wrote:
> > ---
> >
> > Without this, on my iBook git-whatchanged keeps running when I quit
> > "less". I have to interrupt the process a second time. No
> > idea why it works on Linux.
> >
>
> On Linux the sending end dies when it catches SIGPIPE. I would have thought
> that should happen on OSX too. What shell are you running?
Why, bash 2.05a0(1)-release (powerpc-app,e-darwin6.0). Is there a way to
turn off SIGPIPEs? Could be turned off by mistake here...
Ciao,
Dscho
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] diff-tree: stop on broken output pipe
2006-01-02 0:17 [PATCH] diff-tree: stop on broken output pipe Johannes Schindelin
2006-01-02 1:21 ` Andreas Ericsson
@ 2006-01-06 22:36 ` Junio C Hamano
2006-01-07 0:41 ` Johannes Schindelin
1 sibling, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2006-01-06 22:36 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> Without this, on my iBook git-whatchanged keeps running when I
> quit "less". I have to interrupt the process a second time. No
> idea why it works on Linux.
>
> - if (!no_commit_id)
> - printf("%s%c", header, diff_options.line_termination);
> + if (!no_commit_id && printf("%s%c", header,
> + diff_options.line_termination) < 0)
> + die("broken output pipe");
> header = NULL;
There are tons of output other than this printf() and catching
an output error only on this one and assuming that is a broken
pipe somehow feels doubly wrong to me.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] diff-tree: stop on broken output pipe
2006-01-06 22:36 ` Junio C Hamano
@ 2006-01-07 0:41 ` Johannes Schindelin
0 siblings, 0 replies; 5+ messages in thread
From: Johannes Schindelin @ 2006-01-07 0:41 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Hi,
On Fri, 6 Jan 2006, Junio C Hamano wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> > Without this, on my iBook git-whatchanged keeps running when I
> > quit "less". I have to interrupt the process a second time. No
> > idea why it works on Linux.
> >
> > - if (!no_commit_id)
> > - printf("%s%c", header, diff_options.line_termination);
> > + if (!no_commit_id && printf("%s%c", header,
> > + diff_options.line_termination) < 0)
> > + die("broken output pipe");
> > header = NULL;
>
> There are tons of output other than this printf() and catching
> an output error only on this one and assuming that is a broken
> pipe somehow feels doubly wrong to me.
Welcome back! Hope you had a good time, and the fish tasted fine.
There really are tons of printf(), but
- I did not want to be invasive,
- if one printf() fails, the next will, too (probably), and
- the problem occurs only on macosx here.
Maybe it is not correct to assume that the output pipe is broken, but it
is an error to keep going when printf() fails. So I picked one printf()
which is called regularly.
Andreas said that a SIGPIPE should be thrown, and bash should kill the
script. I have not found out why my bash doesn't. Until I do, I will have
this patch in my local git (and a similar patch in git-rev-list). It just
is plain annoying when git-whatchanged (the git script I use most often)
hangs there, burning cycles.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-01-07 0:41 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-02 0:17 [PATCH] diff-tree: stop on broken output pipe Johannes Schindelin
2006-01-02 1:21 ` Andreas Ericsson
2006-01-02 11:01 ` Johannes Schindelin
2006-01-06 22:36 ` Junio C Hamano
2006-01-07 0:41 ` Johannes Schindelin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).