if (!abort_p)
if (!abort_p && !outer_p)
MimeMessage_parse_eof (MimeObject *obj, PRBool abort_p){  int status;  PRBool outer_p;  MimeMessage *msg = (MimeMessage *)obj;  if (obj->closed_p) return 0;    /* Run parent method first, to flush out any buffered data. */  status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p);  if (status < 0) return status;  outer_p = !obj->headers;	/* is this the outermost message? */  // Once we get to the end of parsing the message, we will notify  // the emitter that we are done the the body.  // Mark the end of the mail body if we are actually emitting the  // body of the message (i.e. not Header ONLY)  if (       (outer_p) &&      ( obj->options && (obj->options->part_to_load == NULL) ) &&      (obj->options->headers != MimeHeadersOnly)     )    mimeEmitterEndBody(obj->options);  if (outer_p &&	  obj->options &&	  obj->options->write_html_p &&	  obj->options->generate_footer_html_fn)	{	  char *html =		obj->options->generate_footer_html_fn (NULL,											   obj->options->html_closure,											   msg->hdrs);	  if (html)		{		  int lstatus = MimeObject_write(obj, html, nsCRT::strlen(html), PR_FALSE);		  PR_Free(html);		  if (lstatus < 0) return lstatus;		}	}#ifdef MIME_DRAFTS  if ( obj->options &&	   obj->options->decompose_file_p &&	   obj->options->done_parsing_outer_headers &&	   ! obj->options->is_multipart_msg &&#ifdef MOZ_SECURITY	   HG00234#endif /* MOZ_SECURITY */	   obj->options->decompose_file_close_fn ) {	status = obj->options->decompose_file_close_fn (											   obj->options->stream_closure );	if ( status < 0 ) return status;  }#endif /* MIME_DRAFTS */  /* Put out a separator after every message/rfc822 object. */  if (!abort_p)	{	  status = MimeObject_write_separator(obj);	  if (status < 0) return status;	}  return 0;}