diff -up foomatic-filters-3.0-20080211/foomatic-rip.in.sigpipe foomatic-filters-3.0-20080211/foomatic-rip.in --- foomatic-filters-3.0-20080211/foomatic-rip.in.sigpipe 2008-05-07 16:40:10.000000000 +0100 +++ foomatic-filters-3.0-20080211/foomatic-rip.in 2008-05-07 16:45:16.000000000 +0100 @@ -3599,6 +3599,7 @@ sub getrendererhandle { close KID3; + $SIG{PIPE} = 'DEFAULT'; pipe KID4_IN, KID4; KID4->autoflush(1); $kid4 = fork(); @@ -3779,11 +3780,15 @@ sub getrendererhandle { # When arrived here the renderer command line was successful # So exit with zero exit value here and inform the main process close KID_MESSAGE; - print KID_MESSAGE_IN "3 $EXIT_PRINTED\n"; - close KID_MESSAGE_IN; # Wait for postpipe/output child waitpid($kid4, 0); - print $logh "KID3 finished\n"; + if ($? != 0) { + print KID_MESSAGE_IN "3 $EXIT_SIGNAL\n"; + } else { + print KID_MESSAGE_IN "3 $EXIT_PRINTED\n"; + } + close KID_MESSAGE_IN; + print $logh "KID3 finished with $?\n"; exit $EXIT_PRINTED; } else { $kidgeneration += 1; @@ -4132,6 +4137,7 @@ sub getfileconverterhandle { # converter close KID1_IN; + $SIG{PIPE} = 'DEFAULT'; pipe KID2_IN, KID2; KID2->autoflush(1); $kid2 = fork(); @@ -4603,6 +4609,7 @@ sub getdocgeneratorhandle { # we are the kid; we generate the documentation page close KID0_IN; + $SIG{PIPE} = 'DEFAULT'; # Kill data on STDIN to satisfy PPR if (($spooler eq 'ppr_int') || ($spooler eq 'ppr')) { @@ -6661,6 +6668,7 @@ sub modern_system { # will be members of this process group and so by killing this # process group we can kill all subprocesses and so we can # cleanly cancel print jobs + $SIG{PIPE} = 'DEFAULT'; eval("setpgrp()"); # Stop catching signals #use sigtrap qw(die normal-signals error-signals