diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2002-08-07 05:00:16 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2002-08-07 05:00:16 +0800 |
commit | b91558e435a1a5cc8c3012fbd2f2b998ca88dc09 (patch) | |
tree | 7b129329fd492fe881785a4abeb47c03eb9467c5 | |
parent | cbb7e95fcf61d4b760b92b0234ed76cd4f981008 (diff) | |
download | gsoc2013-evolution-b91558e435a1a5cc8c3012fbd2f2b998ca88dc09.tar gsoc2013-evolution-b91558e435a1a5cc8c3012fbd2f2b998ca88dc09.tar.gz gsoc2013-evolution-b91558e435a1a5cc8c3012fbd2f2b998ca88dc09.tar.bz2 gsoc2013-evolution-b91558e435a1a5cc8c3012fbd2f2b998ca88dc09.tar.lz gsoc2013-evolution-b91558e435a1a5cc8c3012fbd2f2b998ca88dc09.tar.xz gsoc2013-evolution-b91558e435a1a5cc8c3012fbd2f2b998ca88dc09.tar.zst gsoc2013-evolution-b91558e435a1a5cc8c3012fbd2f2b998ca88dc09.zip |
Use e_xml_save_file(). (xml_doc_save): Removed this code and added it to
2002-08-06 Jeffrey Stedfast <fejj@ximian.com>
* rule-context.c (save): Use e_xml_save_file().
(xml_doc_save): Removed this code and added it to gal so that
e-table and all other parts of evolution and so forth could use
it.
svn path=/trunk/; revision=17720
-rw-r--r-- | filter/ChangeLog | 7 | ||||
-rw-r--r-- | filter/rule-context.c | 304 |
2 files changed, 11 insertions, 300 deletions
diff --git a/filter/ChangeLog b/filter/ChangeLog index c1b4f2d613..9175a65ed0 100644 --- a/filter/ChangeLog +++ b/filter/ChangeLog @@ -1,3 +1,10 @@ +2002-08-06 Jeffrey Stedfast <fejj@ximian.com> + + * rule-context.c (save): Use e_xml_save_file(). + (xml_doc_save): Removed this code and added it to gal so that + e-table and all other parts of evolution and so forth could use + it. + 2002-08-05 Jeffrey Stedfast <fejj@ximian.com> * rule-context.c (xml_doc_save): New internal function to replace diff --git a/filter/rule-context.c b/filter/rule-context.c index 03f89b8c71..2f84dc496f 100644 --- a/filter/rule-context.c +++ b/filter/rule-context.c @@ -39,6 +39,8 @@ #include <libgnomeui/gnome-dialog.h> #include <libgnomeui/gnome-stock.h> +#include <gal/util/e-xml-utils.h> + #include "rule-context.h" #define d(x) @@ -381,304 +383,6 @@ rule_context_save (RuleContext *f, const char *user) return ((RuleContextClass *) ((GtkObject *) f)->klass)->save(f, user); } - -static void xmlNodeDump (xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level, int format); - - -static void -xmlAttrDump (xmlBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur) -{ - xmlChar *value; - - if (cur == NULL) { -#ifdef DEBUG_TREE - fprintf(stderr, "xmlAttrDump : property == NULL\n"); -#endif - return; - } - - xmlBufferWriteChar (buf, " "); - if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { - xmlBufferWriteCHAR (buf, cur->ns->prefix); - xmlBufferWriteChar (buf, ":"); - } - - xmlBufferWriteCHAR (buf, cur->name); - value = xmlNodeListGetString (doc, cur->val, 0); - if (value) { - xmlBufferWriteChar (buf, "="); - xmlBufferWriteQuotedString (buf, value); - xmlFree (value); - } else { - xmlBufferWriteChar (buf, "=\"\""); - } -} - -static void -xmlAttrListDump (xmlBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur) -{ - if (cur == NULL) { -#ifdef DEBUG_TREE - fprintf(stderr, "xmlAttrListDump : property == NULL\n"); -#endif - return; - } - - while (cur != NULL) { - xmlAttrDump (buf, doc, cur); - cur = cur->next; - } -} - -static void -xmlNodeListDump (xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level, int format) -{ - int i; - - if (cur == NULL) { -#ifdef DEBUG_TREE - fprintf(stderr, "xmlNodeListDump : node == NULL\n"); -#endif - return; - } - - while (cur != NULL) { - if ((format) && (xmlIndentTreeOutput) && - (cur->type == XML_ELEMENT_NODE)) - for (i = 0; i < level; i++) - xmlBufferWriteChar (buf, " "); - xmlNodeDump (buf, doc, cur, level, format); - if (format) { - xmlBufferWriteChar (buf, "\n"); - } - cur = cur->next; - } -} - -static void -xmlNodeDump (xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level, int format) -{ - int i; - xmlNodePtr tmp; - - if (cur == NULL) { -#ifdef DEBUG_TREE - fprintf(stderr, "xmlNodeDump : node == NULL\n"); -#endif - return; - } - - if (cur->type == XML_TEXT_NODE) { - if (cur->content != NULL) { - xmlChar *buffer; - -#ifndef XML_USE_BUFFER_CONTENT - buffer = xmlEncodeEntitiesReentrant (doc, cur->content); -#else - buffer = xmlEncodeEntitiesReentrant (doc, xmlBufferContent (cur->content)); -#endif - if (buffer != NULL) { - xmlBufferWriteCHAR (buf, buffer); - xmlFree (buffer); - } - } - return; - } - - if (cur->type == XML_PI_NODE) { - if (cur->content != NULL) { - xmlBufferWriteChar (buf, "<?"); - xmlBufferWriteCHAR (buf, cur->name); - if (cur->content != NULL) { - xmlBufferWriteChar (buf, " "); -#ifndef XML_USE_BUFFER_CONTENT - xmlBufferWriteCHAR (buf, cur->content); -#else - xmlBufferWriteCHAR (buf, xmlBufferContent (cur->content)); -#endif - } - xmlBufferWriteChar (buf, "?>"); - } - return; - } - - if (cur->type == XML_COMMENT_NODE) { - if (cur->content != NULL) { - xmlBufferWriteChar (buf, "<!--"); -#ifndef XML_USE_BUFFER_CONTENT - xmlBufferWriteCHAR (buf, cur->content); -#else - xmlBufferWriteCHAR (buf, xmlBufferContent (cur->content)); -#endif - xmlBufferWriteChar (buf, "-->"); - } - return; - } - - if (cur->type == XML_ENTITY_REF_NODE) { - xmlBufferWriteChar (buf, "&"); - xmlBufferWriteCHAR (buf, cur->name); - xmlBufferWriteChar (buf, ";"); - return; - } - - if (cur->type == XML_CDATA_SECTION_NODE) { - xmlBufferWriteChar (buf, "<![CDATA["); - if (cur->content != NULL) -#ifndef XML_USE_BUFFER_CONTENT - xmlBufferWriteCHAR (buf, cur->content); -#else - xmlBufferWriteCHAR (buf, xmlBufferContent(cur->content)); -#endif - xmlBufferWriteChar (buf, "]]>"); - return; - } - - if (format == 1) { - tmp = cur->childs; - while (tmp != NULL) { - if ((tmp->type == XML_TEXT_NODE) || - (tmp->type == XML_ENTITY_REF_NODE)) { - format = 0; - break; - } - tmp = tmp->next; - } - } - - xmlBufferWriteChar (buf, "<"); - if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { - xmlBufferWriteCHAR (buf, cur->ns->prefix); - xmlBufferWriteChar (buf, ":"); - } - - xmlBufferWriteCHAR (buf, cur->name); - - if (cur->properties != NULL) - xmlAttrListDump (buf, doc, cur->properties); - - if ((cur->content == NULL) && (cur->childs == NULL) && - (!xmlSaveNoEmptyTags)) { - xmlBufferWriteChar (buf, "/>"); - return; - } - - xmlBufferWriteChar (buf, ">"); - if (cur->content != NULL) { - xmlChar *buffer; - -#ifndef XML_USE_BUFFER_CONTENT - buffer = xmlEncodeEntitiesReentrant (doc, cur->content); -#else - buffer = xmlEncodeEntitiesReentrant (doc, xmlBufferContent (cur->content)); -#endif - if (buffer != NULL) { - xmlBufferWriteCHAR (buf, buffer); - xmlFree (buffer); - } - } - - if (cur->childs != NULL) { - if (format) - xmlBufferWriteChar (buf, "\n"); - - xmlNodeListDump (buf, doc, cur->childs, (level >= 0 ? level + 1 : -1), format); - if ((xmlIndentTreeOutput) && (format)) - for (i = 0; i < level; i++) - xmlBufferWriteChar (buf, " "); - } - - xmlBufferWriteChar (buf, "</"); - if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { - xmlBufferWriteCHAR (buf, cur->ns->prefix); - xmlBufferWriteChar (buf, ":"); - } - - xmlBufferWriteCHAR (buf, cur->name); - xmlBufferWriteChar (buf, ">"); -} - -static void -xmlDocContentDump (xmlBufferPtr buf, xmlDocPtr cur) -{ - xmlBufferWriteChar (buf, "<?xml version="); - - if (cur->version != NULL) - xmlBufferWriteQuotedString (buf, cur->version); - else - xmlBufferWriteChar (buf, "\"1.0\""); - - if ((cur->encoding != NULL) && - (strcasecmp (cur->encoding, "UTF-8") != 0)) { - xmlBufferWriteChar (buf, " encoding="); - xmlBufferWriteQuotedString (buf, cur->encoding); - } - - switch (cur->standalone) { - case 1: - xmlBufferWriteChar (buf, " standalone=\"yes\""); - break; - } - - xmlBufferWriteChar (buf, "?>\n"); - if (cur->root != NULL) { - xmlNodePtr child = cur->root; - - while (child != NULL) { - xmlNodeDump (buf, cur, child, 0, 1); - xmlBufferWriteChar (buf, "\n"); - child = child->next; - } - } -} - -static int -xml_doc_save (xmlDocPtr doc, const char *filename) -{ - size_t n, written = 0; - xmlBufferPtr buf; - int errnosave; - ssize_t w; - int fd; - - fd = open (filename, O_WRONLY | O_CREAT | O_EXCL, 0600); - if (fd == -1) - return -1; - - if (!(buf = xmlBufferCreate ())) { - close (fd); - unlink (filename); - errno = ENOMEM; - return -1; - } - - xmlDocContentDump (buf, doc); - - n = buf->use; - do { - do { - w = write (fd, buf->content + written, n - written); - } while (w == -1 && errno == EINTR); - - if (w > 0) - written += w; - } while (w != -1 && written < n); - - xmlBufferFree (buf); - - if (written < n || fsync (fd) == -1) { - errnosave = errno; - close (fd); - unlink (filename); - errno = errnosave; - return -1; - } - - close (fd); - - return 0; -} - static int save (RuleContext *f, const char *user) { @@ -715,8 +419,8 @@ save (RuleContext *f, const char *user) else sprintf(usersav, ".#%s", user); sprintf(userbak, "%s~", user); - printf("saving rules to '%s' then backup '%s'\n", usersav, userbak); - ret = xml_doc_save (doc, usersav); + d(printf("saving rules to '%s' then backup '%s'\n", usersav, userbak)); + ret = e_xml_save_file (usersav, doc); if (ret != -1) { rename(user, userbak); ret = rename(usersav, user); |