fseek (msg->fp, cur->content->offset, 0);  if (cur->content->type == TYPEMULTIPART) { if (!cur->content->parts) cur->content->parts = mutt_parse_multipart (msg->fp, mutt_get_parameter ("boundary", cur->content->parameter), cur->content->offset + cur->content->length, mutt_strcasecmp ("digest", cur->content->subtype) == 0); } else { if (!cur->content->parts) cur->content->parts = mutt_parse_messageRFC822 (msg->fp, cur->content); }   if (!cur->content->parts) { cur->content->type = TYPETEXT; safe_free ((void **) &cur->content->subtype); cur->content->subtype = safe_strdup ("plain"); }
mutt_parse_part (msg->fp, cur->content);
void mutt_parse_mime_message (CONTEXT *ctx, HEADER *cur){  MESSAGE *msg;  if (cur->content->type != TYPEMESSAGE && cur->content->type != TYPEMULTIPART)    return; /* nothing to do */  if ((msg = mx_open_message (ctx, cur->msgno)))  {    fseek (msg->fp, cur->content->offset, 0);    if (cur->content->type == TYPEMULTIPART)    {      if (!cur->content->parts)	cur->content->parts = mutt_parse_multipart (msg->fp, mutt_get_parameter ("boundary", cur->content->parameter), cur->content->offset + cur->content->length, mutt_strcasecmp ("digest", cur->content->subtype) == 0);    }    else    {      if (!cur->content->parts)	cur->content->parts = mutt_parse_messageRFC822 (msg->fp, cur->content);    }    /* try to recover from parsing error */    if (!cur->content->parts)    {      cur->content->type = TYPETEXT;      safe_free ((void **) &cur->content->subtype);      cur->content->subtype = safe_strdup ("plain");    }    #ifdef _PGPPATH    cur->pgp = pgp_query (cur->content);#endif /* _PGPPATH */    mx_close_message (&msg);  }}