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