From: Dana Jansens Date: Mon, 8 Aug 2011 21:38:47 +0000 (-0400) Subject: Add a function to save a cache file (it makes the directory as needed etc). X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=cdc543baae4138d5e9dfcf760037e524588cfb92;p=dana%2Fopenbox.git Add a function to save a cache file (it makes the directory as needed etc). --- diff --git a/obt/xml.c b/obt/xml.c index 1b86a888..0d5420ed 100644 --- a/obt/xml.c +++ b/obt/xml.c @@ -325,6 +325,26 @@ gboolean obt_xml_save_file(ObtXmlInst *inst, return xmlSaveFormatFile(path, inst->doc, pretty) != -1; } +gboolean obt_xml_save_cache_file(ObtXmlInst *inst, + const gchar *domain, + const gchar *filename, + gboolean pretty) +{ + gchar *dpath, *fpath; + gboolean ok; + + dpath = g_build_filename(obt_paths_cache_home(inst->xdg_paths), + domain, NULL); + fpath = g_build_filename(dpath, filename, NULL); + + ok = obt_paths_mkdir_path(dpath, 0700); + ok = ok && obt_xml_save_file(inst, fpath, pretty); + + g_free(fpath); + g_free(dpath); + return ok; +} + void obt_xml_close(ObtXmlInst *i) { if (i && i->doc) { @@ -607,3 +627,31 @@ void obt_xml_path_delete_node(xmlNodePtr subtree, const gchar *path) xmlUnlinkNode(n); xmlFreeNode(n); } + +gchar* obt_xml_path_string(xmlNodePtr subtree, const gchar *path, + const gchar *default_value) +{ + xmlNodePtr n; + + n = obt_xml_path_get_node(subtree, path, default_value); + return n ? obt_xml_node_string(n) : NULL; +} + +int obt_xml_path_int(xmlNodePtr subtree, const gchar *path, + const gchar *default_value) +{ + xmlNodePtr n; + + n = obt_xml_path_get_node(subtree, path, default_value); + return n ? obt_xml_node_int(n) : 0; +} + +gboolean obt_xml_path_bool(xmlNodePtr subtree, const gchar *path, + const gchar *default_value) +{ + xmlNodePtr n; + + n = obt_xml_path_get_node(subtree, path, default_value); + return n ? obt_xml_node_bool(n) : FALSE; +} + diff --git a/obt/xml.h b/obt/xml.h index 25bce69d..cee36fc0 100644 --- a/obt/xml.h +++ b/obt/xml.h @@ -61,6 +61,10 @@ gboolean obt_xml_load_mem(ObtXmlInst *inst, gboolean obt_xml_save_file(ObtXmlInst *inst, const gchar *path, gboolean pretty); +gboolean obt_xml_save_cache_file(ObtXmlInst *inst, + const gchar *domain, + const gchar *filename, + gboolean pretty); xmlDocPtr obt_xml_doc(ObtXmlInst *inst); xmlNodePtr obt_xml_root(ObtXmlInst *inst); @@ -124,6 +128,13 @@ GList* obt_xml_path_get_list(xmlNodePtr subtree, const gchar *path); /*! Removes a specified node from the tree. */ void obt_xml_path_delete_node(xmlNodePtr subtree, const gchar *path); +gchar* obt_xml_path_string(xmlNodePtr subtree, const gchar *path, + const gchar *default_value); +int obt_xml_path_int(xmlNodePtr subtree, const gchar *path, + const gchar *default_value); +gboolean obt_xml_path_bool(xmlNodePtr subtree, const gchar *path, + const gchar *default_value); + G_END_DECLS