RDF_Resource resolveReference (char *tok, RDFFile f) { RDF_Resource existing; char* url = getMem(MAX_URL_SIZE); if (tok[0] == '#') tok = &tok[1]; if (tok[strlen(tok)-1] == '"') tok[strlen(tok)-1] = '\0'; if (tok[0] == '"') tok = &tok[1]; memset(url, '\0', 200); if (charSearch(':', tok) == -1) { derelativizeURL(tok, url, f); } else { memcpy(url, tok, strlen(tok)); } if (strcmp(url,"this") == 0) { existing = f->top; } else { existing = RDF_GetResource(NULL, url, false); } if (existing != null) return existing; existing = RDF_GetResource(NULL, url, true); addToResourceList(f, existing); freeMem(url); return existing; }
RDF_Resource HistCreate (char* url, PRBool createp) { size_t size = strlen(url); char* nurl = getMem(size+8); RDF_Resource ans; if (charSearch(':', url) == -1) { if (url[size-1] == '/') { sprintf(nurl, "http://%s", url); nurl[strlen(nurl)-1] = '\0'; } else { sprintf(nurl, "http://%s/", url); } } else { if (url[size-1] == '/') { memcpy(nurl, url, size-1); } else { sprintf(nurl, "%s/", url); } } ans = RDF_GetResource(NULL, nurl, 0); if (ans != NULL) { freeMem(nurl); return ans; } freeMem(nurl); ans = RDF_GetResource(NULL, url, createp); if (ans != NULL) { return ans; } else { return NULL; } }
RDFT MakeMailAccountDB (char* url) { if (startsWith("mailaccount://", url)) { RDFT ntr = NewRemoteStore(url); char* fileurl = getMem(100); int32 n = PR_SKIP_BOTH; PRDirEntry *de; PRDir* dir ; RDF_Resource top = RDF_GetResource(NULL, url, 1); sprintf(fileurl, "%s%s", profileDirURL, &url[14]); dir = OpenDir(fileurl); if (dir == NULL) { if ( CallPRMkDirUsingFileURL(fileurl, 00700) > -1) dir = OpenDir(fileurl); } while ((dir != NULL) && ((de = PR_ReadDir(dir, (PRDirFlags)(n++))) != NULL)) { if ((!endsWith(".ssf", de->name)) && (!endsWith(".dat", de->name)) && (!endsWith(".snm", de->name)) && (!endsWith("~", de->name))) { RDF_Resource r; sprintf(fileurl, "mailbox://folder/%s/%s", &url[14], de->name); r = RDF_GetResource(NULL, fileurl, 1); setResourceType(r, PMF_RT); remoteStoreAdd(ntr, r, gCoreVocab->RDF_parent, top, RDF_RESOURCE_TYPE, 1); remoteStoreAdd(ntr, r, gCoreVocab->RDF_name, copyString(de->name), RDF_STRING_TYPE, 1); } } freeMem(fileurl); if (dir) PR_CloseDir(dir); return ntr; } else return NULL; }
void es_GetUrlExitFunc (URL_Struct *urls, int status, MWContext *cx) { RDF_Resource parent = NULL, child = NULL, r; _esFEData *feData; char *newURL, *p; feData = (_esFEData *)urls->fe_data; if ((status >= 0) && (feData != NULL)) { parent = RDF_GetResource(gNCDB, feData->parent, false); child = RDF_GetResource(gNCDB, feData->child, false); if ((parent != NULL) && (child != NULL)) { switch(feData->method) { case URL_POST_METHOD: if (((p = strrchr(resourceID(child), '/')) != NULL) && (*++p != '\0')) { if ((newURL = append2Strings(resourceID(parent), p)) != NULL) { if ((r = RDF_GetResource(gNCDB, newURL, 1)) != NULL) { setContainerp(r, containerp(child)); setResourceType(r, resourceType(child)); remoteStoreAdd(gRemoteStore, r, gCoreVocab->RDF_parent, parent, RDF_RESOURCE_TYPE, 1); } freeMem(newURL); } } break; case URL_DELETE_METHOD: remoteStoreRemove(gRemoteStore, child, gCoreVocab->RDF_parent, parent, RDF_RESOURCE_TYPE); break; } } } else if (status < 0) { if ((cx != NULL) && (urls != NULL) && (urls->error_msg != NULL)) { FE_Alert(cx, urls->error_msg); } } if (feData != NULL) { esFreeFEData(feData); } NET_FreeURLStruct (urls); }
static RDF_Resource native_resource(JNIEnv *ee, jobject resource) { static jfieldID fid = NULL; jstring jstr; RDF_Resource nresource = NULL; if (fid == NULL) { /* only do this once since its a well known class */ jclass cls = (*ee)->GetObjectClass(ee, resource); fid = (*ee)->GetFieldID(ee, cls, "resourceID", "Ljava/lang/String;"); if(fid == NULL) return NULL; } jstr = (*ee)->GetObjectField(ee, resource, fid); if (jstr) { const char *str; str = (*ee)->GetStringUTFChars(ee, jstr, 0); /* XXX no RDF_GetResource */ nresource = RDF_GetResource(NULL, (char *)str, PR_TRUE); (*ee)->ReleaseStringUTFChars(ee, jstr, str); } return nresource; }
RDF_Resource createContainer (char* id) { RDF_Resource r = RDF_GetResource(NULL, id, true); setContainerp(r, 1); return r; }
void newLeafBkItem (RDFFile f, char* token) { char* url = NULL; char* addDate = NULL; char* lastVisit = NULL; char* lastModified = NULL; uint8 current = 0; int32 len = strlen(token); int32 n = 0; char c = token[n++]; PRBool inString = false; RDF_Resource newR; while (n < len) { if (c == '"') { if (inString) { token[n-1] = '\0'; inString = false; } else { inString = true; if (current == 0) { url = &token[n]; } else if (current == 1) { addDate = &token[n]; } else if (current == 2) { lastVisit = &token[n]; } else if (current == 3) { lastModified = &token[n]; } current++; } } c = token[n++]; } if (url == NULL) return; newR = RDF_GetResource(NULL, url, true); addSlotValue(f, newR, gCoreVocab->RDF_parent, f->stack[f->depth-1], RDF_RESOURCE_TYPE, true); /* addSlotValue(f, newR, gWebData->RDF_URL, (void*)copyString(url), RDF_STRING_TYPE, true); */ if (addDate != NULL) { addSlotValue(f, newR, gNavCenter->RDF_bookmarkAddDate, (void*)copyString(addDate), RDF_STRING_TYPE, true); } if (lastVisit != NULL) { addSlotValue(f, newR, gWebData->RDF_lastVisitDate, (void*)copyString(lastVisit), RDF_STRING_TYPE, true); } if (lastModified != NULL) { addSlotValue(f, newR, gWebData->RDF_lastModifiedDate, (void*)copyString(lastModified), RDF_STRING_TYPE, true); } f->lastItem = newR; }
RDF_Resource createSeparator(void) { char url[50]; RDF_Resource sep; PR_snprintf(url, 50, "separator%i", separatorCounter++); sep = RDF_GetResource(NULL, url, 1); return sep; }
RDF_Resource getMCFFrtop (char* furl) { char* url = getBaseURL(furl); RDF_Resource r; r = RDF_GetResource(NULL, url, 1); freeMem(url); return r; }
RDF_Resource hostUnitOfURL (RDF r, RDF_Resource top, RDF_Resource nu, char* title) { char host[100]; char* url = resourceID(nu); int16 s1, s2, s3; RDF_Resource hostResource, existing; if (strlen(url) > 100) return NULL; if (startsWith("file", url)) { return RDF_GetResource(NULL, "Local Files", 1); } else { memset(host, '\0', 100); s1 = charSearch(':', url)+3; s2 = charSearch('/', &url[s1]); s3 = charSearch(':', &url[s1]); if (s2 == -1) s2 = strlen(url)-s1; if ((s3 != -1) && (s2 > s3)) s2 = s3; if (startsWith("www", &url[s1])) {s1 = s1+4; s2 = s2-4;} if (s2<1) return(NULL); memcpy((char*)host, &url[s1], s2); host[0] = toupper(host[0]); hostResource = RDF_GetResource(NULL, host, 1); setContainerp(hostResource, 1); setResourceType(hostResource, HISTORY_RT); existing = PL_HashTableLookup(hostHash, hostResource); if (existing != NULL) { if (existing == nu) { return existing; } else if (existing == top) { return hostResource; } else { remoteStoreRemove(gRemoteStore, existing, gCoreVocab->RDF_parent, top, RDF_RESOURCE_TYPE); histAddParent(existing, hostResource); histAddParent(hostResource, top); PL_HashTableAdd(hostHash, hostResource, top); return hostResource; } } else { PL_HashTableAdd(hostHash, hostResource, nu); histAddParent(nu, top); return nu; } } }
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; }
void RDF_StartMessageDelivery (RDFT rdf) { MF folder = (MF) rdf->pdata; MM msg = (MM) getMem(sizeof(struct MailMessage)); char* nurl = getMem(100); fseek(folder->mfile, 0L, SEEK_END); fprintf(folder->mfile, "From - \n"); msg->offset = ftell(folder->mfile); sprintf(nurl, "%s?%i", rdf->url, msg->offset); msg->r = RDF_GetResource(NULL, nurl, 1); msg->r->pdata = msg; msg->flags = getMem(4); folder->add = msg; setResourceType(msg->r, PM_RT); fseek(folder->mfile, 0L, SEEK_END); fputs("X-Mozilla-Status: 0000\n", folder->mfile); }
void parseNextESFTPLine (RDFFile f, char* line) { int16 i1, i2; char url[100]; RDF_Resource ru; PRBool directoryp; if (f->fileType == FTP_RT) { if (!startsWith("201", line)) return; line = &line[5]; } i1 = charSearch(' ', line); if (i1 == -1) return; i2 = charSearch(' ', &line[i1+1]) + i1 + 1; line[i1] = '\0'; directoryp = 0; if (strlen(line) > 64) return; if (resourceType(f->top) == ES_RT) { directoryp = startsWith("Director", &line[i1+1]); sprintf(url, "nes:%s%s%s", f->url, line, (directoryp ? "/" : "")); } else { int i3 = charSearch(' ', &line[i1+i2+1]); directoryp = startsWith("Directory", &line[i1+i2+i3+2]); /* this is bad as files can be of zero-length! if ((charSearch('.', line) ==-1) && (startsWith("0", &line[i1+1]))) directoryp = 1; */ sprintf(url, "%s%s%s", f->url, line, (directoryp ? "/" : "")); } ru = RDF_GetResource(NULL, url, 1); setResourceType(ru, resourceType(f->top)); if (directoryp) setContainerp(ru, 1); /* remoteStoreAdd(gRemoteStore, ru, gCoreVocab->RDF_name, NET_UnEscape(line), RDF_STRING_TYPE, 1); */ remoteStoreAdd(gRemoteStore, ru, gCoreVocab->RDF_parent, f->top, RDF_RESOURCE_TYPE, 1); }
void assignSlot (RDF_Resource u, char* slot, char* value, RDFFile f) { PRBool tv = true; char* tvstr; if (value[0] == '(') { tv = false; value = &value[1]; value[strlen(value)-1] = '\0'; } if (tv) { tvstr = "true"; } else tvstr = "false"; if (startsWith("default_genl", slot)) return; if (startsWith("name", slot) || (startsWith("local-name", slot))) { value[strlen(value)-1] = '\0'; addSlotValue(f, u, gCoreVocab->RDF_name, copyString(&value[1]), RDF_STRING_TYPE, tvstr); } else if (startsWith("specs", slot) || (startsWith("child", slot))) { RDF_Resource spec = resolveReference(value, f); if (!nullp(spec)) addSlotValue(f, spec, gCoreVocab->RDF_parent, u, RDF_RESOURCE_TYPE, tvstr); } else if (startsWith("genls_pos", slot)) { RDF_Resource genl = resolveGenlPosReference(value, f); if (!nullp(genl)) addSlotValue(f, u, gCoreVocab->RDF_parent, genl, RDF_RESOURCE_TYPE, tvstr); } else if ((startsWith("genls", slot)) || (startsWith("parent", slot))) { RDF_Resource genl = resolveReference(value, f); if (!nullp(genl)) addSlotValue(f, u, gCoreVocab->RDF_parent, genl, RDF_RESOURCE_TYPE, tvstr); } else { void* parsed_value; RDF_ValueType data_type; RDF_Resource s = RDF_GetResource(NULL, slot, true); RDF_Error err = parseSlotValue(f, s, value, &parsed_value, &data_type); if ((err == noRDFErr) && (!nullp(parsed_value))) addSlotValue(f, u, s, parsed_value, data_type, tvstr); } }
PRBool MoveMessage (char* to, char* from, MM message) { RDFT todb = getBFTranslator(to); RDFT fromdb = getBFTranslator(from); MF tom = todb->pdata; MF fom = fromdb->pdata; RDF_Resource r; MM newMsg = (MM)getMem(sizeof(struct MailMessage)); char* buffer = getMem(BUFF_SIZE); if (!buffer) return 0; setMessageFlag(fromdb, message->r, "0008"); fseek(tom->mfile, 0L, SEEK_END); fseek(fom->mfile, message->offset, SEEK_SET); fputs("From -\n", tom->mfile); sprintf(buffer, "mailbox://%s?%d", &to[17], ftell(tom->mfile)); r = RDF_GetResource(NULL, buffer, 1); newMsg->subject = copyString(message->subject); newMsg->from = copyString(message->from); newMsg->date = copyString(message->date); newMsg->r = r; r->pdata = newMsg; setResourceType(r, PM_RT); newMsg->summOffset = -1; newMsg->offset = ftell(tom->mfile); writeMsgSum(tom, newMsg); addMsgToFolder (tom, newMsg) ; fflush(tom->sfile); while (fgets(buffer, BUFF_SIZE, fom->mfile) && strncmp("From ", buffer, 5)) { fputs(buffer, tom->mfile); } sendNotifications2(todb, RDF_ASSERT_NOTIFY, r, gCoreVocab->RDF_parent, tom->top, RDF_RESOURCE_TYPE, 1); sendNotifications2(fromdb, RDF_DELETE_NOTIFY, message->r, gCoreVocab->RDF_parent, fom->top, RDF_RESOURCE_TYPE, 1); freeMem(buffer); return 1; }
void readSummaryFile (RDFT rdf) { if (startsWith("mailbox://", rdf->url)) { char* url = rdf->url; char* folderURL = &url[10]; int32 flen = strlen(profileDirURL) + strlen(folderURL) + 4; char* fileurl = getMem(flen); char* nurl = getMem(strlen(url) + 20); FILE *f; char* buff = getMem(BUFF_SIZE); MF folder = (MF) getMem(sizeof(struct MailFolder)); MM msg = NULL; FILE *mf; char* aclen; rdf->pdata = folder; sprintf(fileurl, "%s%s.ssf", profileDirURL, folderURL); fileurl = MCDepFileURL(fileurl); f = openPMFile(fileurl); sprintf(fileurl, "%s%s", profileDirURL, folderURL); fileurl = MCDepFileURL(fileurl); mf = openPMFile(fileurl); folder->top = RDF_GetResource(NULL, rdf->url, 1); setResourceType(folder->top, PM_RT); setContainerp(folder->top, 1); folder->top->pdata = folder; folder->rdf = rdf; folder->sfile = f; folder->mfile = mf; while (f && fgets(buff, BUFF_SIZE, f)) { if (startsWith("Status:", buff)) { msg = (MM) getMem(sizeof(struct MailMessage)); msg->flags = stripCopy(&buff[8]); fgets(buff, BUFF_SIZE, f); sscanf(&buff[9], "%d", &msg->summOffset); fgets(buff, BUFF_SIZE, f); msg->from = stripCopy(&buff[6]); fgets(buff, BUFF_SIZE, f); msg->subject = stripCopy(&buff[8]); fgets(buff, BUFF_SIZE, f); msg->date = stripCopy(&buff[6]); fgets(buff, BUFF_SIZE, f); sscanf(&buff[9], "%d", &msg->offset); sprintf(nurl, "%s?%d", url, msg->offset); msg->r = RDF_GetResource(NULL, nurl, 1); msg->r->pdata = msg; addMsgToFolder (folder, msg) ; setResourceType(msg->r, PM_RT); } } if (msg == NULL) { /* either a new mailbox or need to read BMF to recreate */ while (mf && fgets(buff, BUFF_SIZE, mf)) { if (strncmp("From ", buff, 5) ==0) { if (msg) writeMsgSum(folder, msg); msg = (MM) getMem(sizeof(struct MailMessage)); msg->offset = ftell(mf); msg->summOffset = -1; sprintf(nurl, "%s?%i", url, msg->offset); msg->r = RDF_GetResource(NULL, nurl, 1); msg->r->pdata = msg; setResourceType(msg->r, PM_RT); addMsgToFolder (folder, msg) ; } if ((!msg->from) && (startsWith("From:", buff))) { msg->from = stripCopy(&buff[6]); } else if ((!msg->date) && (startsWith("Date:", buff))) { msg->date = stripCopy(&buff[6]); } else if ((!msg->subject) && (startsWith("Subject:", buff))) { msg->subject = stripCopy(&buff[8]); } else if ((!msg->flags) && (startsWith("X-Mozilla-Status:", buff))) { msg->flags = stripCopy(&buff[17]); } } if (msg) writeMsgSum(folder, msg); if (folder->sfile) fflush(folder->sfile); } memset(fileurl, '\0', flen); memcpy(fileurl, rdf->url, strlen(rdf->url)); aclen = strchr(&fileurl[10], '/'); fileurl[aclen-fileurl] = '\0'; strcat(fileurl, "/trash"); folder->trash = fileurl; freeMem(buff); freeMem(nurl); /* GetPopToRDF(rdf); */ } }
void rdf_complete(NET_StreamClass *stream) { RDFFile f = (RDFFile)stream->data_object; if (strcmp(f->url, gNavCntrUrl) == 0) { if (f->resourceCount == 0) { parseNextRDFXMLBlob(stream, gDefaultNavcntr, strlen(gDefaultNavcntr)); } else { RDF_Resource browser = RDF_GetResource(NULL, "netscape:browser", 1); RDF_Resource updateID = RDF_GetResource(NULL, "updateID", 1); char* id = RDF_GetSlotValue(gNCDB, browser, updateID, RDF_STRING_TYPE, false, true); RDF_Resource updateFrom = RDF_GetResource(NULL, "updateURL", 1); char* uf = RDF_GetSlotValue(gNCDB, browser, updateFrom, RDF_STRING_TYPE, false, true); RDF_Resource fileSize = RDF_GetResource(NULL, "fileSize", 1); char* fs = RDF_GetSlotValue(gNCDB, browser, fileSize, RDF_STRING_TYPE, false, true); uint32 fSize; if (fs == NULL) { fSize = 3000; } else { sscanf("%lu", fs, &fSize); freeMem(fs); } if ((uf != NULL) && (id != NULL)) { #ifdef MOZ_SMARTUPDATE AutoUpdateConnnection autoupdt; autoupdt = AutoUpdate_Setup(FE_GetRDFContext(), id, uf, fSize, "http://warp/u/raman/docs/js/download.html"); autoupdate_Resume(autoupdt); #endif /* MOZ_SMARTUPDATE */ freeMem(uf); freeMem(id); } /* A temporary hack to demo AutoUpdate on windows */ #ifndef MOZ_SMARTUPDATE #ifndef XP_MAC /* { AutoUpdate_LoadMainScript(FE_GetRDFContext(), "http://warp/u/raman/docs/js/download.html"); } */ #endif /* !XP_MAC */ #endif /* MOZ_SMARTUPDATE */ } } if (f) { freeMem(f->line); freeMem(f->currentSlot); freeMem(f->holdOver); freeNamespaces(f) ; f->line = NULL; f->currentSlot = NULL; f->holdOver = NULL; } }
RDF_Resource hostUnitOfDate (RDF r, RDF_Resource u, time_t lastAccessDate) { RDF_Resource node = NULL, parentNode; /* RDF_Resources std; */ time_t now, tempTime; struct tm *T,nowStruct, dateStruct; char hourBuffer[128], dayBuffer[128], weekBuffer[128]; char bigBuffer[1024]; int numDays; /* NOTE: localtime uses a single static buffer, so MUST copy contents out */ time((time_t *)&now); if ((T = localtime(&now)) == NULL) return(NULL); nowStruct = *T; if ((T = localtime(&lastAccessDate)) == NULL) return(NULL); dateStruct = *T; bigBuffer[0] = hourBuffer[0] = dayBuffer[0] = weekBuffer[0] = 0; if (now < (lastAccessDate + SECS_IN_HOUR)) /* within the last hour */ { strcpy(hourBuffer, XP_GetString(RDF_WITHINLASTHOUR)); } else if ((nowStruct.tm_year == dateStruct.tm_year) && /* some time today */ (nowStruct.tm_yday == dateStruct.tm_yday)) { strcpy(dayBuffer, XP_GetString(RDF_TODAY)); hourRange(hourBuffer, &dateStruct); } else /* check if within last week */ { numDays = 7; do { now -= SECS_IN_DAY; if ((T = localtime(&now)) == NULL) return(NULL); nowStruct = *T; if ((nowStruct.tm_year == dateStruct.tm_year) && (nowStruct.tm_yday == dateStruct.tm_yday)) { sprintf(dayBuffer, "%d/%d - %s", (uint) dateStruct.tm_mon + 1, (uint)dateStruct.tm_mday, XP_GetString(RDF_DAY_0 + nowStruct.tm_wday)); hourRange(hourBuffer, &dateStruct); break; } } while (numDays-- > 0); if (dayBuffer[0] == '\0') /* older than a week */ { tempTime = lastAccessDate; numDays = dateStruct.tm_wday; while (numDays-- > 0) { tempTime -= SECS_IN_DAY; } if ((T = localtime(&tempTime)) == NULL) return(NULL); dateStruct = *T; #ifdef XP_MAC /* Mac epoch according to localtime is 1904 */ PR_snprintf(weekBuffer, sizeof(weekBuffer)-1, XP_GetString(RDF_WEEKOF), (uint)dateStruct.tm_mon + 1, (int)dateStruct.tm_mday, (uint)dateStruct.tm_year + 1904); #else PR_snprintf(weekBuffer, sizeof(weekBuffer)-1, XP_GetString(RDF_WEEKOF), (uint)dateStruct.tm_mon + 1, (int)dateStruct.tm_mday, (uint)dateStruct.tm_year + 1900); #endif if ((T = localtime(&lastAccessDate)) == NULL) return(NULL); dateStruct = *T; #ifdef XP_MAC /* Mac epoch according to localtime is 1904 */ sprintf(dayBuffer, "%s - %d/%d/%d", XP_GetString(RDF_DAY_0 + dateStruct.tm_wday), (uint) dateStruct.tm_mon + 1, (uint)dateStruct.tm_mday, (uint)dateStruct.tm_year + 1904); #else sprintf(dayBuffer, "%s - %d/%d/%d", XP_GetString(RDF_DAY_0 + dateStruct.tm_wday), (uint) dateStruct.tm_mon + 1, (uint)dateStruct.tm_mday, (uint)dateStruct.tm_year + 1900); #endif hourRange(hourBuffer, &dateStruct); } } parentNode = u; if (weekBuffer[0] != '\0') { if ((node = RDF_GetResource(NULL, weekBuffer, false)) == NULL) { if ((node = RDF_GetResource(NULL, weekBuffer, true)) == NULL) return(NULL); } setContainerp(node, 1); setResourceType(node, HISTORY_RT); remoteStoreAdd(gRemoteStore, node, gCoreVocab->RDF_parent, parentNode, RDF_RESOURCE_TYPE, 1); remoteStoreAdd(gRemoteStore, node, gCoreVocab->RDF_name, copyString(weekBuffer), RDF_STRING_TYPE, 1); parentNode = node; } if (dayBuffer[0] != '\0') { sprintf(bigBuffer, "%d/%d", (uint) dateStruct.tm_mon + 1, (uint)dateStruct.tm_mday); if ((node = RDF_GetResource(NULL, bigBuffer, false)) == NULL) { if ((node = RDF_GetResource(NULL, bigBuffer, true)) == NULL) return(NULL); } setContainerp(node, 1); setResourceType(node, HISTORY_RT); histAddParent(node, parentNode); sprintf(bigBuffer,"%s - %s",weekBuffer,dayBuffer); remoteStoreAdd(gRemoteStore, node, gCoreVocab->RDF_name, copyString(dayBuffer), RDF_STRING_TYPE, 1); parentNode = node; } if (hourBuffer[0] == 'W') { sprintf(bigBuffer, "%s", hourBuffer); if ((node = RDF_GetResource(NULL, bigBuffer, false)) == NULL) { if ((node = RDF_GetResource(NULL, bigBuffer, true)) == NULL) return(NULL); } setContainerp(node, 1); setResourceType(node, HISTORY_RT); remoteStoreAdd(gRemoteStore, node, gCoreVocab->RDF_parent, parentNode, RDF_RESOURCE_TYPE, 1); remoteStoreAdd(gRemoteStore, node, gCoreVocab->RDF_name, copyString(hourBuffer), RDF_STRING_TYPE, 1); parentNode = node; } return (node); }