NPN_PLUGIN_LOG(PLUGIN_LOG_NORMAL, ("NPN_RequestRead: stream=%p\n", (void*)pstream));  #ifdef PLUGIN_LOGGING
_requestread(NPStream *pstream, NPByteRange *rangeList){#ifdef NS_DEBUG  printf("\nRequestRead called by plugin: ");  for(NPByteRange * range = rangeList; range != nsnull; range = range->next)  {    printf("%i-%i", range->offset, range->offset + range->length - 1);    if(range->next)      printf(",");  }  printf("\n\n");#endif  if(!pstream || !rangeList || !pstream->ndata)    return NPERR_INVALID_PARAM;  nsresult res = NS_OK;    ns4xPluginStreamListener * streamlistener = (ns4xPluginStreamListener *)pstream->ndata;    if(NS_FAILED(res))    return NPERR_GENERIC_ERROR;  nsPluginStreamType streamtype = nsPluginStreamType_Normal;    streamlistener->GetStreamType(&streamtype);  if(streamtype != nsPluginStreamType_Seek)    return NPERR_STREAM_NOT_SEEKABLE;  if(streamlistener->mStreamInfo)    streamlistener->mStreamInfo->RequestRead((nsByteRange *)rangeList);  return NS_OK;}