- foreach my $chinfo (@children) {
- my ($child,$exe,$isoutput)=@$chinfo;
- my $sigok = 0;
- if ($none) {
- if ($isoutput) {
- $sigok = 9;
- kill 9, $child or die "$child $!";
- } else {
- $sigok = 13;
- }
+
+ foreach my $ch (@children) {
+ $!=0; waitpid($ch->{Pid}, 0) == $ch->{Pid} or
+ die "$ch->{Pid} $ch->{Exe} $!";
+ $ch->{St} = $?;
+ }
+
+ my $st_isok = sub {
+ my ($ch) = @_;
+ my $st = $ch->{St};
+ return !$st || $ch->{SigOK}{($st & ~128)};
+ };
+
+ if ($tolerate_bad_fonts &&
+ $r eq 'no bdf data' &&
+ $st_isok->($ch{'gunzip'}) &&
+ ($ch{'pcf2bdf'}{St} & ~128) == 6)
+ {
+ $r = "pcf2bdf failed ($ch{'pcf2bdf'}{St})";
+ print STDERR "warning: $r: skipping $inpcfgz\n";
+ $ch{'pcf2bdf'}{SigOK}{6} = 1;
+ }
+ foreach my $ch (@children) {
+ if (!$st_isok->($ch)) {
+ die "update-xfonts-traditional:".
+ " $ch->{Exe} [$ch->{Pid}] for $inpcfgz".
+ " failed $ch->{St}".
+ " (".(join ' ', keys %{ $ch->{SigOK} })." ok)\n";