summaryrefslogtreecommitdiff
path: root/xml.c
diff options
context:
space:
mode:
authorNick White <git@njw.me.uk>2010-05-19 17:15:41 +0100
committerNick White <git@njw.me.uk>2010-05-19 17:15:41 +0100
commite91ec0d87aa31cb465fe8cf934d405ad56342eba (patch)
tree1709e437c0d8f144bec479975a777c6ae8580eba /xml.c
parent6cf58b46037cf04915fa507813ab7419db2e45ec (diff)
Switched to simpler build system, and fixed bugs
Now there's a proper build system in place, which is actually simple enough to understand. I also fixed plenty of warnings about the code (reminding me how badly I knew C when I wrote this). Hinduism today aren't indexing their new issues using the index file I was sourcing any more, so I don't expect to fix any more bugs or improve this much.
Diffstat (limited to 'xml.c')
-rw-r--r--xml.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/xml.c b/xml.c
new file mode 100644
index 0000000..d39ad5b
--- /dev/null
+++ b/xml.c
@@ -0,0 +1,46 @@
+/*
+ * This file is part of GetHT
+ *
+ * See COPYING file for copyright, license and warranty details.
+ *
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+
+#include "getht.h"
+
+int ready_xml(char * filepath, char * rootnode, xmlDocPtr * file, xmlNodePtr * node)
+/* Opens filepath, filling nec pointers with essential information. */
+{
+ if(access(filepath, R_OK) != 0)
+ return 1;
+
+ if((*file = xmlReadFile(filepath, "ISO-8859-1", 0)) == NULL)
+ {
+ fprintf(stderr, "Error: cannot open xml file %s\n", filepath);
+ return 1;
+ }
+
+ *node = xmlDocGetRootElement(*file);
+
+ if(*node == NULL)
+ {
+ fprintf(stderr,"Error: xml file %s has no root element",filepath);
+ xmlFreeDoc(*file);
+ return 1;
+ }
+
+ char * test;
+ test = (char *) (*node)->name;
+
+ if(xmlStrcmp((*node)->name, (const xmlChar *) rootnode))
+ {
+ fprintf(stderr,"Document of the wrong type, root node is '%s' (expected '%s').\n",(char *) (*node)->name, rootnode);
+ fprintf(stderr,"Continuing regardless...\n");
+ }
+
+ return 0;
+}