state_putc(istext ? mutt_display_char(ch, map) : ch, s);
state_putc(istext ? mutt_display_char((unsigned char) ch, map) : ch, s);
void mutt_decode_base64 (STATE *s, BODY *b, int istext){  long len = b->length;  char buf[5];  int c1, c2, c3, c4, ch, cr = 0, i;  UNICODE_MAP *map = mutt_get_translation(mutt_get_parameter("charset", b->parameter), Charset);  buf[4] = 0;  if (s->prefix) state_puts (s->prefix, s);  while (len > 0)  {    for (i = 0 ; i < 4 && len > 0 ; len--)    {      if ((ch = fgetc (s->fpin)) == EOF)	return;      if (!ISSPACE (ch))	buf[i++] = ch;    }    if (i != 4)      return; /* didn't get a multiple of four chars! */    c1 = base64val (buf[0]);    c2 = base64val (buf[1]);    ch = (c1 << 2) | (c2 >> 4);    if (cr && ch != '\n') state_putc ('\r', s);    cr = 0;          if (istext && ch == '\r')      cr = 1;    else    {      state_putc(istext ? mutt_display_char(ch, map) : ch, s);      if (ch == '\n' && s->prefix) state_puts (s->prefix, s);    }    if (buf[2] == '=')      break;    c3 = base64val (buf[2]);    ch = ((c2 & 0xf) << 4) | (c3 >> 2);    if (cr && ch != '\n')      state_putc ('\r', s);    cr = 0;    if (istext && ch == '\r')      cr = 1;    else    {      state_putc(istext ? mutt_display_char(ch, map) : ch, s);      if (ch == '\n' && s->prefix)	state_puts (s->prefix, s);    }    if (buf[3] == '=') break;    c4 = base64val (buf[3]);    ch = ((c3 & 0x3) << 6) | c4;    if (cr && ch != '\n')      state_putc ('\r', s);    cr = 0;    if (istext && ch == '\r')      cr = 1;    else    {      state_putc(istext ? mutt_display_char(ch, map) : ch, s);      if (ch == '\n' && s->prefix)	state_puts (s->prefix, s);    }  }}