From ce299ebc874568bb001c668fee0fff054880b0a8 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Fri, 20 Aug 2021 17:33:41 +0200 Subject: [PATCH] XML parsing --- include/xml.h | 34 ++++++++++++++++++++++++++++++++++ src/tests/xml.c | 2 +- src/xml.c | 24 ------------------------ 3 files changed, 35 insertions(+), 25 deletions(-) delete mode 100644 src/xml.c diff --git a/include/xml.h b/include/xml.h index f2ec98c..6e9c8f2 100644 --- a/include/xml.h +++ b/include/xml.h @@ -23,4 +23,38 @@ #include "../include/base.h" #endif +#include +#include +#include +#include + +static xmlDocPtr currentDocument = NULL; +static xmlNodePtr currentDocumentRoot = NULL; + +void setCurrentDocument(char *filename) +{ + currentDocument = xmlParseFile(filename); + + if (currentDocument == NULL ) { + printLog("%s not parsed successfully.\n", filename); + xmlFreeDoc(currentDocument); + currentDocument = NULL; + } + + currentDocumentRoot = xmlDocGetRootElement(currentDocument); + + if (currentDocumentRoot == NULL ) { + printLog("%s is invalid (no root)\n", filename); + xmlFreeDoc(currentDocument); + currentDocument = NULL; + currentDocumentRoot = NULL; + } +} + +void delCurrentDocument(void) +{ + currentDocument = xmlFreeDoc(currentDocument); + currentDocumentRoot = NULL; + currentDocument = NULL; +} diff --git a/src/tests/xml.c b/src/tests/xml.c index 6c5eb80..7a39d08 100644 --- a/src/tests/xml.c +++ b/src/tests/xml.c @@ -58,7 +58,7 @@ int main(int argc, char **argv) } docname = argv[1]; - parseDoc (docname); + parseDoc(docname); return 0; } diff --git a/src/xml.c b/src/xml.c deleted file mode 100644 index f45259e..0000000 --- a/src/xml.c +++ /dev/null @@ -1,24 +0,0 @@ -//=-------------------------------------------------------------------------=// -// XML management tools // -// // -// Copyright © 2021 The Gem-graph Project // -// // -// This file is part of gem-graph. // -// // -// This program is free software: you can redistribute it and/or modify // -// it under the terms of the GNU Affero General Public License as // -// published by the Free Software Foundation, either version 3 of the // -// License, or (at your option) any later version. // -// // -// This program is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU Affero General Public License for more details. // -// // -// You should have received a copy of the GNU Affero General Public License // -// along with this program. If not, see . // -//=-------------------------------------------------------------------------=// - -#include "../include/base.h" - -