From: Lars Ellenberg <l.g.e@web.de>
[apps/madmutt.git] / rfc3676.c
index 9b626ce..b1a2e01 100644 (file)
--- a/rfc3676.c
+++ b/rfc3676.c
@@ -68,7 +68,7 @@ static void print_flowed_line (char *line, STATE * s, int ql) {
   }
 
   if (str_len (line) == 0) {
-    if (option (OPTQUOTEEMPTY)) {
+    if (!(s->flags & M_REPLYING) || option (OPTQUOTEEMPTY)) {
       if (s->prefix)
         state_puts(s->prefix,s);
       for (i=0;i<ql;++i) state_putc('>',s);
@@ -173,7 +173,7 @@ int rfc3676_handler (BODY * a, STATE * s) {
      * possibly a change in quoting level. But that's better than not
      * displaying it at all.
      */
-    if ((t = strrchr (buf, '\n')) || (t = strrchr (buf, '\r'))) {
+    if ((t = strrchr (buf, '\r')) || (t = strrchr (buf, '\n'))) {
       *t = '\0';
       buf_len = t - buf;
     }
@@ -192,6 +192,15 @@ int rfc3676_handler (BODY * a, STATE * s) {
     if (delsp && buf_len >= 1 && buf[buf_len-1] == ' ')
       buf[--buf_len] = '\0';
 
+    /* we're here when last space removed 'cause of DelSp was
+     * the last space and there isn't more -> done */
+    if ((buf_len - buf_off) < 0) {
+      print_flowed_line (curline, s, quotelevel);
+      *curline = '\0';
+      curline_len = 1;
+      continue;
+    }
+
     /* signature separator also flushes the previous paragraph */
     if (strcmp(buf + buf_off, "-- ") == 0 && curline && *curline) {
       print_flowed_line (curline, s, quotelevel);