From: Thomas Roessler Date: Thu, 1 Oct 1998 16:18:38 +0000 (+0000) Subject: Gero Treuner's reply_quote patch. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=74e97e04c39ffe9b4418432518ca9833a9387235;p=neomutt Gero Treuner's reply_quote patch. --- diff --git a/handler.c b/handler.c index 0875b6a21..b6c48ca0e 100644 --- a/handler.c +++ b/handler.c @@ -89,8 +89,7 @@ void mutt_decode_xbit (STATE *s, BODY *b, int istext) else map = mutt_get_translation(charset, Charset); - if(s->prefix) - state_puts(s->prefix, s); + state_set_prefix(s); while ((c = fgetc(s->fpin)) != EOF && len--) { @@ -108,6 +107,8 @@ void mutt_decode_xbit (STATE *s, BODY *b, int istext) state_maybe_utf8_putc(s, c, is_utf8, chs, map); } + state_reset_prefix(s); + if(is_utf8) state_fput_utf8(s, '\0', chs); @@ -145,7 +146,7 @@ void mutt_decode_quoted (STATE *s, BODY *b, int istext) map = mutt_get_translation(charset, Charset); } - if(s->prefix) state_puts(s->prefix, s); + state_set_prefix(s); while (len > 0) { @@ -203,6 +204,8 @@ void mutt_decode_quoted (STATE *s, BODY *b, int istext) state_maybe_utf8_putc(s, ch, is_utf8, chs, map); } + state_reset_prefix(s); + if(is_utf8) state_fput_utf8(s, '\0', chs); } @@ -227,7 +230,7 @@ void mutt_decode_base64 (STATE *s, BODY *b, int istext) buf[4] = 0; - if (s->prefix && istext) state_puts (s->prefix, s); + if (istext) state_set_prefix(s); while (len > 0) { @@ -282,6 +285,7 @@ void mutt_decode_base64 (STATE *s, BODY *b, int istext) else state_maybe_utf8_putc(s, ch, is_utf8, chs, map); } + state_reset_prefix(s); } /* ---------------------------------------------------------------------------- diff --git a/lib.c b/lib.c index caa01fb74..89c681d55 100644 --- a/lib.c +++ b/lib.c @@ -1221,7 +1221,15 @@ char *mutt_quote_filename(const char *f) void state_prefix_putc(char c, STATE *s) { + if (s->flags & M_PENDINGPREFIX) + { + state_reset_prefix(s); + if (s->prefix) + state_puts(s->prefix, s); + } + state_putc(c, s); - if(c == '\n' && s->prefix) - state_puts(s->prefix, s); + + if(c == '\n') + state_set_prefix(s); } diff --git a/mutt.h b/mutt.h index 505cf3797..2cb513783 100644 --- a/mutt.h +++ b/mutt.h @@ -651,6 +651,10 @@ typedef struct +#define M_PENDINGPREFIX (1<<2) /* prefix to write, but character must follow */ + +#define state_set_prefix(s) ((s)->flags |= M_PENDINGPREFIX) +#define state_reset_prefix(s) ((s)->flags &= ~M_PENDINGPREFIX) #define state_puts(x,y) fputs(x,(y)->fpout) #define state_putc(x,y) fputc(x,(y)->fpout)