static void remove_docs_from_content_list(struct IdTab *id_tab, int id_num, char *scrollkeeper_dir, char outputprefs) { int start, end; char cl_filename[PATHLEN], cl_ext_filename[PATHLEN]; xmlDocPtr cl_doc, cl_ext_doc; if (id_tab == NULL) return; end = 0; while (1) { start = end; while (start < id_num && end < id_num && !strcmp(id_tab[start].locale, id_tab[end].locale)) end++; if (start >= id_num) break; snprintf(cl_filename, PATHLEN, "%s/%s/scrollkeeper_cl.xml", scrollkeeper_dir, id_tab[start].locale); snprintf(cl_ext_filename, PATHLEN, "%s/%s/scrollkeeper_extended_cl.xml", scrollkeeper_dir, id_tab[start].locale); cl_doc = xmlParseFile(cl_filename); if (cl_doc == NULL) { sk_message(outputprefs, SKOUT_VERBOSE, SKOUT_QUIET,"(remove_docs_from_content_list)", _("wrong content list file %s\n"), cl_filename); continue; } cl_ext_doc = xmlParseFile(cl_ext_filename); if (cl_ext_doc == NULL) { sk_message(outputprefs, SKOUT_VERBOSE, SKOUT_QUIET, "(remove_docs_from_content_list)",_("wrong extended content list file %s\n"), cl_ext_filename); continue; } remove_doc_from_content_list(cl_doc->children, id_tab, start, end); remove_doc_from_content_list(cl_ext_doc->children, id_tab, start, end); xmlSaveFile(cl_filename, cl_doc); xmlFreeDoc(cl_doc); xmlSaveFile(cl_ext_filename, cl_ext_doc); xmlFreeDoc(cl_ext_doc); } }
TEG_STATUS xmlscores_save( PLIST_ENTRY pL_orig ) { xmlDocPtr doc; xmlNodePtr child; PLIST_ENTRY pL = pL_orig->Flink; char filename[512]; PSCORES pS; doc = xmlNewDoc((xmlChar*)"1.0"); child = xmlNewDocRawNode( doc, NULL, (xmlChar*)"teg_scores", NULL ); /* whats the difference between xmlNewDocRawNode & SetRootElement */ xmlDocSetRootElement( doc, child ); while( !IsListEmpty( pL_orig ) && (pL != pL_orig) ) { pS = (PSCORES) pL; xmlscores_add( child, pS ); pL = LIST_NEXT(pL); } snprintf( filename, sizeof(filename)-1,"%s/%s/server_scores.xml",g_get_home_dir(),TEG_DIRRC); filename[ sizeof(filename)-1 ] = 0; xmlSaveFile( filename , doc ); return TEG_STATUS_SUCCESS; }
/*delete one level xml node*/ int delete_eag_onelevel(char *fpath,char *node_name,char *attribute,char *ruler) { xmlDocPtr pdoc = NULL; xmlNodePtr pcurnode = NULL; char *psfilename; int flag=-1; psfilename = fpath; pdoc = xmlReadFile(psfilename,"utf-8",256); if(NULL == pdoc) { return 1; } pcurnode = xmlDocGetRootElement(pdoc); pcurnode = pcurnode->xmlChildrenNode; xmlNodePtr propNodePtr = pcurnode; while (NULL != pcurnode) { if (!xmlStrcmp(pcurnode->name, BAD_CAST node_name)) { propNodePtr = pcurnode; xmlChar* szAttr = xmlGetProp(propNodePtr,BAD_CAST attribute); if(!xmlStrcmp(szAttr,BAD_CAST ruler)) { xmlNodePtr tempNode; tempNode = pcurnode->next; xmlUnlinkNode(pcurnode); xmlFreeNode(pcurnode); pcurnode = tempNode; flag=0; continue; } xmlFree(szAttr); } pcurnode = pcurnode->next; } xmlSaveFile(fpath,pdoc); return flag; }
bool TasksetWriter::write(const std::string& filename, vector<Task*>& taskset) const { xmlDocPtr doc; tDebug() << "Writing Taskset to XML file: " << filename; xmlTextWriterPtr writer; writer = xmlNewTextWriterDoc(&doc, 0); xmlTextWriterSetIndent(writer, 1); if (xmlTextWriterSetIndentString(writer, (const xmlChar*) " ") != 0) { tError() << "Fehler beim Setzen des Einrueckens!"; } xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL); xmlTextWriterWriteComment(writer, (xmlChar*) "Hier kommen die Tasks"); xmlTextWriterStartElement(writer, (xmlChar*) "taskset"); xmlTextWriterWriteAttributeNS(writer, (xmlChar*) "xsi", (xmlChar*) "schemaLocation", (xmlChar*) "http://www.w3.org/2001/XMLSchema-instance", (xmlChar*) "http://www.tmsxmlns.com taskset.xsd"); xmlTextWriterWriteAttribute(writer, (xmlChar*) "xmlns", (xmlChar*) "http://www.tmsxmlns.com"); xmlTextWriterWriteRaw(writer, (xmlChar*) "\n"); for (size_t i = 0; i < taskset.size(); i++) { xmlTextWriterWriteRaw(writer, (xmlChar*) "\n"); //taskset[i]->write(writer); taskset[i]->writeToXML(writer); xmlTextWriterWriteRaw(writer, (xmlChar*) "\n"); } xmlTextWriterEndElement(writer); // close TaskSet xmlTextWriterEndDocument(writer); xmlFreeTextWriter(writer); xmlSaveFile(filename.c_str(), doc); xmlNodePtr cur = xmlDocGetRootElement(doc); if (cur == NULL) { tError() << "Empty document."; xmlFreeDoc(doc); return false; } if (xmlStrcmp(cur->name, (const xmlChar *) "taskset")) { tError() << "Document of the wrong type, root node != taskset"; xmlFreeDoc(doc); return false; } if (isValid(doc) > 0) { tDebug() << "Written document is valid"; } else { tError() << "Written document is invalid"; xmlFreeDoc(doc); return false; } xmlFreeDoc(doc); return true; }
/* Populate the preset with the current values in sliders, and save it to * disk */ static void preset_save(xmlDoc *preset, GtkWidget *slider_band[NUM_BANDS]) { gint i; gchar *gain; gchar *band_number; gchar *preset_fullname; xmlNode *child_node; xmlNode *root_node; /* Create nodes with band values */ root_node = xmlNewDocNode(preset, NULL, BAD_CAST XML_NODE_EQUALIZER, NULL); xmlDocSetRootElement(preset, root_node); for (i = 0; i < NUM_BANDS; i++) { gain = g_strdup_printf( "%.1f", gtk_range_get_value(GTK_RANGE(slider_band[i]))); band_number = g_strdup_printf("%d", i); child_node = xmlNewChild(root_node, NULL, BAD_CAST XML_NODE_BAND, BAD_CAST gain); xmlSetProp(child_node, BAD_CAST XML_PROP_BAND_NUMBER, BAD_CAST band_number); g_free(gain); g_free(band_number); } preset_fullname = g_strdup_printf ("%s/%s", HOME_PRESETS, preset->name); xmlSaveFile(preset_fullname, preset); g_free(preset_fullname); }
bool SACONFIG_API xml_SaveFile(char const * configFile, xml_doc_info * doc) { bool bRet = false; int count = 10; if(configFile == NULL) return bRet; if(doc == NULL) return bRet; if(!access(configFile, F_OK)) { while(access(configFile, W_OK)) { if(count <= 0) return bRet; count--; usleep(500*1000); } } if(xmlSaveFile(configFile, doc->doc)>0) bRet = true; return bRet; }
bool CCDictionarySaver::save2Plist(CCDictionary* pDict, const char* filename) { do { xmlDocPtr xmlDoc = xmlNewDoc(BAD_CAST"1.0"); CC_BREAK_IF(!xmlDoc); CC_BREAK_IF(!pDict); CC_BREAK_IF(!filename); xmlNodePtr root = xmlNewNode(NULL, ROOT_NODE_NAME); CC_BREAK_IF(!root); xmlNewProp(root, ROOT_PLIST_PROP, ROOT_PLIST_VERSION); CC_BREAK_IF(!saveDictionary(pDict, root)); // not sure how to check the return value xmlDocSetRootElement(xmlDoc, root); CC_BREAK_IF(!xmlSaveFile(filename, xmlDoc)); xmlFreeDoc(xmlDoc); return true; } while (false); return false; }
static int saveSBOLDocument(const char* filename) { int invalid = 0; if (!isValidSBOL(OUTPUT)) { invalid = 1; printf("WARNING: %s is not valid SBOL. Saving anyway.\n", filename); } int written = xmlSaveFile(filename, OUTPUT); return (int) invalid || written == -1; }
bool House::save() { xmlDocPtr doc; xmlNodePtr root, tmp; xmlMutexLock(xmlmutex); doc = xmlNewDoc((const xmlChar*)"1.0"); doc->children = xmlNewDocNode(doc, NULL, (const xmlChar*)"house", NULL); root = doc->children; std::stringstream sb; tmp = xmlNewNode(NULL, (const xmlChar*)"frontdoor"); sb << frontDoor.x; xmlSetProp(tmp, (const xmlChar*) "x", (const xmlChar*)sb.str().c_str()); sb.str(""); sb << frontDoor.y; xmlSetProp(tmp, (const xmlChar*) "y", (const xmlChar*)sb.str().c_str()); sb.str(""); sb << frontDoor.z; xmlSetProp(tmp, (const xmlChar*) "z", (const xmlChar*)sb.str().c_str()); sb.str(""); xmlAddChild(root, tmp); tmp = xmlNewNode(NULL, (const xmlChar*)"owner"); xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)owner.c_str()); xmlAddChild(root, tmp); for (size_t i = 0; i < subOwners.size(); i++) { tmp = xmlNewNode(NULL, (const xmlChar*)"subowner"); xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)subOwners[i].c_str()); xmlAddChild(root, tmp); } for (size_t i = 0; i < guests.size(); i++) { tmp = xmlNewNode(NULL, (const xmlChar*)"guest"); xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)guests[i].c_str()); xmlAddChild(root, tmp); } DoorOwnersMap::const_iterator iter = doorOwners.begin(); while (iter != doorOwners.end()) { Position pos = iter->first; for (size_t i = 0; i < iter->second.size(); i++) { tmp = xmlNewNode(NULL, (const xmlChar*)"doorowner"); // TODO: optimize sb << pos.x; xmlSetProp(tmp, (const xmlChar*) "x", (const xmlChar*)sb.str().c_str()); sb.str(""); sb << pos.y; xmlSetProp(tmp, (const xmlChar*) "y", (const xmlChar*)sb.str().c_str()); sb.str(""); sb << pos.z; xmlSetProp(tmp, (const xmlChar*) "z", (const xmlChar*)sb.str().c_str()); sb.str(""); xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)iter->second[i].c_str()); xmlAddChild(root, tmp); } ++iter; } xmlSaveFile(file.c_str(), doc); xmlFreeDoc(doc); xmlMutexUnlock(xmlmutex); return true; }
void gabor_mag_face_node_data_stack_output_file(GrmGui* gui){ xmlDocPtr doc; char* fname; doc= gabor_mag_stack_data_convert_to_xml(gui, &gui->face_node_data_stack); xmlDocDump(stdout, doc);/* debug_write */ fname= (char*)gtk_entry_get_text((GtkEntry*)gui->file_io_gui.output_file_entry); xmlSaveFile(fname, doc); printf("save xml data to %s\n", fname); }
int XmlParser::saveAsFile(const char * filename) { int ret = xmlSaveFile(filename, xmlDoc_); if(ret < 0) { return -1; } else { return 0; } }
bool SaveXmlCallback(const char *dest_filename, void *param) { xmlDocPtr doc = param; //saving xml to file if (xmlSaveFile(dest_filename, doc) == -1) { CfOut(OUTPUT_LEVEL_ERROR, "xmlSaveFile", "Failed to write xml document to file %s after editing\n", dest_filename); return false; } return true; }
bool SaveXmlCallback(const char *dest_filename, void *param) { xmlDocPtr doc = param; //saving xml to file if (xmlSaveFile(dest_filename, doc) == -1) { Log(LOG_LEVEL_ERR, "Failed to write xml document to file '%s' after editing. (xmlSaveFile: %s)", dest_filename, GetErrorStr()); return false; } return true; }
/*/add xml node , property one level*/ int add_eag_node_attr(char *fpath,char * node_name,char *attribute,char *ruler) { xmlDocPtr pdoc = NULL; xmlNodePtr pcurnode_f = NULL; xmlNodePtr pcurnode = NULL; char *psfilename; psfilename = fpath; int flag=0; pdoc = xmlReadFile(psfilename,"utf-8",256); if(NULL == pdoc) { return 1; } pcurnode_f = xmlDocGetRootElement(pdoc); pcurnode = pcurnode_f->xmlChildrenNode; while (NULL != pcurnode) { if (!xmlStrcmp(pcurnode->name, BAD_CAST node_name)) { xmlChar *value; value = xmlGetProp(pcurnode, (const xmlChar *)attribute); if(strcmp(ruler,(char*)value)==0) { flag = 1; } xmlFree(value); } pcurnode = pcurnode->next; } if(flag==0) { xmlNodePtr node = xmlNewNode(NULL, BAD_CAST node_name); xmlSetProp(node, BAD_CAST attribute, BAD_CAST ruler); xmlAddChild(pcurnode_f, node); } xmlSaveFile(fpath,pdoc); return flag; }
/** \param[in] fileNameString Export XML tree to this fileNameString. \retval RET_OK No problemo, XML tree saved to a file. \retval RET_FILENAME2LONG FileName is too long > MAX_PATH. \retval RET_CANNOTSAVE Cannot save to the XML file.*/ long FevenData::getDatasToFile( char* fileNameString) { if( strlen( fileNameString) > MAX_PATH) // Exit the famous overflow bug return RET_FILENAME2LONG; setMetaEvenDatasToXml(); long ret = xmlSaveFile( fileName, doc); if( ret == -1) return RET_CANNOTSAVE; else return RET_OK; }
static void set_openbox_theme (const char *theme) { const char *session_name; char *user_config_file, *fname; int count; // construct the file path session_name = g_getenv ("DESKTOP_SESSION"); if (!session_name) session_name = DEFAULT_SES; fname = g_strconcat (g_ascii_strdown (session_name, -1), "-rc.xml", NULL); user_config_file = g_build_filename (g_get_user_config_dir (), "openbox/", fname, NULL); g_free (fname); // read in data from XML file xmlInitParser (); LIBXML_TEST_VERSION xmlDocPtr xDoc = xmlParseFile (user_config_file); if (xDoc == NULL) { g_free (user_config_file); return; } xmlXPathContextPtr xpathCtx = xmlXPathNewContext (xDoc); xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression ((xmlChar *) "/*[local-name()='openbox_config']/*[local-name()='theme']", xpathCtx); // update relevant nodes with new values for (count = 0; count < xpathObj->nodesetval->nodeNr; count++) { xmlNode *node = xpathObj->nodesetval->nodeTab[count]; xmlAttr *attr = node->properties; xmlNode *cur_node = NULL; for (cur_node = node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type == XML_ELEMENT_NODE) { if (!strcmp (cur_node->name, "name")) xmlNodeSetContent (cur_node, theme); } } } // cleanup XML xmlXPathFreeObject (xpathObj); xmlXPathFreeContext (xpathCtx); xmlSaveFile (user_config_file, xDoc); xmlFreeDoc (xDoc); xmlCleanupParser (); g_free (user_config_file); }
void CSearchProfileList::Save(CString filename) { xmlDocPtr doc = xmlNewDoc((xmlChar*)&PROFILES_VERSION); xmlNodePtr root = xmlNewNode(0, (xmlChar*)&PROFILES_NAME); xmlDocSetRootElement(doc, root); POSITION p = GetHeadPosition(); while (p) { CSearchProfile* prof = (CSearchProfile*)GetNext(p); xmlNodePtr profile = xmlNewChild(root, 0, (xmlChar*)&PROFILE_NAME, 0); prof->Save(profile); } xmlSaveFile(filename, doc); xmlFreeDoc(doc); }
bool SaveXmlCallback(EvalContext *ctx, const char *dest_filename, const char *orig_filename, void *param, Attributes a, Promise *pp) { xmlDocPtr doc = param; //saving xml to file if (xmlSaveFile(dest_filename, doc) == -1) { cfPS(ctx, OUTPUT_LEVEL_ERROR, CF_FAIL, "xmlSaveFile", pp, a, "Failed to write xml document to file %s after editing\n", dest_filename); return false; } cfPS(ctx, OUTPUT_LEVEL_INFORM, CF_CHG, "", pp, a, " -> Edited xml file %s \n", orig_filename); return true; }
static gboolean bt_song_io_native_xml_save (gconstpointer const _self, const BtSong * const song, GError ** err) { const BtSongIONativeXML *const self = BT_SONG_IO_NATIVE_XML (_self); gboolean result = FALSE; gchar *const file_name; g_object_get ((gpointer) self, "file-name", &file_name, NULL); GST_INFO ("native io xml will now save song to \"%s\"", file_name ? file_name : "data"); xmlDocPtr const song_doc = xmlNewDoc (XML_CHAR_PTR ("1.0")); if (song_doc) { xmlNodePtr const root_node = bt_persistence_save (BT_PERSISTENCE (song), NULL); if (root_node) { xmlDocSetRootElement (song_doc, root_node); if (file_name) { if (xmlSaveFile (file_name, song_doc) != -1) { result = TRUE; GST_INFO ("xml saved okay"); } else { GST_WARNING ("failed to write song file \"%s\"", file_name); g_set_error_literal (err, G_IO_ERROR, g_io_error_from_errno (errno), g_strerror (errno)); } } else { xmlChar *mem; guint len; gpointer data; xmlDocDumpMemory (song_doc, &mem, (int *) &len); data = g_memdup (mem, len); xmlFree (mem); g_object_set ((gpointer) self, "data", data, "data-len", len, NULL); } } else { g_set_error (err, G_IO_ERROR, G_IO_ERROR_FAILED, "Failed to serialize XML doc."); } } else { g_set_error (err, G_IO_ERROR, G_IO_ERROR_FAILED, "Failed to create XML doc."); } g_free (file_name); return result; }
void mysave(void) { g_return_if_fail(teidoc); int ret = xmlSaveFile(selected_filename, teidoc); if(ret==-1) { mystatus(_("Saving to %s failed."), selected_filename); } if(file_modified) { file_modified = FALSE; on_file_modified_changed(); } mystatus(_("Saved.")); }
void kbd_table_save(const char * filename, kbd_table_t * keys, int len) { char * tmp_string; xmlDocPtr xml_doc; xmlNodePtr node; xmlNodePtr xml_child; xmlNodePtr xml_key; int i; xml_doc = xmlNewDoc((xmlChar*)"1.0"); node = xmlNewDocRawNode(xml_doc, NULL, (xmlChar*)root_name, NULL); xmlDocSetRootElement(xml_doc, node); xmlAddChild(node, BG_XML_NEW_TEXT("\n")); for(i = 0; i < len; i++) { xml_key = xmlNewTextChild(node, NULL, (xmlChar*)key_name, NULL); xml_child = xmlNewTextChild(xml_key, NULL, (xmlChar*)scancode_name, NULL); tmp_string = bg_sprintf("%d", keys[i].scancode); xmlAddChild(xml_child, BG_XML_NEW_TEXT(tmp_string)); free(tmp_string); if(keys[i].modifiers) { xml_child = xmlNewTextChild(xml_key, NULL, (xmlChar*)modifiers_name, NULL); xmlAddChild(xml_child, BG_XML_NEW_TEXT(keys[i].modifiers)); } if(keys[i].command) { xml_child = xmlNewTextChild(xml_key, NULL, (xmlChar*)command_name, NULL); xmlAddChild(xml_child, BG_XML_NEW_TEXT(keys[i].command)); } xmlAddChild(node, BG_XML_NEW_TEXT("\n")); } xmlSaveFile(filename, xml_doc); xmlFreeDoc(xml_doc); }
static gboolean prepare_desc (gchar *name) { GError *error = NULL; doc = gupnp_xml_doc_new_from_path (DATA_DIR "/" DESCRIPTION_DOC, &error); if (doc == NULL) { g_critical ("Unable to load the XML description file: %s", error->message); g_error_free (error); return FALSE; } if (name && (strlen(name) > 0)) { /* set the friendlyName in the xmlDoc */ init_friendly_name (name); } /* create and set the UUID in the xmlDoc */ init_uuid (); /* saving the xml file to the temporal location with the uuid name */ desc_location = g_strdup_printf ("%s/gupnp-network-light-%s.xml", g_get_tmp_dir (), uuid); g_assert (desc_location != NULL); if (xmlSaveFile (desc_location, doc->doc) < 0) { g_print ("Error saving description file to %s.\n", desc_location); g_free (desc_location); g_object_unref (doc); return FALSE; } return TRUE; }
int main() { xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0"); xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST"root"); //设置根节点 xmlDocSetRootElement(doc, root_node); //在根结点中创建节点 xmlNewTextChild(root_node, NULL, BAD_CAST"newNode1", BAD_CAST"newNode1 content"); xmlNewTextChild(root_node, NULL, BAD_CAST"newNode2", BAD_CAST"newNode2 content"); xmlNewTextChild(root_node, NULL, BAD_CAST"newNode3", BAD_CAST"newNode3 content"); //创建一个节点,设置其内容和属性,然后加入根节点 xmlNodePtr node = xmlNewNode(NULL, BAD_CAST"node2"); xmlNodePtr content = xmlNewText(BAD_CAST"NODE_CONTENT"); xmlAddChild(root_node, node); xmlAddChild(node, content); xmlNewProp(node, BAD_CAST"attribute", BAD_CAST"yes"); //创建一个儿子及孙子节点 node = xmlNewNode(NULL, BAD_CAST"son"); xmlAddChild(root_node, node); xmlNodePtr grandson = xmlNewNode(NULL, BAD_CAST"grandson"); xmlAddChild(node, grandson); //xmlAddChild(grandson, xmlNewText(BAD_CAST"This is a grandson node")); //存储xml文档 int nRel = xmlSaveFile("CreatedXml.xml", doc); if (-1 != nRel) { printf("一个XML文档被创建,写入%d个字节\n", nRel); } xmlFreeDoc(doc); return 0; }
int main() { xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0"); xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST"root"); xmlDocSetRootElement(doc, root_node); xmlNodePtr node1 = xmlNewNode(NULL, BAD_CAST"node1"); xmlNodePtr node2 = xmlNewNode(NULL, BAD_CAST"node2"); xmlNodePtr node3 = xmlNewNode(NULL, BAD_CAST"node3"); xmlAddChild(root_node, node1); xmlAddChild(root_node, node2); xmlAddChild(node2, node3); int nRel = xmlSaveFile("example.xml", doc); if (nRel != -1) { printf("save succeed.\n"); } xmlFreeDoc(doc); return 1; }
static void save_obconf_settings (void) { const char *session_name; char *user_config_file, *c, *font, *fname; int count; const gchar *size = NULL, *bold = NULL, *italic = NULL; // construct the file path session_name = g_getenv ("DESKTOP_SESSION"); if (!session_name) session_name = DEFAULT_SES; fname = g_strconcat (g_ascii_strdown (session_name, -1), "-rc.xml", NULL); user_config_file = g_build_filename (g_get_user_config_dir (), "openbox/", fname, NULL); g_free (fname); // set the font description variables for XML from the font name font = g_strdup (desktop_font); while ((c = strrchr (font, ' '))) { if (!bold && !italic && !size && atoi (c + 1)) size = c + 1; else if (!bold && !italic && !g_ascii_strcasecmp (c + 1, "italic")) italic = c + 1; else if (!bold && !g_ascii_strcasecmp (c + 1, "bold")) bold = c + 1; else break; *c = '\0'; } if (!bold) bold = "Normal"; if (!italic) italic = "Normal"; // read in data from XML file xmlInitParser (); LIBXML_TEST_VERSION xmlDocPtr xDoc = xmlParseFile (user_config_file); if (xDoc == NULL) { g_free (font); g_free (user_config_file); return; } xmlXPathContextPtr xpathCtx = xmlXPathNewContext (xDoc); xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression ((xmlChar *) "/*[local-name()='openbox_config']/*[local-name()='theme']/*[local-name()='font']", xpathCtx); // update relevant nodes with new values for (count = 0; count < xpathObj->nodesetval->nodeNr; count++) { xmlNode *node = xpathObj->nodesetval->nodeTab[count]; xmlAttr *attr = node->properties; xmlNode *cur_node = NULL; for (cur_node = node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type == XML_ELEMENT_NODE) { if (!strcmp (cur_node->name, "name")) xmlNodeSetContent (cur_node, font); if (!strcmp (cur_node->name, "size")) xmlNodeSetContent (cur_node, size); if (!strcmp (cur_node->name, "weight")) xmlNodeSetContent (cur_node, bold); if (!strcmp (cur_node->name, "slant")) xmlNodeSetContent (cur_node, italic); } } } // cleanup XML xmlXPathFreeObject (xpathObj); xmlXPathFreeContext (xpathCtx); xmlSaveFile (user_config_file, xDoc); xmlFreeDoc (xDoc); xmlCleanupParser (); g_free (font); g_free (user_config_file); }
static void check_themes (void) { const char *session_name, *ret; char *user_config_file, *cptr, *nptr, *fname; GKeyFile *kf; GError *err; int count; orig_lxsession_theme = ""; orig_openbox_theme = ""; // construct the file path for lxsession settings session_name = g_getenv ("DESKTOP_SESSION"); if (!session_name) session_name = DEFAULT_SES; user_config_file = g_build_filename (g_get_user_config_dir (), "lxsession/", session_name, "/desktop.conf", NULL); // read in data from file to a key file structure kf = g_key_file_new (); if (g_key_file_load_from_file (kf, user_config_file, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL)) { // get data from the key file err = NULL; ret = g_key_file_get_string (kf, "GTK", "sNet/ThemeName", &err); if (err == NULL) orig_lxsession_theme = ret; } // construct the file path for openbox settings fname = g_strconcat (g_ascii_strdown (session_name, -1), "-rc.xml", NULL); user_config_file = g_build_filename (g_get_user_config_dir (), "openbox/", fname, NULL); g_free (fname); // read in data from XML file xmlInitParser (); LIBXML_TEST_VERSION xmlDocPtr xDoc = xmlParseFile (user_config_file); if (xDoc) { xmlXPathContextPtr xpathCtx = xmlXPathNewContext (xDoc); xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression ((xmlChar *) "/*[local-name()='openbox_config']/*[local-name()='theme']", xpathCtx); // find relevant node and read value for (count = 0; count < xpathObj->nodesetval->nodeNr; count++) { xmlNode *node = xpathObj->nodesetval->nodeTab[count]; xmlAttr *attr = node->properties; xmlNode *cur_node = NULL; for (cur_node = node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type == XML_ELEMENT_NODE) { if (!strcmp (cur_node->name, "name")) orig_openbox_theme = xmlNodeGetContent (cur_node); } } } // cleanup XML xmlXPathFreeObject (xpathObj); xmlXPathFreeContext (xpathCtx); xmlSaveFile (user_config_file, xDoc); xmlFreeDoc (xDoc); xmlCleanupParser (); } g_free (user_config_file); // set the new themes if needed if (strcmp ("PiX", orig_lxsession_theme)) { set_lxsession_theme ("PiX"); if (needs_refresh) system (RELOAD_LXSESSION); } if (strcmp ("PiX", orig_openbox_theme)) { set_openbox_theme ("PiX"); system (RELOAD_OPENBOX); } }
void DumpXML() { xmlSaveFile( "XMLDump.xml", doc ); }
void login_func(int newsockfd,char * log) { char login[256]; char password[256]; int n; char id[256]; xmlDoc *doc = NULL; xmlNode *root_element = NULL; const char *Filename = "users.xml"; doc = xmlReadFile(Filename, NULL, 0); n = write(newsockfd,"Hello, print you login and password\n",36); bzero(login,256); bzero(password,256); n = read( newsockfd,login,255 ); if (n < 0) { perror("ERROR reading from socket"); exit(1); } n=write(newsockfd,"OK",2); n = read( newsockfd,password,255 ); if (n < 0) { perror("ERROR reading from socket"); exit(1); } if (doc == NULL) { printf("error: could not parse file %s\n", Filename); } else { if(!strncmp(login,"exit",4)) exit(1); root_element = xmlDocGetRootElement(doc); bzero(id,256); login[strlen(login)-1] = 0; //login[strlen(login)-1] = 0; //password[strlen(password)-1] = 0; password[strlen(password)-1] = 0; search_user(root_element,login,password,id); if(id[0] == 0) { printf("Invalid login --%s-- and password --%s-- \n Retry write you login and password\n",login,password); write(newsockfd,"OK",5); login_func(newsockfd,login); } else { write(newsockfd,"next",5); search_new_topics(login,newsockfd); root_element = xmlDocGetRootElement(doc); on_off_user(root_element,login,1); xmlSaveFile(Filename,doc); strcpy(log,login); write(newsockfd,"next",5); } xmlFreeDoc(doc); } xmlCleanupParser(); return; }
void start_work(int newsockfd) { int n; xmlDoc *doc = NULL; xmlNode *root_element = NULL; const char *TopicFilename = "topics.xml"; const char *UserFilename = "users.xml"; char buffer[256]; char id[6]; char login[100]; bzero(login,100); login_func(newsockfd,login); strcpy(usersthr.login[usersthr.count],login); usersthr.count++; bzero(buffer,256); strcpy(buffer,"next\n"); n=write(newsockfd,buffer,7); while(1) { bzero(buffer,256); strcpy(buffer,"next\n"); n=write(newsockfd,buffer,7); //printf("next\n"); bzero(buffer,256); n = read( newsockfd,buffer,255 ); //printf("Buffer :%s\n",buffer); if (n < 0) { perror("ERROR reading from socket"); exit(1); } if(!strncmp(buffer,"topics",6)) { print_topic(buffer,newsockfd); //n = write(newsockfd,buffer,255); } if(!strncmp(buffer,"online",6)) { doc = xmlReadFile(UserFilename, NULL, 0); if (doc == NULL) { printf("error: could not parse file %s\n", UserFilename); n = write(newsockfd,"Error\n",6); } else { root_element = xmlDocGetRootElement(doc); search_online_user(root_element,newsockfd); xmlFreeDoc(doc); } xmlCleanupParser(); } if(!strncmp(buffer,"show",4)) { bzero(id,6); for(n=5;n<10;n++) id[n-5]=buffer[n]; doc = xmlReadFile(TopicFilename, NULL, 0); if (doc == NULL) { printf("error: could not parse file %s\n", TopicFilename); n = write(newsockfd,"Error\n",6); } else { root_element = xmlDocGetRootElement(doc); fnp_post_by_id(root_element,id,newsockfd); xmlFreeDoc(doc); } xmlCleanupParser(); doc = xmlReadFile(UserFilename, NULL, 0); if (doc == NULL) { printf("error: could not parse file %s\n", UserFilename); n = write(newsockfd,"Error\n",6); } else { root_element = xmlDocGetRootElement(doc); add_see_topic(root_element,login,id); xmlSaveFile(UserFilename,doc); xmlFreeDoc(doc); } xmlCleanupParser(); } if(!strncmp(buffer,"exit",4)) { bzero(buffer,256); strncpy(buffer,"exit\n",6); n = write(newsockfd,buffer,255); doc = xmlReadFile(UserFilename, NULL, 0); if (doc == NULL) { printf("error: could not parse file %s\n", UserFilename); n = write(newsockfd,"Error\n",6); } else { root_element = xmlDocGetRootElement(doc); on_off_user(root_element,login,0); xmlSaveFile(UserFilename,doc); xmlFreeDoc(doc); } xmlCleanupParser(); return; } if(!strncmp(buffer,"add",3)) { doc = xmlReadFile(TopicFilename, NULL, 0); if (doc == NULL) { printf("error: could not parse file %s\n", TopicFilename); n = write(newsockfd,"Error\n",6); } else { root_element = xmlDocGetRootElement(doc); add_new_topic(root_element,newsockfd,login); xmlSaveFile(TopicFilename,doc); xmlFreeDoc(doc); } xmlCleanupParser(); } else { n=write(newsockfd,"OK",2); } /* Write a response to the client */ if (n < 0) { perror("ERROR writing to socket"); exit(1); } } }
//mod xml node int mod_eag_node(char * fpath,char * node_name,char *attribute,char *ruler,char * content,char *newc) { xmlDocPtr pdoc = NULL; xmlNodePtr pcurnode = NULL; xmlNodePtr design_node = NULL; pdoc = xmlReadFile(fpath,"utf-8",256); if(NULL == pdoc) { return 1; } int if_second_flag=0,if_second_null=0; pcurnode = xmlDocGetRootElement(pdoc); pcurnode = pcurnode->xmlChildrenNode; while (NULL != pcurnode) { if (!xmlStrcmp(pcurnode->name, BAD_CAST node_name)) { xmlChar* szAttr = xmlGetProp(pcurnode,BAD_CAST attribute); if(!xmlStrcmp(szAttr,BAD_CAST ruler)) { xmlNodePtr childPtr = pcurnode; childPtr=childPtr->children; while(childPtr !=NULL) { if_second_null=1; if ((!xmlStrcmp(childPtr->name, BAD_CAST content))) { xmlNodeSetContent(childPtr, BAD_CAST newc); if_second_flag=0; break; } else { if_second_flag=1; design_node=pcurnode; } childPtr = childPtr->next; } if(if_second_null == 0) { if_second_flag=1; design_node=pcurnode; } } xmlFree(szAttr); } pcurnode = pcurnode->next; } if(if_second_flag==1) { xmlNodePtr node = xmlNewNode(NULL,BAD_CAST content); xmlAddChild(design_node,node); xmlNodePtr content1 = xmlNewText(BAD_CAST newc); xmlAddChild(node,content1); design_node=NULL; } xmlSaveFile(fpath,pdoc); return if_second_flag; }