fixes bad semantics (an invalid fd is -1 not 0).
[apps/madmutt.git] / attach.c
index f917c1f..1dbc76e 100644 (file)
--- a/attach.c
+++ b/attach.c
@@ -570,8 +570,7 @@ return_error:
 }
 
 /* returns 1 on success, 0 on error */
 }
 
 /* returns 1 on success, 0 on error */
-int mutt_pipe_attachment (FILE * fp, BODY * b, const char *path,
-                          int out)
+int mutt_pipe_attachment(FILE * fp, BODY * b, const char *path, int out)
 {
   pid_t thepid;
   int rv = 0;
 {
   pid_t thepid;
   int rv = 0;
@@ -583,7 +582,7 @@ int mutt_pipe_attachment (FILE * fp, BODY * b, const char *path,
     STATE s;
     p_clear(&s, 1);
 
     STATE s;
     p_clear(&s, 1);
 
-    if (out)
+    if (out >= 0)
       thepid = mutt_create_filter_fd(path, &s.fpout, NULL, NULL, -1, out, -1);
     else
       thepid = mutt_create_filter(path, &s.fpout, NULL, NULL);
       thepid = mutt_create_filter_fd(path, &s.fpout, NULL, NULL, -1, out, -1);
     else
       thepid = mutt_create_filter(path, &s.fpout, NULL, NULL);
@@ -597,8 +596,7 @@ int mutt_pipe_attachment (FILE * fp, BODY * b, const char *path,
     s.fpin = fp;
     mutt_decode_attachment (b, &s);
     m_fclose(&s.fpout);
     s.fpin = fp;
     mutt_decode_attachment (b, &s);
     m_fclose(&s.fpout);
-  }
-  else {
+  } else {
     /* send case */
 
     FILE *ifp, *ofp;
     /* send case */
 
     FILE *ifp, *ofp;
@@ -608,10 +606,10 @@ int mutt_pipe_attachment (FILE * fp, BODY * b, const char *path,
       return 0;
     }
 
       return 0;
     }
 
-    if (out)
-      thepid = mutt_create_filter_fd (path, &ofp, NULL, NULL, -1, out, -1);
+    if (out >= 0)
+      thepid = mutt_create_filter_fd(path, &ofp, NULL, NULL, -1, out, -1);
     else
     else
-      thepid = mutt_create_filter (path, &ofp, NULL, NULL);
+      thepid = mutt_create_filter(path, &ofp, NULL, NULL);
 
     if (thepid < 0) {
       mutt_perror (_("Can't create filter"));
 
     if (thepid < 0) {
       mutt_perror (_("Can't create filter"));
@@ -629,16 +627,16 @@ int mutt_pipe_attachment (FILE * fp, BODY * b, const char *path,
 
 bail:
 
 
 bail:
 
-  if (out)
-    close (out);
+  if (out >= 0)
+    close(out);
 
   /*
    * check for error exit from child process
    */
 
   /*
    * check for error exit from child process
    */
-  if (mutt_wait_filter (thepid) != 0)
+  if (mutt_wait_filter(thepid) != 0)
     rv = 0;
 
     rv = 0;
 
-  if (rv == 0 || option (OPTWAITKEY))
+  if (rv == 0 || option(OPTWAITKEY))
     mutt_any_key_to_continue (NULL);
   return rv;
 }
     mutt_any_key_to_continue (NULL);
   return rv;
 }
@@ -913,7 +911,7 @@ int mutt_print_attachment (FILE * fp, BODY * a)
 
   tok = mime_which_token(type, -1);
   if (tok == MIME_TEXT_PLAIN || tok == MIME_APPLICATION_POSTSCRIPT) {
 
   tok = mime_which_token(type, -1);
   if (tok == MIME_TEXT_PLAIN || tok == MIME_APPLICATION_POSTSCRIPT) {
-    return (mutt_pipe_attachment (fp, a, NONULL (PrintCmd), 0));
+    return mutt_pipe_attachment(fp, a, NONULL (PrintCmd), -1);
   }
 
   if (mutt_can_decode (a)) {
   }
 
   if (mutt_can_decode (a)) {