char buf[1024]; PRInt32 len;  while ((len = PR_Read(file, buf, sizeof(buf))) > 0) Tokenize(buf, len);  NS_RELEASE(bookmarks); }
while ((len = PR_Read(file, buf, sizeof(buf))) > 0) Tokenize(buf, len);
BookmarkParser::Parse(PRFileDesc* file, nsIRDFDataSource* dataSource){    NS_PRECONDITION(file && dataSource && mResourceMgr, "null ptr");    if (! file)        return NS_ERROR_NULL_POINTER;    if (! dataSource)        return NS_ERROR_NULL_POINTER;    if (! mResourceMgr)        return NS_ERROR_NOT_INITIALIZED;    // Initialize the parser for a run...    mDataSource = dataSource;    mState = eBookmarkParserState_Initial;    mCounter = 0;    mLastItem = nsnull;    mLine.Truncate();    nsresult rv;    nsIRDFNode* bookmarks;    if (NS_SUCCEEDED(rv = mResourceMgr->GetNode(kURI_bookmarks, bookmarks))) {        mStack.AppendElement(bookmarks);        char buf[1024];        PRInt32 len;        while ((len = PR_Read(file, buf, sizeof(buf))) > 0)            Tokenize(buf, len);        NS_RELEASE(bookmarks);    }    NS_IF_RELEASE(mLastItem);    rv = AddColumns();    return rv;}