Rocco Rutte:
[apps/madmutt.git] / handler.c
index 09556d1..030916d 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -35,6 +35,7 @@
 #include "copy.h"
 #include "charset.h"
 #include "mutt_crypt.h"
+#include "lib.h"
 
 
 #define BUFI_SIZE 1000
@@ -902,6 +903,12 @@ void text_enriched_handler (BODY *a, STATE *s)
 
 #define FLOWED_MAX 77
 
+#if 0
+static int flowed_maybe_quoted (char *cont)
+{
+  return regexec ((regex_t *) QuoteRegexp.rx, cont, 0, NULL, 0) == 0;
+}
+
 static void flowed_quote (STATE *s, int level)
 {
   int i;
@@ -918,11 +925,6 @@ static void flowed_quote (STATE *s, int level)
     state_putc ('>', s);
 }
 
-static int flowed_maybe_quoted (char *cont)
-{
-  return regexec ((regex_t *) QuoteRegexp.rx, cont, 0, NULL, 0) == 0;
-}
-
 static void flowed_stuff (STATE *s, char *cont, int level)
 {
   if (!option (OPTTEXTFLOWED) && !(s->flags & M_DISPLAY))
@@ -965,7 +967,6 @@ static int flowed_visual_strlen (char *l, int i)
   return j;
 }
 
-#if 0
 static void text_plain_flowed_handler (BODY *a, STATE *s)
 {
   char line[LONG_STRING];
@@ -1207,31 +1208,45 @@ static int get_quote_level(char * line) {
 static void print_flowed_line(char * line, STATE *s,int ql) {
   int width;
   char * pos, * oldpos;
-  char * t;
   int len = strlen(line);
   int i;
 
-  width = COLS - WrapMargin - ql - 1;
-  if (option(OPTSTUFFQUOTED))
-    --width;
-  if (width < 0)
-    width = COLS;
+  if (MaxLineLength > 0) {
+    width = MaxLineLength - WrapMargin - ql - 1;
+    if (option(OPTSTUFFQUOTED))
+      --width;
+    if (width < 0)
+      width = MaxLineLength;
+  } 
+  else {
+    if (option(OPTMBOXPANE))
+      width = COLS - SidebarWidth - WrapMargin - ql - 1;
+    else
+      width = COLS - WrapMargin - ql - 1;
+    
+    if (option(OPTSTUFFQUOTED))
+      --width;
+    if (width < 0)
+      width = COLS;
+  } 
 
   /* fprintf(stderr,"print_flowed_line will print `%s' with ql = %d\n",line,ql); */
 
   if (strlen(line)==0) {
-    if (s->prefix)
-      state_puts(s->prefix,s);
-    for (i=0;i<ql;++i) state_putc('>',s);
-    if (option(OPTSTUFFQUOTED))
-      state_putc(' ',s);
+    if (option (OPTQUOTEEMPTY)) {
+      if (s->prefix)
+        state_puts(s->prefix,s);
+      for (i=0;i<ql;++i) state_putc('>',s);
+      if (option(OPTSTUFFQUOTED))
+        state_putc(' ',s);
+    }
     state_putc('\n',s);
     return;
   }
 
   pos=line+ql+width;
   oldpos=line+ql;
-  if (ql>0 && isblank(*oldpos)) ++oldpos;
+  if (ql>0 && ISBLANK(*oldpos)) ++oldpos;
 
   /* fprintf(stderr,"oldpos = %p line+len = %p\n",oldpos,line+len); */
 
@@ -1870,11 +1885,21 @@ void mutt_decode_attachment (BODY *b, STATE *s)
 
   Quotebuf[0] = '\0';
 
-  if (istext && s->flags & M_CHARCONV)
+  if (istext)
   {
-    char *charset = mutt_get_parameter ("charset", b->parameter);
-    if (charset && Charset)
-      cd = mutt_iconv_open (Charset, charset, M_ICONV_HOOK_FROM);
+    if(s->flags & M_CHARCONV)
+    {
+      char *charset = mutt_get_parameter ("charset", b->parameter);
+      if (!option (OPTSTRICTMIME) && !charset)
+        charset = mutt_get_first_charset (AssumedCharset);
+      if (charset && Charset)
+        cd = mutt_iconv_open (Charset, charset, M_ICONV_HOOK_FROM);
+    }
+    else
+    {
+      if (b->file_charset)
+        cd = mutt_iconv_open (Charset, b->file_charset, M_ICONV_HOOK_FROM);
+    }
   }
 
   fseek (s->fpin, b->offset, 0);