void bkStateTransition (RDFFile f, char* token) { if (startsWith("<A", token)) { newLeafBkItem(f, token); f->status = IN_ITEM_TITLE; } else if (startsWith(OPEN_H3_STRING, token)) { newFolderBkItem(f, token); f->status = IN_H3; } else if (startsWith(OPEN_TITLE_STRING, token)) { f->status = IN_TITLE; } else if (startsWith(OPEN_H3_STRING, token)) { f->status = IN_H3; } else if (startsWith(DD_STRING, token)) { if (nlocalStoreGetSlotValue(gLocalStore, f->lastItem, gWebData->RDF_description, RDF_STRING_TYPE, false, true) == NULL) f->status = IN_ITEM_DESCRIPTION; } else if (startsWith(OPEN_DL_STRING, token)) { f->stack[f->depth++] = f->lastItem; } else if (startsWith(CLOSE_DL_STRING, token)) { f->depth--; } else if (startsWith("<HR>", token)) { addSlotValue(f, createSeparator(), gCoreVocab->RDF_parent, f->stack[f->depth-1], RDF_RESOURCE_TYPE, true); f->status = 0; } else if ((f->status == IN_ITEM_DESCRIPTION) && (startsWith("<BR>", token))) { addDescription(f, f->lastItem, token); } else f->status = 0; }
RDFUtil_GetFirstInstance (RDF_Resource type, char* defaultURL) { RDF_Resource bmk = nlocalStoreGetSlotValue(gLocalStore, type, gCoreVocab->RDF_instanceOf, RDF_RESOURCE_TYPE, true, true); if (bmk == NULL) { bmk = RDF_GetResource(NULL, defaultURL, 1); nlocalStoreAssert(gLocalStore, bmk, gCoreVocab->RDF_instanceOf, type, RDF_RESOURCE_TYPE, 1); } return bmk; }
RDFUtil_SetFirstInstance (RDF_Resource type, RDF_Resource item) { RDF_Resource bmk = nlocalStoreGetSlotValue(gLocalStore, type, gCoreVocab->RDF_instanceOf, RDF_RESOURCE_TYPE, true, true); if (bmk) { nlocalStoreUnassert(gLocalStore, bmk, gCoreVocab->RDF_instanceOf, type, RDF_RESOURCE_TYPE); } if (item) { nlocalStoreAssert(gLocalStore, item, gCoreVocab->RDF_instanceOf, type, RDF_RESOURCE_TYPE, true); } }
void addDescription (RDFFile f, RDF_Resource r, char* token) { char* desc = (char*) nlocalStoreGetSlotValue(gLocalStore, r, gWebData->RDF_description, RDF_STRING_TYPE, false, true); if (desc == NULL) { addSlotValue(f, f->lastItem, gWebData->RDF_description, copyString(token), RDF_STRING_TYPE, true); } else { addSlotValue(f, f->lastItem, gWebData->RDF_description, append2Strings(desc, token), RDF_STRING_TYPE, true); nlocalStoreUnassert(gLocalStore, f->lastItem, gWebData->RDF_description, desc, RDF_STRING_TYPE); } }
void collateHistory (RDF r, RDF_Resource u, PRBool byDateFlag) { HASHINFO hash = { 4*1024, 0, 0, 0, 0, 0}; DBT key, data; time_t last,first,numaccess; PRBool firstOne = 0; DB* db = CallDBOpenUsingFileURL(gGlobalHistoryURL, O_RDONLY ,0600, DB_HASH, &hash); grdf = r; if (db != NULL) { if (!byDateFlag) { hostHash = PL_NewHashTable(500, idenHash, PL_CompareValues, PL_CompareValues, null, null); } else ByDateOpened = 1; while (0 == (*db->seq)(db, &key, &data, (firstOne ? R_NEXT : R_FIRST))) { char* title = ((char*)data.data + 16); /* title */ char* url = (char*)key.data; /* url */ int32 flag = (int32)*((char*)data.data + 3*sizeof(int32)); firstOne = 1; #ifdef XP_UNIX if ((/*1 == flag &&*/ displayHistoryItem((char*)key.data))) { #else if (1 == flag && displayHistoryItem((char*)key.data)) { #endif COPY_INT32(&last, (time_t *)((char *)data.data)); COPY_INT32(&first, (time_t *)((char *)data.data + 4)); COPY_INT32(&numaccess, (time_t *)((char *)data.data + 8)); collateOneHist(r, u,url,title, last, first, numaccess, byDateFlag); } } (*db->close)(db); } } void collateOneHist (RDF r, RDF_Resource u, char* url, char* title, time_t lastAccessDate, time_t firstAccessDate, uint32 numAccesses, PRBool byDateFlag) { RDF_Resource hostUnit, urlUnit; char* existingName = NULL; if (startsWith("404", title)) return; urlUnit = HistCreate(url, 1); existingName = nlocalStoreGetSlotValue(gLocalStore, urlUnit, gCoreVocab->RDF_name, RDF_STRING_TYPE, 0, 1); if (existingName == NULL) { if (title[0] != '\0') remoteAddName(urlUnit, title); } else freeMem(existingName); if (byDateFlag) { hostUnit = hostUnitOfDate(r, u, lastAccessDate); } else { hostUnit = hostUnitOfURL(r, u, urlUnit, title); } if (hostUnit == NULL) return; if (hostUnit != urlUnit) remoteAddParent(urlUnit, hostUnit); remoteStoreAdd(gRemoteStore, urlUnit, gWebData->RDF_lastVisitDate, (void *)lastAccessDate, RDF_INT_TYPE, 1); remoteStoreAdd(gRemoteStore, urlUnit, gWebData->RDF_firstVisitDate, (void *)firstAccessDate, RDF_INT_TYPE, 1); if (numAccesses==0) ++numAccesses; remoteStoreAdd(gRemoteStore, urlUnit, gWebData->RDF_numAccesses, (void *)numAccesses, RDF_INT_TYPE, 1); }