1
0
forked from pool/mutt
mutt/widechar.sidebar.dif
2013-04-22 09:36:06 +00:00

41 lines
1.0 KiB
Plaintext

--- handler.c
+++ handler.c
@@ -778,7 +778,7 @@ static void enriched_set_flags (const wchar_t *tag, struct enriched_state *stte)
static int text_enriched_handler (BODY *a, STATE *s)
{
enum {
- TEXT, LANGLE, TAG, BOGUS_TAG, NEWLINE, ST_EOF, DONE
+ TEXT, TEXT_GOTWC, LANGLE, TAG, BOGUS_TAG, NEWLINE, ST_EOF, DONE
} state = TEXT;
long bytes = a->length;
@@ -807,7 +807,7 @@ static int text_enriched_handler (BODY *a, STATE *s)
{
if (state != ST_EOF)
{
- if (!bytes || (wc = fgetwc (s->fpin)) == WEOF)
+ if (state != TEXT_GOTWC && (!bytes || (fscanf (s->fpin, "%lc", &wc)) == EOF))
state = ST_EOF;
else
bytes--;
@@ -815,6 +815,8 @@ static int text_enriched_handler (BODY *a, STATE *s)
switch (state)
{
+ case TEXT_GOTWC:
+ state = TEXT;
case TEXT :
switch (wc)
{
@@ -875,9 +877,8 @@ static int text_enriched_handler (BODY *a, STATE *s)
enriched_flush (&stte, 1);
else
{
- ungetwc (wc, s->fpin);
bytes++;
- state = TEXT;
+ state = TEXT_GOTWC;
}
break;