newline[-2] == CR && newline[-1] == LF)
newline[-2] == nsCRT::CR && newline[-1] == nsCRT::LF)
convert_and_send_buffer(char* buf, int length, PRBool convert_newlines_p,							PRInt32 (*PR_CALLBACK per_line_fn) (char *line,												  PRUint32 line_length,												  void *closure),							void *closure){  /* Convert the line terminator to the native form.   */  char* newline;#if (MSG_LINEBREAK_LEN == 2)  /***  * This is a patch to support a mail DB corruption cause by earlier version that lead to a crash.  * What happened is that the line terminator is CR+NULL+LF. Therefore, we first process a line  * terminated by CR then a second line that contains only NULL+LF. We need to ignore this second  * line. See bug http://bugzilla.mozilla.org/show_bug.cgi?id=61412 for more information.  ***/  if (length == 2 && buf[0] == 0x00 && buf[1] == LF)    return 0;#endif  PR_ASSERT(buf && length > 0);  if (!buf || length <= 0) return -1;  newline = buf + length;  PR_ASSERT(newline[-1] == CR || newline[-1] == LF);  if (newline[-1] != CR && newline[-1] != LF) return -1;  if (!convert_newlines_p)	{	}#if (MSG_LINEBREAK_LEN == 1)  else if ((newline - buf) >= 2 &&		   newline[-2] == CR &&		   newline[-1] == LF)	{	  /* CRLF -> CR or LF */	  buf [length - 2] = MSG_LINEBREAK[0];	  length--;	}  else if (newline > buf + 1 &&		   newline[-1] != MSG_LINEBREAK[0])	{	  /* CR -> LF or LF -> CR */	  buf [length - 1] = MSG_LINEBREAK[0];	}#else  else if (((newline - buf) >= 2 && newline[-2] != CR) ||		   ((newline - buf) >= 1 && newline[-1] != LF))	{	  /* LF -> CRLF or CR -> CRLF */	  length++;	  buf[length - 2] = MSG_LINEBREAK[0];	  buf[length - 1] = MSG_LINEBREAK[1];	}#endif  return (*per_line_fn)(buf, length, closure);}