hdr->env = mutt_read_rfc822_header (ctx->fp, hdr);
hdr->env = mutt_read_rfc822_header (ctx->fp, hdr, 0);
int mmdf_parse_mailbox (CONTEXT *ctx){  char buf[HUGE_STRING];  char return_path[LONG_STRING];  int lines;  time_t t, tz;  long loc, tmploc;  HEADER *hdr;  struct stat sb;#ifdef NFS_ATTRIBUTE_HACK  struct utimbuf newtime;#endif  if (stat (ctx->path, &sb) == -1)  {    mutt_perror (ctx->path);    return (-1);  }  ctx->mtime = sb.st_mtime;  ctx->size = sb.st_size;#ifdef NFS_ATTRIBUTE_HACK  if (sb.st_mtime > sb.st_atime)  {    newtime.modtime = sb.st_mtime;    newtime.actime = time (NULL);    utime (ctx->path, &newtime);  }#endif  /* precompute the local timezone to speed up calculation of the     received time */  tz = mutt_local_tz ();  buf[sizeof (buf) - 1] = 0;  FOREVER  {    if (fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL)      break;    if (strcmp (buf, MMDF_SEP) == 0)    {      loc = ftell (ctx->fp);      if (ctx->msgcount == ctx->hdrmax)	mx_alloc_memory (ctx);      ctx->hdrs[ctx->msgcount] = hdr = mutt_new_header ();      hdr->offset = loc;      hdr->index = ctx->msgcount;      if (fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL)      {	dprint (1, (debugfile, "mmdf_parse_mailbox: unexpected EOF\n"));	break;      }      return_path[0] = 0;      t = is_from (buf, return_path, sizeof (return_path));      if (!t)	fseek (ctx->fp, loc, 0);      else	hdr->received = t + tz;      hdr->env = mutt_read_rfc822_header (ctx->fp, hdr);      loc = ftell (ctx->fp);      if (hdr->content->length > 0 && hdr->lines > 0)      {	tmploc = loc + hdr->content->length;	if (tmploc < ctx->size)	{	  fseek (ctx->fp, tmploc, 0);	  if (fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL ||	      strcmp (MMDF_SEP, buf) != 0)	  {	    fseek (ctx->fp, loc, 0);	    hdr->content->length = -1;	  }	}	else	  hdr->content->length = -1;      }      else	hdr->content->length = -1;      if (hdr->content->length < 0)      {	lines = -1;	do {	  loc = ftell (ctx->fp);	  if (fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL)	    break;	  lines++;	} while (strcmp (buf, MMDF_SEP) != 0);	hdr->lines = lines;	hdr->content->length = loc - hdr->content->offset;      }      if (!hdr->env->return_path && return_path[0])	hdr->env->return_path = rfc822_parse_adrlist (hdr->env->return_path, return_path);      if (!hdr->env->from)	hdr->env->from = rfc822_cpy_adr (hdr->env->return_path);      mx_update_context (ctx);    }    else    {      dprint (1, (debugfile, "mmdf_parse_mailbox: corrupt mailbox!\n"));      mutt_error _("Mailbox is corrupt!");      return (-1);    }  }  return 0;}