parent->hdr->env = mutt_read_rfc822_header (fp, parent->hdr);
parent->hdr->env = mutt_read_rfc822_header (fp, parent->hdr, 0);
BODY *mutt_parse_messageRFC822 (FILE *fp, BODY *parent){  BODY *msg;  parent->hdr = mutt_new_header ();  parent->hdr->offset = ftell (fp);  parent->hdr->env = mutt_read_rfc822_header (fp, parent->hdr);  msg = parent->hdr->content;  /* ignore the length given in the content-length since it could be wrong     and we already have the info to calculate the correct length */  /* if (msg->length == -1) */  msg->length = parent->length - (msg->offset - parent->offset);  /* if body of this message is empty, we can end up with a negative length */  if (msg->length < 0)    msg->length = 0;  if (msg->type == TYPEMULTIPART)    msg->parts = mutt_parse_multipart (fp, mutt_get_parameter ("boundary", msg->parameter), msg->offset + msg->length, strcasecmp ("digest", msg->subtype) == 0);  else if (msg->type == TYPEMESSAGE)    msg->parts = mutt_parse_messageRFC822 (fp, msg);  else    return (msg);    /* try to recover from parsing error */  if (!msg->parts)  {    msg->type = TYPETEXT;    safe_free ((void **) &msg->subtype);    msg->subtype = safe_strdup ("plain");  }  return (msg);}