Commit 754fead1 authored by Andreas Mieke's avatar Andreas Mieke Committed by Philipp Schafft

Add XML validation

This commit adds a function to check the validity of the icecast.xml
configuration file. The function returns 0 if the file is valid, -1 if
there was an unknown error or error codes as defined in
xmlRelaxNGValidErr.

TODO:
* Add  the schema somewhere into the repository where it makes sense.
* Use the function to validate the configuration file and add handling
for invalid configuration files.
parent ae83ea87
......@@ -25,6 +25,7 @@
#endif
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
#include <libxml/relaxng.h>
#include "common/thread/thread.h"
#include "cfgfile.h"
......@@ -626,6 +627,27 @@ int config_initial_parse_file(const char *filename)
return config_parse_file(filename, &_current_configuration);
}
/* Has to be called after xmlParseFile(...) */
int config_validate(const xmlDocPtr doc)
{
int status;
xmlRelaxNGPtr schema;
xmlRelaxNGValidCtxtPtr validctxt;
xmlRelaxNGParserCtxtPtr rngparser;
rngparser = xmlRelaxNGNewParserCtxt("icecast.rng");
schema = xmlRelaxNGParse(rngparser);
validctxt = xmlRelaxNGNewValidCtxt(schema);
status = xmlRelaxNGValidateDoc(validctxt, doc);
xmlRelaxNGFree(schema);
xmlRelaxNGFreeValidCtxt(validctxt);
xmlRelaxNGFreeParserCtxt(rngparser);
return status;
}
int config_parse_file(const char *filename, ice_config_t *configuration)
{
xmlDocPtr doc;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment