Explorar el Código

git-notify: Check the exit status of pipes

Properly check the exit status of all processes we execute and abort on
error.
Holger Weiss hace 16 años
padre
commit
61f2cebae3
Se han modificado 1 ficheros con 5 adiciones y 5 borrados
  1. 5 5
      tools/git-notify

+ 5 - 5
tools/git-notify

@@ -309,7 +309,7 @@ sub mail_notification($$$@)
         }
         binmode MAIL, ":utf8";
         print MAIL join("\n", @text), "\n";
-        close MAIL;
+        close MAIL or die $! ? "Cannot execute $mailer: $!" : "$mailer exited with status: $?";
     }
 }
 
@@ -350,7 +350,7 @@ sub get_object_info($)
             $info{$1 . "_tz"} = $6;
         }
     }
-    close OBJ;
+    close OBJ or die $! ? "Cannot execute cat-file: $!" : "cat-file exited with status: $?";
 
     $info{"log"} = \@log;
     return %info;
@@ -388,7 +388,7 @@ sub send_commit_notice($$)
 
     open DIFF, "-|" or exec "git", "diff-tree", "-p", "-M", "--no-commit-id", $obj or die "cannot exec git-diff-tree";
     my $diff = join("", <DIFF>);
-    close DIFF;
+    close DIFF or die $! ? "Cannot execute diff-tree: $!" : "diff-tree exited with status: $?";
 
     return if length($diff) == 0;
 
@@ -419,7 +419,7 @@ sub send_commit_notice($$)
 
     open STAT, "-|" or exec "git", "diff-tree", "--stat", "-M", "--no-commit-id", $obj or die "cannot exec git-diff-tree";
     push @notice, join("", <STAT>);
-    close STAT;
+    close STAT or die $! ? "Cannot execute diff-tree: $!" : "diff-tree exited with status: $?";
 
     if (($max_diff_size == -1) || (length($diff) < $max_diff_size))
     {
@@ -479,7 +479,7 @@ sub send_cia_notice($$)
             push @cia_text, "        <file action=\"rename\" to=\"" . xml_escape($new) . "\">" . xml_escape($old) . "</file>";
         }
     }
-    close COMMIT;
+    close COMMIT or die $! ? "Cannot execute diff-tree: $!" : "diff-tree exited with status: $?";
 
     push @cia_text,
         "      </files>",