void destroyLiteralList(RDF_LiteralList list, PRBool destroyLiterals) { if (list != NULL) { destroyLiteralList(list->next, destroyLiterals); if (destroyLiterals) { RDF_Literal literal = list->element; if (literal->c != NULL) RDF_DisposeCursor(literal->c); if (literal->valueType == RDF_STRING_TYPE) { int i; for (i = 0; i < literal->valueCount; i++) { TermStruc term = *(literal->v + i); if (constantTermp(term)) freeMem(term.value); } } freeMem(literal->v); freeMem(list->element); /* free the literal */ } freeMem(list); /* free the list structure */ } }
void HT_WriteOutAsBookmarks1 (RDF rdf, PRFileDesc *fp, RDF_Resource u, RDF_Resource top, int indent) { RDF_Cursor c = RDF_GetSources(rdf, u, gCoreVocab->RDF_parent, RDF_RESOURCE_TYPE, true); RDF_Resource next; char *date, *name, *url; int loop; if (c == NULL) return; if (u == top) { name = RDF_GetResourceName(rdf, u); ht_rjcprintf(fp, "<!DOCTYPE NETSCAPE-Bookmark-file-1>\n", NULL); ht_rjcprintf(fp, "<!-- This is an automatically generated file.\n", NULL); ht_rjcprintf(fp, "It will be read and overwritten.\n", NULL); ht_rjcprintf(fp, "Do Not Edit! -->\n", NULL); ht_rjcprintf(fp, "<TITLE>%s</TITLE>\n", (name) ? name:""); ht_rjcprintf(fp, "<H1>%s</H1>\n<DL><p>\n", (name) ? name:""); } while (next = RDF_NextValue(c)) { url = resourceID(next); if (containerp(next) && (!startsWith("ftp:",url)) && (!startsWith("file:",url)) && (!startsWith("IMAP:", url)) && (!startsWith("nes:", url)) && (!startsWith("mail:", url)) && (!startsWith("cache:", url)) && (!startsWith("ldap:", url))) { for (loop=0; loop<indent; loop++) ht_rjcprintf(fp, " ", NULL); date = numericDate(resourceID(next)); ht_rjcprintf(fp, "<DT><H3 ADD_DATE=\"%s\">", (date) ? date:""); if (date) freeMem(date); name = RDF_GetResourceName(rdf, next); ht_rjcprintf(fp, "%s</H3>\n", name); for (loop=0; loop<indent; loop++) ht_rjcprintf(fp, " ", NULL); ht_rjcprintf(fp, "<DL><p>\n", NULL); HT_WriteOutAsBookmarks1(rdf, fp, next, top, indent+1); for (loop=0; loop<indent; loop++) ht_rjcprintf(fp, " ", NULL); ht_rjcprintf(fp, "</DL><p>\n", NULL); } else if (isSeparator(next)) { for (loop=0; loop<indent; loop++) ht_rjcprintf(fp, " ", NULL); ht_rjcprintf(fp, "<HR>\n", NULL); } else { char* bkAddDate = (char*)RDF_GetSlotValue(rdf, next, gNavCenter->RDF_bookmarkAddDate, RDF_STRING_TYPE, false, true); for (loop=0; loop<indent; loop++) ht_rjcprintf(fp, " ", NULL); ht_rjcprintf(fp, "<DT><A HREF=\"%s\" ", resourceID(next)); date = numericDate(bkAddDate); ht_rjcprintf(fp, "ADD_DATE=\"%s\" ", (date) ? date: ""); if (date) freeMem(date); ht_rjcprintf(fp, "LAST_VISIT=\"%s\" ", resourceLastVisitDate(rdf, next)); ht_rjcprintf(fp, "LAST_MODIFIED=\"%s\">", resourceLastModifiedDate(rdf, next)); ht_rjcprintf(fp, "%s</A>\n", RDF_GetResourceName(rdf, next)); if (resourceDescription(rdf, next) != NULL) { ht_rjcprintf(fp, "<DD>%s\n", resourceDescription(rdf, next)); } } } RDF_DisposeCursor(c); if (u == top) { ht_rjcprintf(fp, "</DL>\n", NULL); } }