return dp;
if (mutt_is_utf8 (src)) { if (!(d->chs = mutt_get_charset (dest)) || unicode_init () == -1) { d->just_take_id = 1; return d; }  d->src_is_utf8 = 1; return d; }  if (!(d->chm = mutt_get_translation (src, dest))) d->just_take_id = 1;  return d;
DECODER *mutt_open_decoder (STATE *s, BODY *b, int istext){  DECODER *dp = safe_calloc (1, sizeof (DECODER));    dp->s = s;    if (istext && (s->flags & M_CHARCONV))  {    char *charset = mutt_get_parameter ("charset", b->parameter);    dp->is_utf8 = mutt_is_utf8 (charset) && !mutt_is_utf8 (Charset);        if (dp->is_utf8)    {      dp->sfu = new_utf8_state ();      dp->chs = mutt_get_charset (Charset);    }    else      dp->map = mutt_get_translation (charset, Charset);  }    return dp;}