From 1da04aa097db78c7474877049334c2c07b33bda1 Mon Sep 17 00:00:00 2001 From: David Sommerseth Date: Thu, 2 Apr 2009 19:26:56 +0200 Subject: Added dmixml.[ch] - helper function for generating XML nodes --- src/dmixml.c | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/dmixml.h | 32 ++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 src/dmixml.c create mode 100644 src/dmixml.h (limited to 'src') diff --git a/src/dmixml.c b/src/dmixml.c new file mode 100644 index 0000000..434b2e7 --- /dev/null +++ b/src/dmixml.c @@ -0,0 +1,140 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * For the avoidance of doubt the "preferred form" of this code is one which + * is in an open unpatent encumbered format. Where cryptographic key signing + * forms part of the process of creating an executable the information + * including keys needed to generate an equivalently functional executable + * are deemed to be part of the source code. + */ + +#include +#include +#include + +#include +#include + +// Internal function for dmixml_* functions ... builds up a variable xmlChar* string +xmlChar *dmixml_buildstr(size_t len, const char *fmt, va_list ap) { + xmlChar *ret = NULL, *xmlfmt = NULL; + + ret = (xmlChar *) malloc(len+2); + assert( ret != NULL ); + memset(ret, 0, len+2); + + xmlfmt = xmlCharStrdup(fmt); + assert( xmlfmt != NULL ); + + xmlStrVPrintf(ret, len, xmlfmt, ap); + free(xmlfmt); + + return ret; +} + + +// Adds an XML property/attribute to the given XML node +// +// xmldata_n = ""; +// dmixml_AddAttribute(xmldata_n, "value", "1234"); +// gives: xmldata_n = " + +xmlAttrNode *dmixml_AddAttribute(xmlNode *node, const char *atrname, const char *fmt, ...); +xmlNode *dmixml_AddTextChild(xmlNode *node, const char *tagname, const char *fmt, ...); +xmlNode *dmixml_AddTextContent(xmlNode *node, const char *fmt, ...); + +#endif -- cgit