continue the include dance
[apps/madmutt.git] / state.c
diff --git a/state.c b/state.c
index 715cc9e..f5642af 100644 (file)
--- a/state.c
+++ b/state.c
 
 #include <stdlib.h>
 #include <stdio.h>
+#include <stdarg.h>
+
+#include <lib-lib/debug.h>
 
 #include "mutt.h"
 #include "state.h"
+#include "rfc3676.h"
 
-static void state_prefix_put (const char *d, size_t dlen, STATE * s)
+static void state_prefix_put (const char *d, ssize_t dlen, STATE * s)
 {
   if (s->prefix)
     while (dlen--)
@@ -25,17 +29,17 @@ static void state_prefix_put (const char *d, size_t dlen, STATE * s)
     fwrite (d, dlen, 1, s->fpout);
 }
 
-void mutt_convert_to_state (iconv_t cd, char *bufi, size_t * l, STATE * s)
+void mutt_convert_to_state (iconv_t cd, char *bufi, ssize_t * l, STATE * s)
 {
   char bufo[BUFO_SIZE];
-  ICONV_CONST char *ib;
+  const char *ib;
   char *ob;
-  size_t ibl, obl;
+  ssize_t ibl, obl;
 
   if (!bufi) {
     if (cd != (iconv_t) (-1)) {
       ob = bufo, obl = sizeof (bufo);
-      iconv (cd, 0, 0, &ob, &obl);
+      my_iconv(cd, 0, 0, &ob, &obl);
       if (ob != bufo)
         state_prefix_put (bufo, ob - bufo, s);
     }
@@ -67,13 +71,16 @@ void state_prefix_putc (char c, STATE * s)
   if (s->flags & M_PENDINGPREFIX) {
     int i;
 
-    i = str_len (Quotebuf);
+    i = m_strlen(Quotebuf);
     Quotebuf[i++] = c;
     Quotebuf[i] = '\0';
     if (i == sizeof (Quotebuf) - 1 || c == '\n') {
       char buf[2 * SHORT_STRING];
       int j = 0, offset = 0;
       regmatch_t pmatch[1];
+#ifdef DEBUG
+      unsigned char save = '\0';
+#endif
 
       state_reset_prefix (s);
       while (regexec
@@ -85,7 +92,7 @@ void state_prefix_putc (char c, STATE * s)
         buf[0] = '\n';
         buf[1] = '\0';
       }
-      else if (option (OPTQUOTEQUOTED) && offset) {
+      else if (!option (OPTTEXTFLOWED) && option (OPTQUOTEQUOTED) && offset) {
         for (i = 0; i < offset; i++)
           if (Quotebuf[i] != ' ')
             j = i;
@@ -95,6 +102,15 @@ void state_prefix_putc (char c, STATE * s)
       else
         snprintf (buf, sizeof (buf), "%s%s", NONULL (s->prefix), Quotebuf);
 
+#ifdef DEBUG
+      if (m_strlen(buf) >= 2) {
+        save = buf[m_strlen(buf) - 1];
+        buf[m_strlen(buf) - 1] = '\0';
+        debug_print (2, ("buf = '%s'\n", buf));
+        buf[m_strlen(buf)] = save;
+      }
+#endif
+
       state_puts (buf, s);
     }
   }
@@ -121,7 +137,7 @@ int state_printf (STATE * s, const char *fmt, ...)
 
 void state_mark_attach (STATE * s)
 {
-  if ((s->flags & M_DISPLAY) && !str_cmp (Pager, "builtin"))
+  if ((s->flags & M_DISPLAY) && !m_strcmp(Pager, "builtin"))
     state_puts (AttachmentMarker, s);
 }