]> diplodocus.org Git - minc/commitdiff
fix checking errors when running mhpath
authorEric Gillespie <epg@google.com>
Fri, 5 Dec 2014 22:48:19 +0000 (14:48 -0800)
committerEric Gillespie <epg@google.com>
Fri, 5 Dec 2014 22:48:19 +0000 (14:48 -0800)
minc

diff --git a/minc b/minc
index 2e93e13..cce6766 100755 (executable)
--- a/minc
+++ b/minc
@@ -45,6 +45,7 @@ use File::FcntlLock;
 use File::Temp qw(tempfile);
 use File::stat;
 use Getopt::Long qw(:config gnu_getopt no_ignore_case);
+use POSIX qw(WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG);
 use Pod::Usage;
 
 use constant LOCK_TRIES => 60;
@@ -185,8 +186,11 @@ our $folder_sorter = sub { sort_by_list(@_, @folder_sort_list) };
 
 my $mh;
 
-$mh = `mhpath +` or die;
+$mh = `mhpath +`; $? >= 0 or die;
 chomp($mh);
+if (!$mh) {
+    die('mhpath did not give MH mail path: ' . exit_msg($?));
+}
 
 $ENV{"MHCONTEXT"} = $mh . '/.minc.context';
 
@@ -194,6 +198,14 @@ $ENV{"MHCONTEXT"} = $mh . '/.minc.context';
 ###############################################################################
 # Utility procedures
 
+sub exit_msg {
+    my $status = shift;
+    WIFEXITED($status) && return 'exited with status ' . WEXITSTATUS($status);
+    WIFSIGNALED($status) && return 'killed with signal ' . WTERMSIG($status);
+    # WTF
+    "died ($status)";
+}
+
 sub sort_by_list {
     my $a = shift;
     my $b = shift;