Thread (5 messages) flat view 5 messages, 3 authors, 2016-06-15

Re: [PATCH] diff-tree: stop on broken output pipe

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:42:16

Hi,

On Fri, 6 Jan 2006, Junio C Hamano wrote:
Johannes Schindelin [off-list ref] writes:
quoted
	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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help