PR_ASSERT(line && *line);
MimeHandleDecryptedOutputLine (char *line, PRInt32 length, MimeObject *obj){  /* Largely the same as MimeMessage_parse_line (the other MIME container	 type which contains exactly one child.)   */  MimeEncrypted *enc = (MimeEncrypted *) obj;  int status = 0;  PR_ASSERT(line && *line);  if (!line || !*line) return -1;  /* If we're supposed to write this object, but aren't supposed to convert	 it to HTML, simply pass it through unaltered. */  if (obj->output_p &&	  obj->options &&	  !obj->options->write_html_p &&	  obj->options->output_fn)	return MimeObject_write(obj, line, length, PR_TRUE);  /* If we already have a child object in the buffer, 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 (enc->part_buffer)	return MimePartBufferWrite (enc->part_buffer, line, length);  /* Otherwise we don't yet have a child object in the buffer, which means	 we're not done parsing our headers yet.   */  if (!enc->hdrs)	{	  enc->hdrs = MimeHeaders_new();	  if (!enc->hdrs) return MIME_OUT_OF_MEMORY;	}  status = MimeHeaders_parse_line(line, length, enc->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 == nsCRT::CR || *line == nsCRT::LF)	{	  status = MimeEncrypted_close_headers(obj);	  if (status < 0) return status;	}  return 0;}