]> Pileus Git - ~andy/fetchmail/commitdiff
Better error return reporting from the MDA.
authorEric S. Raymond <esr@thyrsus.com>
Fri, 13 Sep 2002 06:49:28 +0000 (06:49 -0000)
committerEric S. Raymond <esr@thyrsus.com>
Fri, 13 Sep 2002 06:49:28 +0000 (06:49 -0000)
svn path=/trunk/; revision=3713

sink.c

diff --git a/sink.c b/sink.c
index 3595aa85b2c7422ce00a5a1e3b93701ee911674c..a906fde711ef96c4511ecca7ad2580275ac082d4 100644 (file)
--- a/sink.c
+++ b/sink.c
 #include  <ctype.h>
 #include  <time.h>
 
+/* for W* macros after pclose() */
+#define _USE_BSD
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/wait.h>
+
+
 #include  "fetchmail.h"
 #include  "socket.h"
 #include  "smtp.h"
@@ -1246,8 +1254,17 @@ int close_sink(struct query *ctl, struct msgblk *msg, flag forward)
 
        if (rc)
        {
-           report(stderr, 
-                  GT_("MDA returned nonzero status %d\n"), rc);
+           if (WIFSIGNALED(rc)) {
+               report(stderr, 
+                       GT_("MDA died of signal %d\n"), WTERMSIG(rc));
+           } else if (WIFEXITED(rc)) {
+               report(stderr, 
+                       GT_("MDA returned nonzero status %d\n"), WEXITSTATUS(rc));
+           } else {
+               report(stderr,
+                       GT_("Strange: MDA pclose returned %d, cannot handle at %s:%d\n"), rc, __FILE__, __LINE__);
+           }
+
            return(FALSE);
        }
     }