PRInt32 	percent = (totIndex) ? (PRInt32)(100.0 * (double)numDownloaded / (double)totToDownload) : 0;
nsNNTPNewsgroupList::ProcessXOVER(char *line){	int status = 0;	char *next;	PRUint32 message_number=0;	//  PRInt32 lines;	PRBool read_p = PR_FALSE;	PR_ASSERT (line);	if (!line)      return NS_MSG_FAILURE;    #ifdef HAVE_DBVIEW	if (m_msgDBView != NULL)	{		status = ConvertMsgErrToMKErr( m_msgDBView->AddHdrFromServerLine(line, &message_number));		if (status < 0)		{#ifdef HAVE_PANES			if (status == MK_DISK_FULL || status == MK_OUT_OF_MEMORY)				FE_Alert(m_pane->GetContext(), XP_GetString(status));#endif			return status;		}	}	else #endif#ifdef HAVE_NEWSDB    if (m_newsDB != NULL)	{		status = ConvertMsgErrToMKErr(m_newsDB->AddHdrFromXOver(line, &message_number));	}	else		return -1;#endif	next = line;	PR_ASSERT(message_number > m_lastProcessedNumber ||			message_number == 1);	if (m_set && message_number > m_lastProcessedNumber + 1)	{		/* There are some articles that XOVER skipped; they must no longer		   exist.  Mark them as read in the newsrc, so we don't include them		   next time in our estimated number of unread messages. */		if (m_set->AddRange(m_lastProcessedNumber + 1, message_number - 1)) 		{		  /* This isn't really an important enough change to warrant causing			 the newsrc file to be saved; we haven't gathered any information			 that won't also be gathered for free next time.		   */		}	}	m_lastProcessedNumber = message_number;	if (m_knownArts.set) 	{		status = m_knownArts.set->Add(message_number);		if (status < 0) return status;	}	if (message_number > m_lastMsgNumber)	m_lastMsgNumber = message_number;	else if (message_number < m_firstMsgNumber)	m_firstMsgNumber = message_number;	if (m_set) {		read_p = m_set->IsMember(message_number);	}	/* Update the thermometer with a percentage of articles retrieved.	*/	if (m_lastMsgNumber > m_firstMsgNumber)	{		PRInt32	totToDownload = m_lastMsgToDownload - m_firstMsgToDownload;		PRInt32	lastIndex = m_lastProcessedNumber - m_firstMsgNumber + 1;		PRInt32	numDownloaded = lastIndex;		PRInt32	totIndex = m_lastMsgNumber - m_firstMsgNumber + 1;		PRInt32 	percent = (totIndex) ? (PRInt32)(100.0 * (double)numDownloaded / (double)totToDownload) : 0;#ifdef HAVE_PANES		FE_SetProgressBarPercent (m_pane->GetContext(), percent);#endif				/* only update every 10 articles for speed */		if ( (totIndex <= NEWS_ART_DISPLAY_FREQ) || ((lastIndex % NEWS_ART_DISPLAY_FREQ) == 0) || (lastIndex == totIndex))		{#ifdef HAVE_XPGETSTRING			char *statusTemplate = XP_GetString (MK_HDR_DOWNLOAD_COUNT);#else			char *statusTemplate = "XP_GetString not implemented in nsNNTPNewsgroupList.";#endif			char *statusString = PR_smprintf (statusTemplate, numDownloaded, totToDownload);#ifdef HAVE_PANES			FE_Progress (m_pane->GetContext(), statusString);#endif			PR_Free(statusString);		}	}	return status;}