]> granicus.if.org Git - git/commitdiff
diff-highlight: exit when a pipe is broken
authorJohn Szakmeister <john@szakmeister.net>
Tue, 4 Nov 2014 20:01:12 +0000 (15:01 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 4 Nov 2014 21:18:35 +0000 (13:18 -0800)
While using diff-highlight with other tools, I have discovered that Python
ignores SIGPIPE by default.  Unfortunately, this also means that tools
attempting to launch a pager under Python--and don't realize this is
happening--means that the subprocess inherits this setting.  In this case, it
means diff-highlight will be launched with SIGPIPE being ignored.  Let's work
with those broken scripts by restoring the default SIGPIPE handler.

Signed-off-by: John Szakmeister <john@szakmeister.net>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/diff-highlight/diff-highlight

index c4404d49c9968608510809309b26e2d08eec8810..69a652e7b2cc4ed2e03ead8aec4b3abeebf20b14 100755 (executable)
@@ -14,6 +14,10 @@ my @removed;
 my @added;
 my $in_hunk;
 
+# Some scripts may not realize that SIGPIPE is being ignored when launching the
+# pager--for instance scripts written in Python.
+$SIG{PIPE} = 'DEFAULT';
+
 while (<>) {
        if (!$in_hunk) {
                print;