englebass pushed a commit to branch master.

commit e5f4fa4454c0892ba1537c273ad24215fe5a1820
Author: Sebastian Dransfeld <[email protected]>
Date:   Wed Jun 19 14:21:34 2013 +0200

    efreet: Remove static variable
---
 src/lib/efreet/efreet_xml.c | 56 +++++++++++++++++++++++----------------------
 1 file changed, 29 insertions(+), 27 deletions(-)

diff --git a/src/lib/efreet/efreet_xml.c b/src/lib/efreet/efreet_xml.c
index 390499f..fbf14d7 100644
--- a/src/lib/efreet/efreet_xml.c
+++ b/src/lib/efreet/efreet_xml.c
@@ -22,20 +22,21 @@ static int _efreet_xml_log_dom = -1;
 static void efreet_xml_dump(Efreet_Xml *xml, int level);
 #endif
 
-static Efreet_Xml *efreet_xml_parse(char **data, int *size);
-static int efreet_xml_tag_parse(char **data, int *size, const char **tag);
+static Efreet_Xml *efreet_xml_parse(char **data, int *size, int *error);
+static int efreet_xml_tag_parse(char **data, int *size,
+                                const char **tag, int *error);
 static void efreet_xml_attributes_parse(char **data, int *size,
-                                        Efreet_Xml_Attribute ***attributes);
+                                        Efreet_Xml_Attribute ***attributes,
+                                        int *error);
 static void efreet_xml_text_parse(char **data, int *size, const char **text);
 
-static int efreet_xml_tag_empty(char **data, int *size);
-static int efreet_xml_tag_close(char **data, int *size, const char *tag);
+static int efreet_xml_tag_empty(char **data, int *size, int *error);
+static int efreet_xml_tag_close(char **data, int *size,
+                                const char *tag, int *error);
 
 static void efreet_xml_cb_attribute_free(void *data);
 static void efreet_xml_comment_skip(char **data, int *size);
 
-static int error = 0;
-
 static int _efreet_xml_init_count = 0;
 
 /**
@@ -87,6 +88,7 @@ efreet_xml_new(const char *file)
     int size, fd = -1;
     char *data = MAP_FAILED;
     struct stat st;
+    int error = 0;
 
     if (!file) return NULL;
 
@@ -97,13 +99,13 @@ efreet_xml_new(const char *file)
 
     /* let's make mmap safe and just get 0 pages for IO erro */
     eina_mmap_safety_enabled_set(EINA_TRUE);
-   
+
     data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
     if (data == MAP_FAILED) goto efreet_error;
 
     error = 0;
     size = st.st_size;
-    xml = efreet_xml_parse(&data, &size);
+    xml = efreet_xml_parse(&data, &size, &error);
     if (!xml || error) goto efreet_error;
 
     munmap(data, st.st_size);
@@ -214,13 +216,13 @@ efreet_xml_dump(Efreet_Xml *xml, int level)
 #endif
 
 static Efreet_Xml *
-efreet_xml_parse(char **data, int *size)
+efreet_xml_parse(char **data, int *size, int *error)
 {
     Efreet_Xml *xml, *sub_xml;
     const char *tag = NULL;
 
     /* parse this tag */
-    if (!efreet_xml_tag_parse(data, size, &(tag))) return NULL;
+    if (!efreet_xml_tag_parse(data, size, &(tag), error)) return NULL;
     xml = NEW(Efreet_Xml, 1);
     if (!xml)
     {
@@ -231,25 +233,25 @@ efreet_xml_parse(char **data, int *size)
     xml->children = NULL;
 
     xml->tag = tag;
-    efreet_xml_attributes_parse(data, size, &(xml->attributes));
+    efreet_xml_attributes_parse(data, size, &(xml->attributes), error);
 
     /* Check wether element is empty */
-    if (efreet_xml_tag_empty(data, size)) return xml;
+    if (efreet_xml_tag_empty(data, size, error)) return xml;
     efreet_xml_text_parse(data, size, &(xml->text));
 
     /* Check wether element is closed */
-    if (efreet_xml_tag_close(data, size, xml->tag)) return xml;
+    if (efreet_xml_tag_close(data, size, xml->tag, error)) return xml;
 
-    while ((sub_xml = efreet_xml_parse(data, size)))
+    while ((sub_xml = efreet_xml_parse(data, size, error)))
         xml->children = eina_list_append(xml->children, sub_xml);
 
-    efreet_xml_tag_close(data, size, xml->tag);
+    efreet_xml_tag_close(data, size, xml->tag, error);
 
     return xml;
 }
 
 static int
-efreet_xml_tag_parse(char **data, int *size, const char **tag)
+efreet_xml_tag_parse(char **data, int *size, const char **tag, int *error)
 {
     const char *start = NULL, *end = NULL;
     char buf[256];
@@ -289,7 +291,7 @@ efreet_xml_tag_parse(char **data, int *size, const char 
**tag)
     if (!start)
     {
         ERR("missing start tag");
-        error = 1;
+        *error = 1;
         return 0;
     }
 
@@ -307,7 +309,7 @@ efreet_xml_tag_parse(char **data, int *size, const char 
**tag)
     if (!end)
     {
         ERR("no end of tag");
-        error = 1;
+        *error = 1;
         return 0;
     }
 
@@ -315,7 +317,7 @@ efreet_xml_tag_parse(char **data, int *size, const char 
**tag)
     if (buf_size <= 1)
     {
         ERR("no tag name");
-        error = 1;
+        *error = 1;
         return 0;
     }
 
@@ -329,7 +331,7 @@ efreet_xml_tag_parse(char **data, int *size, const char 
**tag)
 
 static void
 efreet_xml_attributes_parse(char **data, int *size,
-        Efreet_Xml_Attribute ***attributes)
+        Efreet_Xml_Attribute ***attributes, int *error)
 {
     Efreet_Xml_Attribute attr[10];
     int i, count = 0;
@@ -470,7 +472,7 @@ efreet_error:
         if (attr[count].value) eina_stringshare_del(attr[count].value);
         count--;
     }
-    error = 1;
+    *error = 1;
     return;
 }
 
@@ -518,7 +520,7 @@ efreet_xml_text_parse(char **data, int *size, const char 
**text)
 }
 
 static int
-efreet_xml_tag_empty(char **data, int *size)
+efreet_xml_tag_empty(char **data, int *size, int *error)
 {
     while (*size > 1)
     {
@@ -543,13 +545,13 @@ efreet_xml_tag_empty(char **data, int *size)
         (*data)++;
     }
     ERR("missing end of tag");
-    error = 1;
+    *error = 1;
 
     return 1;
 }
 
 static int
-efreet_xml_tag_close(char **data, int *size, const char *tag)
+efreet_xml_tag_close(char **data, int *size, const char *tag, int *error)
 {
     while (*size > 1)
     {
@@ -562,7 +564,7 @@ efreet_xml_tag_close(char **data, int *size, const char 
*tag)
                 if ((int)strlen(tag) > *size)
                 {
                     ERR("wrong end tag");
-                    error = 1;
+                    *error = 1;
                     return 1;
                 }
                 else
@@ -578,7 +580,7 @@ efreet_xml_tag_close(char **data, int *size, const char 
*tag)
                     if (*tag)
                     {
                         ERR("wrong end tag");
-                        error = 1;
+                        *error = 1;
                         return 1;
                     }
                 }

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to