}
rdf_BlockingParse(nsIURL* aURL, nsIStreamListener* aConsumer){    nsresult rv;    // XXX I really hate the way that we're spoon-feeding this stuff    // to the parser: it seems like this is something that netlib    // should be able to do by itself.    nsIInputStream* in;    if (NS_FAILED(rv = NS_OpenURL(aURL, &in, nsnull /* XXX aConsumer */)))        return rv;    rv = NS_ERROR_OUT_OF_MEMORY;    ProxyStream* proxy = new ProxyStream();    if (! proxy)        goto done;    // XXX shouldn't netlib be doing this???    aConsumer->OnStartBinding(aURL, "text/rdf");    while (PR_TRUE) {        char buf[1024];        PRUint32 readCount;        if (NS_FAILED(rv = in->Read(buf, sizeof(buf), &readCount)))            break; // error or eof        if (readCount == 0)            break; // eof        proxy->SetBuffer(buf, readCount);                        // XXX shouldn't netlib be doing this???        if (NS_FAILED(rv = aConsumer->OnDataAvailable(aURL, proxy, readCount)))            break;    }    if (rv == NS_BASE_STREAM_EOF) {        rv = NS_OK;    }    // XXX shouldn't netlib be doing this???    aConsumer->OnStopBinding(aURL, 0, nsnull);done:    NS_RELEASE(in);    return rv;}