]> git.llucax.com Git - software/mutt-debian.git/blobdiff - attach.c
debian/NEWS: backported a note about the new behavior with attachments on the command...
[software/mutt-debian.git] / attach.c
index 8c3edf2e5df894e19dab463109fe82eb7d0ecce4..106d68f114783861207d69e11cbfaa946ab67cd6 100644 (file)
--- a/attach.c
+++ b/attach.c
@@ -1,6 +1,6 @@
 /*
- * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
- * Copyright (C) 1999-2000 Thomas Roessler <roessler@does-not-exist.org>
+ * Copyright (C) 1996-2000,2002 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 1999-2004,2006 Thomas Roessler <roessler@does-not-exist.org>
  * 
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
@@ -76,8 +76,8 @@ int mutt_get_tmp_attachment (BODY *a)
   else
     mutt_perror(fpin ? tempfile : a->filename);
   
-  if(fpin)  fclose(fpin);
-  if(fpout) fclose(fpout);
+  if(fpin)  safe_fclose (&fpin);
+  if(fpout) safe_fclose (&fpout);
   
   return a->unlink ? 0 : -1;
 }
@@ -176,8 +176,8 @@ int mutt_compose_attachment (BODY *a)
              goto bailout;
            }
            mutt_copy_stream (fp, tfp);
-           fclose (fp);
-           fclose (tfp);
+           safe_fclose (&fp);
+           safe_fclose (&tfp);
            mutt_unlink (a->filename);  
            if (mutt_rename_file (tempfile, a->filename) != 0) 
            {
@@ -416,7 +416,7 @@ int mutt_view_attachment (FILE *fp, BODY *a, int flag, HEADER *hdr,
   int use_pipe = 0;
   int use_pager = 1;
   char type[STRING];
-  char command[STRING];
+  char command[HUGE_STRING];
   char descrip[STRING];
   char *fname;
   rfc1524_entry *entry = NULL;
@@ -551,20 +551,21 @@ int mutt_view_attachment (FILE *fp, BODY *a, int flag, HEADER *hdr,
       {
        if (a->description)
          snprintf (descrip, sizeof (descrip),
-                   "---Command: %-20.20s Description: %s",
+                   _("---Command: %-20.20s Description: %s"),
                    command, a->description);
        else
          snprintf (descrip, sizeof (descrip),
-                   "---Command: %-30.30s Attachment: %s", command, type);
+                   _("---Command: %-30.30s Attachment: %s"), command, type);
       }
 
       if ((mutt_wait_filter (thepid) || (entry->needsterminal &&
          option (OPTWAITKEY))) && !use_pager)
        mutt_any_key_to_continue (NULL);
-      
-      close(tempfd);
-      close(pagerfd);
-      
+
+      if (tempfd != -1)
+       close (tempfd);
+      if (pagerfd != -1)
+       close (pagerfd);
     }
     else
     {
@@ -600,10 +601,10 @@ int mutt_view_attachment (FILE *fp, BODY *a, int flag, HEADER *hdr,
     if (a->description)
       strfcpy (descrip, a->description, sizeof (descrip));
     else if (a->filename)
-      snprintf (descrip, sizeof (descrip), "---Attachment: %s : %s",
+      snprintf (descrip, sizeof (descrip), _("---Attachment: %s: %s"),
          a->filename, type);
     else
-      snprintf (descrip, sizeof (descrip), "---Attachment: %s", type);
+      snprintf (descrip, sizeof (descrip), _("---Attachment: %s"), type);
   }
   
   /* We only reach this point if there have been no errors */
@@ -797,21 +798,25 @@ int mutt_save_attachment (FILE *fp, BODY *m, char *path, int flags, HEADER *hdr)
     else
     {
       /* In recv mode, extract from folder and decode */
-      
+
       STATE s;
-      
+
       memset (&s, 0, sizeof (s));
+      s.flags |= M_CHARCONV;
+
       if ((s.fpout = mutt_save_attachment_open (path, flags)) == NULL)
       {
        mutt_perror ("fopen");
+       mutt_sleep (2);
        return (-1);
       }
       fseeko ((s.fpin = fp), m->offset, 0);
       mutt_decode_attachment (m, &s);
-      
+
       if (fclose (s.fpout) != 0)
       {
        mutt_perror ("fclose");
+       mutt_sleep (2);
        return (-1);
       }
     }
@@ -883,7 +888,7 @@ int mutt_decode_save_attachment (FILE *fp, BODY *m, char *path,
     if (stat (m->filename, &st) == -1)
     {
       mutt_perror ("stat");
-      fclose (s.fpout);
+      safe_fclose (&s.fpout);
       return (-1);
     }
 
@@ -914,7 +919,7 @@ int mutt_decode_save_attachment (FILE *fp, BODY *m, char *path,
 
   mutt_body_handler (m, &s);
 
-  fclose (s.fpout);
+  safe_fclose (&s.fpout);
   if (fp == NULL)
   {
     m->length = 0;
@@ -925,7 +930,7 @@ int mutt_decode_save_attachment (FILE *fp, BODY *m, char *path,
       m->parts = saved_parts;
       m->hdr = saved_hdr;
     }
-    fclose (s.fpin);
+    safe_fclose (&s.fpin);
   }
 
   return (0);