summaryrefslogtreecommitdiff
path: root/update-xfonts-traditional
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2016-05-01 12:37:03 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2016-05-01 12:41:29 +0100
commita6bafbd15bc99ab5efc7a20e86dd78fbb4ac4166 (patch)
tree38f16b8397cebfdb6ff7c57bbaad91fcdc0f5208 /update-xfonts-traditional
parentced98e3d359fbe2910913f8ff4d7a339ebf2c8d2 (diff)
update-xfonts-traditional: Generalise SIGPIPE handling in process_filter
If we didn't want to process this font, tolerate SIGPIPE for all elements of the pipeline before "self", rather than special-casing pcf2bdf. (We end up setting {SigOK}{13} again for gunzip, which is fine.) Now process_filter has no knowledge of particular pipeline stages.
Diffstat (limited to 'update-xfonts-traditional')
-rwxr-xr-xupdate-xfonts-traditional11
1 files changed, 9 insertions, 2 deletions
diff --git a/update-xfonts-traditional b/update-xfonts-traditional
index 8dccad4..01ae145 100755
--- a/update-xfonts-traditional
+++ b/update-xfonts-traditional
@@ -241,16 +241,23 @@ sub process_filter ($$$$$$$$) {
# for some other reason then sending it a KILL now won't
# affect its exit status.) We kill the output filters (before
# we close the output pipe) so we don't produce messages from
- # our output filters about corrupted data.
+ # our output filters about corrupted data. And we tolerate
+ # SIGPIPE in all the input filters.
flush $uswrite or die $!;
+ my $filterkind = 'input';
foreach my $ch (@children) {
if ($ch->{Stage} ne 'self') {
kill 9, $ch->{Pid} or die "$ch->{Pid} $ch->{Exe} $!";
$ch->{SigOK}{9} = 1;
+ } else {
+ $filterkind = 'output';
+ next;
+ }
+ if ($filterkind eq 'input') {
+ $ch->{SigOK}{13} = 1;
}
}
- $ch{'pcf2bdf'}{SigOK}{13} = 1;
# ... we might not have read all the output from pcf2bdf, which is OK
}