if (MaxLineLength > 0) {
width = MaxLineLength - WrapMargin - ql - 1;
- if (option (OPTSTUFFQUOTED))
+ if (!(s->flags & M_REPLYING) && option (OPTSTUFFQUOTED))
--width;
if (width < 0)
width = MaxLineLength;
else
width = COLS - WrapMargin - ql - 1;
- if (option (OPTSTUFFQUOTED))
+ if (!(s->flags & M_REPLYING) && option (OPTSTUFFQUOTED))
--width;
if (width < 0)
width = COLS;
if (s->prefix)
state_puts(s->prefix,s);
for (i=0;i<ql;++i) state_putc('>',s);
- if (option(OPTSTUFFQUOTED))
+ if (!(s->flags & M_REPLYING) && option(OPTSTUFFQUOTED))
state_putc(' ',s);
}
state_putc('\n',s);
for (i = 0; i < ql; ++i)
state_putc ('>', s);
- if (option (OPTSTUFFQUOTED) && (ql > 0 || s->prefix))
+ if (!(s->flags & M_REPLYING) && option (OPTSTUFFQUOTED) &&
+ (ql > 0 || s->prefix))
state_putc (' ', s);
if (delsp && spaces && space_len > 0) {
}
debug_print (4, ("f=f: quotelevel = %d, new prefix = '%s'\n",
i, NONULL (quote)));
- /* if we changed prefix, make sure we respect $stuff_quoted */
- snprintf (dst, dstlen, "%s%s%s%s", NONULL (s->prefix), NONULL (quote),
- option (OPTSTUFFQUOTED) && line[offset] != ' ' ? " " : "",
+ snprintf (dst, dstlen, "%s%s%s", NONULL (s->prefix), NONULL (quote),
&line[offset]);
}
+
+void rfc3676_space_stuff (HEADER* hdr) {
+#if DEBUG
+ int lc = 0;
+ size_t len = 0;
+ unsigned char c = '\0';
+#endif
+ FILE* in = NULL, *out = NULL;
+ char buf[LONG_STRING];
+ char tmpfile[_POSIX_PATH_MAX];
+
+ if (!hdr || !hdr->content || !hdr->content->filename)
+ return;
+
+ debug_print (2, ("f=f: postprocess %s\n", hdr->content->filename));
+ if ((in = safe_fopen (hdr->content->filename, "r")) == NULL)
+ return;
+ mutt_mktemp (tmpfile);
+ if ((out = safe_fopen (tmpfile, "w+")) == NULL) {
+ fclose (in);
+ return;
+ }
+
+ while (fgets (buf, sizeof (buf), in)) {
+ if (ascii_strncmp ("From ", buf, 4) == 0 || buf[0] == ' ') {
+ fputc (' ', out);
+#if DEBUG
+ lc++;
+ len = str_len (buf);
+ if (len > 0) {
+ c = buf[len-1];
+ buf[len-1] = '\0';
+ }
+ debug_print (4, ("f=f: line %d needs space-stuffing: '%s'\n",
+ lc, buf));
+ if (len > 0)
+ buf[len-1] = c;
+#endif
+ }
+ fputs (buf, out);
+ }
+ fclose (in);
+ unlink (hdr->content->filename);
+ fclose (out);
+ str_replace (&hdr->content->filename, tmpfile);
+}