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--)
{
state_maybe_utf8_putc(s, c, is_utf8, chs, map);
}
+ state_reset_prefix(s);
+
if(is_utf8)
state_fput_utf8(s, '\0', chs);
map = mutt_get_translation(charset, Charset);
}
- if(s->prefix) state_puts(s->prefix, s);
+ state_set_prefix(s);
while (len > 0)
{
state_maybe_utf8_putc(s, ch, is_utf8, chs, map);
}
+ state_reset_prefix(s);
+
if(is_utf8)
state_fput_utf8(s, '\0', chs);
}
buf[4] = 0;
- if (s->prefix && istext) state_puts (s->prefix, s);
+ if (istext) state_set_prefix(s);
while (len > 0)
{
else
state_maybe_utf8_putc(s, ch, is_utf8, chs, map);
}
+ state_reset_prefix(s);
}
/* ----------------------------------------------------------------------------
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);
}
+#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)