FontDisplayerPeerObject:: FontDisplayerPeerObject(const char *dlmName) : dlm(dlmName), mimeList(NULL), deleted(0), disabled(0), native(-1), streamCount(0), fhList(NULL), unloadTimerId(NULL) { fpType = FontDisplayerPeerObject::WF_FP_DYNAMIC; fontDisplayer = NULL; displayerName = NULL; displayerDescription = NULL; if (dlm.status() < 0) { deleted = 1; return; } #ifdef DEBUG // Don't load in purified versions of libraries. if(XP_STRSTR(dlmName, "_pure_")) { XP_ASSERT(0); deleted = 1; return; } #endif if (load() < 0) { deleted = 1; return; } displayerName = CopyString(nffp_Name(fontDisplayer, NULL)); displayerDescription = CopyString(nffp_Description(fontDisplayer,NULL)); #if defined(XP_WIN) && !defined(WIN32) // Win16 It seems the const char * assignment doesn't work. char mimeString[256]; *mimeString = '\0'; strcpy(mimeString, nffp_EnumerateMimeTypes(fontDisplayer, NULL)); #else const char *mimeString = nffp_EnumerateMimeTypes(fontDisplayer, NULL); #endif if (mimeString && *mimeString ) { mimeList.reconstruct(mimeString); registerConverters(); } }
PUBLIC NET_StreamClass * CRAWL_CrawlerConverter(int format_out, void *data_object, URL_Struct *URL_s, MWContext *window_id) { #if defined(XP_MAC) #pragma unused(format_out, data_object) #endif NET_StreamClass *stream = NULL; crawl_page_scan_stream *obj; TRACEMSG(("Setting up display stream. Have URL: %s\n", URL_s->address)); XP_TRACE(("CRAWL_CrawlerConverter: %d %s", URL_s->server_status, URL_s->address)); if (URL_s->SARCache != NULL) { /* if the content length would exceed the cache limit, don't convert this */ if (((uint32)URL_s->content_length >= (URL_s->SARCache->MaxSize - URL_s->SARCache->DiskCacheSize)) && ((uint32)URL_s->content_length < BOGUS_CONTENT_LENGTH)) { CRAWL_PageInfo page = URL_s->owner_data; XP_TRACE(("not converting %s", URL_s->address)); if ((page->scan_complete_func != NULL) && (page->page_owner != NULL)) { page->scan_complete_func(page->page_owner, page); return(NULL); } } } stream = XP_NEW(NET_StreamClass); if(stream == NULL) return(NULL); obj = XP_NEW(crawl_page_scan_stream); if (obj == NULL) { XP_FREE(stream); return(NULL); } obj->parse_obj = CRAWL_MakeParseObj(); /* this object used to parse the page and destroyed in completion or abort function */ if (obj->parse_obj == NULL) return(NULL); obj->page = URL_s->owner_data; /* this data was set in crawl_makePage */ obj->page->lastModified = URL_s->last_modified; /* if there was a server error, read but don't parse the document */ if ((URL_s->server_status >= 400) || /* don't attempt to parse non-html */ ((XP_STRSTR(URL_s->content_type, TEXT_HTML) == NULL) && (XP_STRSTR(URL_s->content_type, INTERNAL_PARSER) == NULL))) { /* URL_s->dont_cache = PR_FALSE; */ obj->page->dontFollow = PR_TRUE; } stream->name = "Crawler Converter"; stream->complete = (MKStreamCompleteFunc) crawl_PageScanConvComplete; stream->abort = (MKStreamAbortFunc) crawl_PageScanConvAbort; stream->put_block = (MKStreamWriteFunc) crawl_PageScanConvPut; stream->is_write_ready = (MKStreamWriteReadyFunc) crawl_PageScanConvWriteReady; stream->data_object = obj; /* document info object */ stream->window_id = window_id; return(stream); }