[libgrss] Added shorthand internal function file_to_xml()
- From: Roberto Guido <rguido src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgrss] Added shorthand internal function file_to_xml()
- Date: Thu, 29 Apr 2010 03:19:12 +0000 (UTC)
commit 45f6df174c2130b2d8ccabe2ef4bda362b67cd77
Author: Roberto Guido <bob4mail gmail com>
Date: Thu Apr 29 05:06:16 2010 +0200
Added shorthand internal function file_to_xml()
src/feeds-group.c | 16 +---------------
src/utils.c | 14 ++++++++++++++
src/utils.h | 1 +
3 files changed, 16 insertions(+), 15 deletions(-)
---
diff --git a/src/feeds-group.c b/src/feeds-group.c
index ea7a515..ec7c82e 100644
--- a/src/feeds-group.c
+++ b/src/feeds-group.c
@@ -144,27 +144,16 @@ retrieve_group_handler (FeedsGroup *group, xmlDocPtr doc, xmlNodePtr cur)
GList*
feeds_group_parse_file (FeedsGroup *group, const gchar *path, GError *error)
{
- gchar *contents;
- gsize len;
GList *items;
- GError *err;
xmlDocPtr doc;
xmlNodePtr cur;
FeedsGroupHandler *handler;
items = NULL;
doc = NULL;
- contents = NULL;
do {
- err = NULL;
- if (g_file_get_contents (path, &contents, &len, &err) == FALSE) {
- g_propagate_error (&error, err);
- break;
- }
-
- doc = content_to_xml (contents, len);
-
+ doc = file_to_xml (path);
g_set_error (&error, FEEDS_GROUP_ERROR, FEEDS_GROUP_PARSE_ERROR, "Empty document");
if ((cur = xmlDocGetRootElement (doc)) == NULL)
@@ -192,9 +181,6 @@ feeds_group_parse_file (FeedsGroup *group, const gchar *path, GError *error)
if (doc != NULL)
xmlFreeDoc (doc);
- if (contents != NULL)
- g_free (contents);
-
return items;
}
diff --git a/src/utils.c b/src/utils.c
index 2224a8d..0f89a67 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -298,6 +298,20 @@ content_to_xml (const gchar *contents, gsize size)
return doc;
}
+xmlDocPtr
+file_to_xml (const gchar *path)
+{
+ xmlParserCtxtPtr ctxt;
+ xmlDocPtr doc;
+
+ ctxt = xmlNewParserCtxt ();
+ ctxt->sax->getEntity = xml_process_entities;
+ doc = xmlSAXParseFile (ctxt->sax, path, 0);
+ xmlFreeParserCtxt (ctxt);
+
+ return doc;
+}
+
/* in theory, we'd need only the RFC822 timezones here
in practice, feeds also use other timezones... */
static struct {
diff --git a/src/utils.h b/src/utils.h
index 41d60a7..a69f86b 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -43,6 +43,7 @@ gchar* unxmlize (gchar * string);
gchar* xhtml_extract (xmlNodePtr xml, gint xhtmlMode, const gchar *defaultBase);
xmlDocPtr content_to_xml (const gchar *contents, gsize size);
+xmlDocPtr file_to_xml (const gchar *path);
time_t date_parse_RFC822 (const gchar *date);
time_t date_parse_ISO8601 (const gchar *date);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]