if ( (*tPtr == CR) || (*tPtr == LF) )
if ( (*tPtr == nsCRT::CR) || (*tPtr == nsCRT::LF) )
MimeMessage_parse_line (char *line, PRInt32 length, MimeObject *obj){  MimeMessage *msg = (MimeMessage *) obj;  int status = 0;  PR_ASSERT(line && *line);  if (!line || !*line) return -1;#ifdef MOZ_SECURITY  HG11013#endif /* MOZ_SECURITY */  if (msg->grabSubject)  {    if ( (!PL_strncasecmp(line, "Subject: ", 9)) && (obj->parent) )    {      if ( (obj->headers) && (!obj->headers->munged_subject) )      {        obj->headers->munged_subject = (char *) PL_strndup(line + 9, length - 9);        char *tPtr = obj->headers->munged_subject;        while (*tPtr)        {          if ( (*tPtr == CR) || (*tPtr == LF) )          {            *tPtr = '\0';            break;          }          tPtr++;        }      }    }  }  /* If we already have a child object, then we're done parsing headers,	 and all subsequent lines get passed to the inferior object without	 further processing by us.  (Our parent will stop feeding us lines	 when this MimeMessage part is out of data.)   */  if (msg->container.nchildren)	{	  MimeObject *kid = msg->container.children[0];	  PRBool nl;	  PR_ASSERT(kid);	  if (!kid) return -1;	  /* Don't allow MimeMessage objects to not end in a newline, since it		 would be inappropriate for any following part to appear on the same		 line as the last line of the message.		 #### This assumes that the only time the `parse_line' method is		 called with a line that doesn't end in a newline is when that line		 is the last line.	   */	  nl = (length > 0 && (line[length-1] == CR || line[length-1] == LF));#ifdef MIME_DRAFTS	  if ( !mime_typep (kid, (MimeObjectClass*) &mimeMessageClass) &&		   obj->options &&		   obj->options->decompose_file_p &&		   ! obj->options->is_multipart_msg &&		   obj->options->decompose_file_output_fn )		{		  if (!obj->options->dexlate_p) {			  status = obj->options->decompose_file_output_fn (line,															   length,													 obj->options->stream_closure);			  if (status < 0) return status;			  if (!nl) {				status = obj->options->decompose_file_output_fn (MSG_LINEBREAK,																 MSG_LINEBREAK_LEN,													 obj->options->stream_closure);				if (status < 0) return status;			  }			  return status;		  }		}#endif /* MIME_DRAFTS */	  if (nl)		return kid->clazz->parse_buffer (line, length, kid);	  else		{		  /* Hack a newline onto the end. */		  char *s = (char *)PR_MALLOC(length + MSG_LINEBREAK_LEN + 1);		  if (!s) return MIME_OUT_OF_MEMORY;		  nsCRT::memcpy(s, line, length);		  PL_strcpy(s + length, MSG_LINEBREAK);		  status = kid->clazz->parse_buffer (s, length + MSG_LINEBREAK_LEN, kid);		  PR_Free(s);		  return status;		}	}  /* Otherwise we don't yet have a child object, which means we're not	 done parsing our headers yet.   */  if (!msg->hdrs)	{	  msg->hdrs = MimeHeaders_new();	  if (!msg->hdrs) return MIME_OUT_OF_MEMORY;	}#ifdef MIME_DRAFTS  if ( obj->options &&	     obj->options->decompose_file_p &&	     ! obj->options->is_multipart_msg &&	     obj->options->done_parsing_outer_headers &&	     obj->options->decompose_file_output_fn )   {  	status =  obj->options->decompose_file_output_fn( line, length,											                                obj->options->stream_closure );  	if (status < 0)       return status;  }#endif /* MIME_DRAFTS */  status = MimeHeaders_parse_line(line, length, msg->hdrs);  if (status < 0) return status;  /* If this line is blank, we're now done parsing headers, and should	 examine our content-type to create our "body" part.   */  if (*line == CR || *line == LF)	{	  status = MimeMessage_close_headers(obj);	  if (status < 0) return status;	}  return 0;}