From: Konstantin Sobolev <kos@supportwizard.com>
[apps/madmutt.git] / handler.c
index 6d4857b..06a1fcd 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -912,7 +912,7 @@ static int alternative_handler (BODY * a, STATE * s)
 
   if (choice) {
     if (s->flags & M_DISPLAY && !option (OPTWEED)) {
-      fseek (s->fpin, choice->hdr_offset, 0);
+      fseeko (s->fpin, choice->hdr_offset, 0);
       mutt_copy_bytes (s->fpin, s->fpout,
                        choice->offset - choice->hdr_offset);
     }
@@ -936,10 +936,10 @@ static int message_handler (BODY * a, STATE * s)
 {
   struct stat st;
   BODY *b;
-  long off_start;
+  LOFF_T off_start;
   int rc = 0;
 
-  off_start = ftell (s->fpin);
+  off_start = ftello (s->fpin);
   if (a->encoding == ENCBASE64 || a->encoding == ENCQUOTEDPRINTABLE ||
       a->encoding == ENCUUENCODED) {
     fstat (fileno (s->fpin), &st);
@@ -1049,7 +1049,7 @@ static int multipart_handler (BODY * a, STATE * s)
       state_printf (s, _("[-- Type: %s/%s, Encoding: %s, Size: %s --]\n"),
                     TYPE (p), p->subtype, ENCODING (p->encoding), length);
       if (!option (OPTWEED)) {
-        fseek (s->fpin, p->hdr_offset, 0);
+        fseeko (s->fpin, p->hdr_offset, 0);
         mutt_copy_bytes (s->fpin, s->fpout, p->offset - p->hdr_offset);
       }
       else
@@ -1242,7 +1242,7 @@ static int external_body_handler (BODY * b, STATE * s)
         state_printf (s, _("[-- name: %s --]\n"), b->parts->filename);
       }
 
-      mutt_copy_hdr (s->fpin, s->fpout, ftell (s->fpin), b->parts->offset,
+      mutt_copy_hdr (s->fpin, s->fpout, ftello (s->fpin), b->parts->offset,
                      (option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) |
                      CH_DECODE, NULL);
     }
@@ -1255,7 +1255,7 @@ static int external_body_handler (BODY * b, STATE * s)
       state_attach_puts (_("[-- and the indicated external source has --]\n"
                            "[-- expired. --]\n"), s);
 
-      mutt_copy_hdr (s->fpin, s->fpout, ftell (s->fpin), b->parts->offset,
+      mutt_copy_hdr (s->fpin, s->fpout, ftello (s->fpin), b->parts->offset,
                      (option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) |
                      CH_DECODE, NULL);
     }
@@ -1271,7 +1271,7 @@ static int external_body_handler (BODY * b, STATE * s)
                     _
                     ("[-- and the indicated access-type %s is unsupported --]\n"),
                     access_type);
-      mutt_copy_hdr (s->fpin, s->fpout, ftell (s->fpin), b->parts->offset,
+      mutt_copy_hdr (s->fpin, s->fpout, ftello (s->fpin), b->parts->offset,
                      (option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) |
                      CH_DECODE, NULL);
     }
@@ -1301,19 +1301,27 @@ void mutt_decode_attachment (BODY * b, STATE * s)
     }
   }
 
-  fseek (s->fpin, b->offset, 0);
+  fseeko (s->fpin, b->offset, 0);
   switch (b->encoding) {
   case ENCQUOTEDPRINTABLE:
-    mutt_decode_quoted (s, b->length, istext, cd);
+    mutt_decode_quoted (s, b->length, istext ||
+                        ((WithCrypto & APPLICATION_PGP) &&
+                         mutt_is_application_pgp (b)), cd);
     break;
   case ENCBASE64:
-    mutt_decode_base64 (s, b->length, istext, cd);
+    mutt_decode_base64 (s, b->length, istext ||
+                        ((WithCrypto & APPLICATION_PGP) &&
+                         mutt_is_application_pgp (b)), cd);
     break;
   case ENCUUENCODED:
-    mutt_decode_uuencoded (s, b->length, istext, cd);
+    mutt_decode_uuencoded (s, b->length, istext
+                           || ((WithCrypto & APPLICATION_PGP) &&
+                               mutt_is_application_pgp (b)), cd);
     break;
   default:
-    mutt_decode_xbit (s, b->length, istext, cd);
+    mutt_decode_xbit (s, b->length, istext
+                      || ((WithCrypto & APPLICATION_PGP) &&
+                          mutt_is_application_pgp (b)), cd);
     break;
   }
 
@@ -1412,7 +1420,7 @@ int mutt_body_handler (BODY * b, STATE * s)
 
 
   if (plaintext || handler) {
-    fseek (s->fpin, b->offset, 0);
+    fseeko (s->fpin, b->offset, 0);
 
     /* see if we need to decode this part before processing it */
     if (b->encoding == ENCBASE64 || b->encoding == ENCQUOTEDPRINTABLE || b->encoding == ENCUUENCODED || plaintext || mutt_is_text_part (b)) {   /* text subtypes may
@@ -1452,7 +1460,7 @@ int mutt_body_handler (BODY * b, STATE * s)
       mutt_decode_attachment (b, s);
 
       if (decode) {
-        b->length = ftell (s->fpout);
+        b->length = ftello (s->fpout);
         b->offset = 0;
         fclose (s->fpout);