PRUint32 depth;
PRInt32 depth;
nsNNTPHost::ProcessLine(char* line, PRUint32 line_size){	/* guard against blank line lossage */	if (line[0] == '#' || line[0] == CR || line[0] == LF) return 0;	line[line_size] = 0;	if ((line[0] == 'o' || line[0] == 'O') &&		!PL_strncasecmp (line, "options", 7)) {		return RememberLine(line);	}	char *s;	char *end = line + line_size;	static nsNNTPArticleSet *set;		for (s = line; s < end; s++)		if (*s == ':' || *s == '!')			break;		if (*s == 0) {		/* What is this?? Well, don't just throw it away... */		return RememberLine(line);	}	set = nsNNTPArticleSet::Create(s + 1, this);	if (!set) return MK_OUT_OF_MEMORY;	PRBool subscribed = (*s == ':');	*s = '\0';	if (PL_strlen(line) == 0)	{		delete set;		return 0;	}	nsINNTPNewsgroup* info=NULL;    nsresult rv=NS_ERROR_NOT_INITIALIZED;    	if (subscribed && IsCategoryContainer(line))	{#ifdef HAVE_FOLDERINFO		info = new nsINNTPCategoryContainer(line, set, subscribed,												   this,												   m_hostinfo->GetDepth() + 1);#endif		nsMsgGroupRecord* group = FindOrCreateGroup(line);		// Go add all of our categories to the newsrc.		AssureAllDescendentsLoaded(group);		nsMsgGroupRecord* end = group->GetSiblingOrAncestorSibling();		nsMsgGroupRecord* child;		for (child = group->GetNextAlphabetic() ;			 child != end ;			 child = child->GetNextAlphabetic()) {			PR_ASSERT(child);			if (!child) break;			char* fullname = child->GetFullName();			if (!fullname) break;            rv = FindGroup(fullname, &info);			if (NS_FAILED(rv)) {                // autosubscribe, if we haven't seen this one.                char* groupLine = PR_smprintf("%s:", fullname);                if (groupLine) {                    ProcessLine(groupLine, PL_strlen(groupLine));                    PR_Free(groupLine);                }            } else {                    NS_RELEASE(info);			}			delete [] fullname;		}	}	else {        PRUint32 depth;        rv = m_hostinfo->GetDepth(&depth);                if (NS_SUCCEEDED(rv))            rv = NS_NewNewsgroup(&info, line, set, subscribed, this,                                 depth+1);    }	if (NS_FAILED(rv) || !info) return MK_OUT_OF_MEMORY;	// for now, you can't subscribe to category by itself.    nsINNTPCategory *category;    	if (NS_SUCCEEDED(info->QueryInterface(nsINNTPCategory::IID(),                                          (void **)&category))) {                nsIMsgFolder *folder = getFolderFor(info);        if (folder) {            m_hostinfo->AddSubFolder(folder);            NS_RELEASE(folder);        }                NS_RELEASE(category);	}	m_groups->Add(info);	// prime the folder info from the folder cache while it's still around.	// Except this might disable the update of new counts - check it out...#ifdef HAVE_MASTER	m_master->InitFolderFromCache (info);#endif	return 0;}