src: add 'schema' and 'validate' variable to virXMLParseHelper()

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Kristina Hanicova 2021-08-11 14:36:44 +02:00 committed by Ján Tomko
parent 4de7ccc4d8
commit f43c27960e
19 changed files with 36 additions and 30 deletions

View File

@ -281,7 +281,7 @@ virDomainBackupDefParseString(const char *xmlStr,
g_autoptr(xmlDoc) xml = NULL; g_autoptr(xmlDoc) xml = NULL;
int keepBlanksDefault = xmlKeepBlanksDefault(0); int keepBlanksDefault = xmlKeepBlanksDefault(0);
if ((xml = virXMLParse(NULL, xmlStr, _("(domain_backup)")))) { if ((xml = virXMLParse(NULL, xmlStr, _("(domain_backup)"), NULL, false))) {
xmlKeepBlanksDefault(keepBlanksDefault); xmlKeepBlanksDefault(keepBlanksDefault);
ret = virDomainBackupDefParseNode(xml, xmlDocGetRootElement(xml), ret = virDomainBackupDefParseNode(xml, xmlDocGetRootElement(xml),
xmlopt, flags); xmlopt, flags);

View File

@ -226,7 +226,7 @@ virDomainCheckpointDefParseString(const char *xmlStr,
xmlDocPtr xml; xmlDocPtr xml;
int keepBlanksDefault = xmlKeepBlanksDefault(0); int keepBlanksDefault = xmlKeepBlanksDefault(0);
if ((xml = virXMLParse(NULL, xmlStr, _("(domain_checkpoint)")))) { if ((xml = virXMLParse(NULL, xmlStr, _("(domain_checkpoint)"), NULL, false))) {
xmlKeepBlanksDefault(keepBlanksDefault); xmlKeepBlanksDefault(keepBlanksDefault);
ret = virDomainCheckpointDefParseNode(xml, xmlDocGetRootElement(xml), ret = virDomainCheckpointDefParseNode(xml, xmlDocGetRootElement(xml),
xmlopt, parseOpaque, flags); xmlopt, parseOpaque, flags);

View File

@ -20400,7 +20400,7 @@ virDomainDefParse(const char *xmlStr,
virDomainDef *def = NULL; virDomainDef *def = NULL;
int keepBlanksDefault = xmlKeepBlanksDefault(0); int keepBlanksDefault = xmlKeepBlanksDefault(0);
xmlNodePtr root; xmlNodePtr root;
if (!(xml = virXMLParse(filename, xmlStr, _("(domain_definition)")))) if (!(xml = virXMLParse(filename, xmlStr, _("(domain_definition)"), NULL, false)))
goto cleanup; goto cleanup;
root = xmlDocGetRootElement(xml); root = xmlDocGetRootElement(xml);

View File

@ -824,7 +824,7 @@ virInterfaceDefParse(const char *xmlStr,
xmlDocPtr xml; xmlDocPtr xml;
virInterfaceDef *def = NULL; virInterfaceDef *def = NULL;
if ((xml = virXMLParse(filename, xmlStr, _("(interface_definition)")))) { if ((xml = virXMLParse(filename, xmlStr, _("(interface_definition)"), NULL, false))) {
def = virInterfaceDefParseNode(xml, xmlDocGetRootElement(xml)); def = virInterfaceDefParseNode(xml, xmlDocGetRootElement(xml));
xmlFreeDoc(xml); xmlFreeDoc(xml);
} }

View File

@ -2091,7 +2091,7 @@ virNetworkDefParse(const char *xmlStr,
virNetworkDef *def = NULL; virNetworkDef *def = NULL;
int keepBlanksDefault = xmlKeepBlanksDefault(0); int keepBlanksDefault = xmlKeepBlanksDefault(0);
if ((xml = virXMLParse(filename, xmlStr, _("(network_definition)")))) if ((xml = virXMLParse(filename, xmlStr, _("(network_definition)"), NULL, false)))
def = virNetworkDefParseNode(xml, xmlDocGetRootElement(xml), xmlopt); def = virNetworkDefParseNode(xml, xmlDocGetRootElement(xml), xmlopt);
xmlKeepBlanksDefault(keepBlanksDefault); xmlKeepBlanksDefault(keepBlanksDefault);

View File

@ -2177,7 +2177,7 @@ virNodeDeviceDefParse(const char *str,
xmlDocPtr xml; xmlDocPtr xml;
g_autoptr(virNodeDeviceDef) def = NULL; g_autoptr(virNodeDeviceDef) def = NULL;
if ((xml = virXMLParse(filename, str, _("(node_device_definition)")))) { if ((xml = virXMLParse(filename, str, _("(node_device_definition)"), NULL, false))) {
def = virNodeDeviceDefParseNode(xml, xmlDocGetRootElement(xml), def = virNodeDeviceDefParseNode(xml, xmlDocGetRootElement(xml),
create, virt_type); create, virt_type);
xmlFreeDoc(xml); xmlFreeDoc(xml);

View File

@ -2744,7 +2744,7 @@ virNWFilterDefParse(const char *xmlStr,
virNWFilterDef *def = NULL; virNWFilterDef *def = NULL;
xmlDocPtr xml; xmlDocPtr xml;
if ((xml = virXMLParse(filename, xmlStr, _("(nwfilter_definition)")))) { if ((xml = virXMLParse(filename, xmlStr, _("(nwfilter_definition)"), NULL, false))) {
def = virNWFilterDefParseNode(xml, xmlDocGetRootElement(xml)); def = virNWFilterDefParseNode(xml, xmlDocGetRootElement(xml));
xmlFreeDoc(xml); xmlFreeDoc(xml);
} }

View File

@ -196,7 +196,7 @@ virSecretDefParse(const char *xmlStr,
xmlDocPtr xml; xmlDocPtr xml;
virSecretDef *ret = NULL; virSecretDef *ret = NULL;
if ((xml = virXMLParse(filename, xmlStr, _("(definition_of_secret)")))) { if ((xml = virXMLParse(filename, xmlStr, _("(definition_of_secret)"), NULL, false))) {
ret = secretXMLParseNode(xml, xmlDocGetRootElement(xml)); ret = secretXMLParseNode(xml, xmlDocGetRootElement(xml));
xmlFreeDoc(xml); xmlFreeDoc(xml);
} }

View File

@ -462,7 +462,7 @@ virDomainSnapshotDefParseString(const char *xmlStr,
xmlDocPtr xml; xmlDocPtr xml;
int keepBlanksDefault = xmlKeepBlanksDefault(0); int keepBlanksDefault = xmlKeepBlanksDefault(0);
if ((xml = virXMLParse(NULL, xmlStr, _("(domain_snapshot)")))) { if ((xml = virXMLParse(NULL, xmlStr, _("(domain_snapshot)"), NULL, false))) {
xmlKeepBlanksDefault(keepBlanksDefault); xmlKeepBlanksDefault(keepBlanksDefault);
ret = virDomainSnapshotDefParseNode(xml, xmlDocGetRootElement(xml), ret = virDomainSnapshotDefParseNode(xml, xmlDocGetRootElement(xml),
xmlopt, parseOpaque, xmlopt, parseOpaque,

View File

@ -1009,7 +1009,7 @@ virStoragePoolDefParse(const char *xmlStr,
virStoragePoolDef *ret = NULL; virStoragePoolDef *ret = NULL;
xmlDocPtr xml; xmlDocPtr xml;
if ((xml = virXMLParse(filename, xmlStr, _("(storage_pool_definition)")))) { if ((xml = virXMLParse(filename, xmlStr, _("(storage_pool_definition)"), NULL, false))) {
ret = virStoragePoolDefParseNode(xml, xmlDocGetRootElement(xml)); ret = virStoragePoolDefParseNode(xml, xmlDocGetRootElement(xml));
xmlFreeDoc(xml); xmlFreeDoc(xml);
} }
@ -1478,7 +1478,7 @@ virStorageVolDefParse(virStoragePoolDef *pool,
virStorageVolDef *ret = NULL; virStorageVolDef *ret = NULL;
xmlDocPtr xml; xmlDocPtr xml;
if ((xml = virXMLParse(filename, xmlStr, _("(storage_volume_definition)")))) { if ((xml = virXMLParse(filename, xmlStr, _("(storage_volume_definition)"), NULL, false))) {
ret = virStorageVolDefParseNode(pool, xml, xmlDocGetRootElement(xml), flags); ret = virStorageVolDefParseNode(pool, xml, xmlDocGetRootElement(xml), flags);
xmlFreeDoc(xml); xmlFreeDoc(xml);
} }

View File

@ -297,7 +297,7 @@ virNetworkPortDefParse(const char *xmlStr,
virNetworkPortDef *def = NULL; virNetworkPortDef *def = NULL;
xmlDocPtr xml; xmlDocPtr xml;
if ((xml = virXMLParse(filename, xmlStr, _("(networkport_definition)")))) { if ((xml = virXMLParse(filename, xmlStr, _("(networkport_definition)"), NULL, false))) {
def = virNetworkPortDefParseNode(xml, xmlDocGetRootElement(xml)); def = virNetworkPortDefParseNode(xml, xmlDocGetRootElement(xml));
xmlFreeDoc(xml); xmlFreeDoc(xml);
} }

View File

@ -188,7 +188,7 @@ virNWFilterBindingDefParse(const char *xmlStr,
virNWFilterBindingDef *def = NULL; virNWFilterBindingDef *def = NULL;
xmlDocPtr xml; xmlDocPtr xml;
if ((xml = virXMLParse(filename, xmlStr, _("(nwfilterbinding_definition)")))) { if ((xml = virXMLParse(filename, xmlStr, _("(nwfilterbinding_definition)"), NULL, false))) {
def = virNWFilterBindingDefParseNode(xml, xmlDocGetRootElement(xml)); def = virNWFilterBindingDefParseNode(xml, xmlDocGetRootElement(xml));
xmlFreeDoc(xml); xmlFreeDoc(xml);
} }

View File

@ -265,7 +265,7 @@ virNWFilterBindingObjParse(const char *xmlStr,
virNWFilterBindingObj *obj = NULL; virNWFilterBindingObj *obj = NULL;
xmlDocPtr xml; xmlDocPtr xml;
if ((xml = virXMLParse(filename, xmlStr, _("(nwfilterbinding_status)")))) { if ((xml = virXMLParse(filename, xmlStr, _("(nwfilterbinding_status)"), NULL, false))) {
obj = virNWFilterBindingObjParseNode(xml, xmlDocGetRootElement(xml)); obj = virNWFilterBindingObjParseNode(xml, xmlDocGetRootElement(xml));
xmlFreeDoc(xml); xmlFreeDoc(xml);
} }

View File

@ -832,7 +832,7 @@ testParseXMLDocFromFile(xmlNodePtr node, const char *file, const char *type)
if ((relFile = virXMLPropString(node, "file"))) { if ((relFile = virXMLPropString(node, "file"))) {
absFile = testBuildFilename(file, relFile); absFile = testBuildFilename(file, relFile);
if (!(doc = virXMLParse(absFile, NULL, type))) if (!(doc = virXMLParse(absFile, NULL, type, NULL, false)))
goto error; goto error;
ret = xmlCopyNode(xmlDocGetRootElement(doc), 1); ret = xmlCopyNode(xmlDocGetRootElement(doc), 1);

View File

@ -1096,6 +1096,8 @@ catchXMLError(void *ctx, const char *msg G_GNUC_UNUSED, ...)
* @url: URL of XML document for string parser * @url: URL of XML document for string parser
* @rootelement: Optional name of the expected root element * @rootelement: Optional name of the expected root element
* @ctxt: optional pointer to populate with new context pointer * @ctxt: optional pointer to populate with new context pointer
* @schemafile: unused
* @validate: unused
* *
* Parse XML document provided either as a file or a string. The function * Parse XML document provided either as a file or a string. The function
* guarantees that the XML document contains a root element. * guarantees that the XML document contains a root element.
@ -1111,7 +1113,9 @@ virXMLParseHelper(int domcode,
const char *xmlStr, const char *xmlStr,
const char *url, const char *url,
const char *rootelement, const char *rootelement,
xmlXPathContextPtr *ctxt) xmlXPathContextPtr *ctxt,
const char *schemafile G_GNUC_UNUSED,
bool validate G_GNUC_UNUSED)
{ {
struct virParserData private; struct virParserData private;
g_autoptr(xmlParserCtxt) pctxt = NULL; g_autoptr(xmlParserCtxt) pctxt = NULL;

View File

@ -170,7 +170,9 @@ virXMLParseHelper(int domcode,
const char *xmlStr, const char *xmlStr,
const char *url, const char *url,
const char *rootelement, const char *rootelement,
xmlXPathContextPtr *ctxt); xmlXPathContextPtr *ctxt,
const char *schemafile,
bool validate);
const char * const char *
virXMLPickShellSafeComment(const char *str1, virXMLPickShellSafeComment(const char *str1,
@ -185,8 +187,8 @@ virXMLPickShellSafeComment(const char *str1,
* *
* Return the parsed document object, or NULL on failure. * Return the parsed document object, or NULL on failure.
*/ */
#define virXMLParse(filename, xmlStr, url) \ #define virXMLParse(filename, xmlStr, url, schemafile, validate) \
virXMLParseHelper(VIR_FROM_THIS, filename, xmlStr, url, NULL, NULL) virXMLParseHelper(VIR_FROM_THIS, filename, xmlStr, url, NULL, NULL, schemafile, validate)
/** /**
* virXMLParseString: * virXMLParseString:
@ -198,7 +200,7 @@ virXMLPickShellSafeComment(const char *str1,
* Return the parsed document object, or NULL on failure. * Return the parsed document object, or NULL on failure.
*/ */
#define virXMLParseString(xmlStr, url) \ #define virXMLParseString(xmlStr, url) \
virXMLParseHelper(VIR_FROM_THIS, NULL, xmlStr, url, NULL, NULL) virXMLParseHelper(VIR_FROM_THIS, NULL, xmlStr, url, NULL, NULL, NULL, false)
/** /**
* virXMLParseFile: * virXMLParseFile:
@ -209,7 +211,7 @@ virXMLPickShellSafeComment(const char *str1,
* Return the parsed document object, or NULL on failure. * Return the parsed document object, or NULL on failure.
*/ */
#define virXMLParseFile(filename) \ #define virXMLParseFile(filename) \
virXMLParseHelper(VIR_FROM_THIS, filename, NULL, NULL, NULL, NULL) virXMLParseHelper(VIR_FROM_THIS, filename, NULL, NULL, NULL, NULL, NULL, false)
/** /**
* virXMLParseCtxt: * virXMLParseCtxt:
@ -224,7 +226,7 @@ virXMLPickShellSafeComment(const char *str1,
* Return the parsed document object, or NULL on failure. * Return the parsed document object, or NULL on failure.
*/ */
#define virXMLParseCtxt(filename, xmlStr, url, pctxt) \ #define virXMLParseCtxt(filename, xmlStr, url, pctxt) \
virXMLParseHelper(VIR_FROM_THIS, filename, xmlStr, url, NULL, pctxt) virXMLParseHelper(VIR_FROM_THIS, filename, xmlStr, url, NULL, pctxt, NULL, false)
/** /**
* virXMLParseStringCtxt: * virXMLParseStringCtxt:
@ -238,11 +240,11 @@ virXMLPickShellSafeComment(const char *str1,
* Return the parsed document object, or NULL on failure. * Return the parsed document object, or NULL on failure.
*/ */
#define virXMLParseStringCtxt(xmlStr, url, pctxt) \ #define virXMLParseStringCtxt(xmlStr, url, pctxt) \
virXMLParseHelper(VIR_FROM_THIS, NULL, xmlStr, url, NULL, pctxt) virXMLParseHelper(VIR_FROM_THIS, NULL, xmlStr, url, NULL, pctxt, NULL, false)
/* virXMLParseStringCtxtRoot is same as above, except it also validates root node name */ /* virXMLParseStringCtxtRoot is same as above, except it also validates root node name */
#define virXMLParseStringCtxtRoot(xmlStr, url, rootnode, pctxt) \ #define virXMLParseStringCtxtRoot(xmlStr, url, rootnode, pctxt) \
virXMLParseHelper(VIR_FROM_THIS, NULL, xmlStr, url, rootnode, pctxt) virXMLParseHelper(VIR_FROM_THIS, NULL, xmlStr, url, rootnode, pctxt, NULL, false)
/** /**
* virXMLParseFileCtxt: * virXMLParseFileCtxt:
@ -255,7 +257,7 @@ virXMLPickShellSafeComment(const char *str1,
* Return the parsed document object, or NULL on failure. * Return the parsed document object, or NULL on failure.
*/ */
#define virXMLParseFileCtxt(filename, pctxt) \ #define virXMLParseFileCtxt(filename, pctxt) \
virXMLParseHelper(VIR_FROM_THIS, filename, NULL, NULL, NULL, pctxt) virXMLParseHelper(VIR_FROM_THIS, filename, NULL, NULL, NULL, pctxt, NULL, false)
int int
virXMLSaveFile(const char *path, virXMLSaveFile(const char *path,

View File

@ -593,7 +593,7 @@ virVBoxSnapshotConfLoadVboxFile(const char *filePath,
machineDescription = g_new0(virVBoxSnapshotConfMachine, 1); machineDescription = g_new0(virVBoxSnapshotConfMachine, 1);
xml = virXMLParse(filePath, NULL, NULL); xml = virXMLParse(filePath, NULL, NULL, NULL, false);
if (xml == NULL) { if (xml == NULL) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("Unable to parse the xml")); _("Unable to parse the xml"));
@ -1230,7 +1230,7 @@ virVBoxSnapshotConfGetRWDisksPathsFromLibvirtXML(const char *filePath,
_("filePath is null")); _("filePath is null"));
goto cleanup; goto cleanup;
} }
xml = virXMLParse(filePath, NULL, NULL); xml = virXMLParse(filePath, NULL, NULL, NULL, false);
if (xml == NULL) { if (xml == NULL) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("Unable to parse the xml")); _("Unable to parse the xml"));
@ -1292,7 +1292,7 @@ virVBoxSnapshotConfGetRODisksPathsFromLibvirtXML(const char *filePath,
_("filePath is null")); _("filePath is null"));
goto cleanup; goto cleanup;
} }
xml = virXMLParse(filePath, NULL, NULL); xml = virXMLParse(filePath, NULL, NULL, NULL, false);
if (xml == NULL) { if (xml == NULL) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("Unable to parse the xml")); _("Unable to parse the xml"));

View File

@ -4595,7 +4595,7 @@ prlsdkParseSnapshotTree(const char *treexml)
if (*treexml == '\0') if (*treexml == '\0')
return snapshots; return snapshots;
if (!(xml = virXMLParse(NULL, treexml, _("(snapshot_tree)")))) if (!(xml = virXMLParse(NULL, treexml, _("(snapshot_tree)"), NULL, false)))
goto cleanup; goto cleanup;
root = xmlDocGetRootElement(xml); root = xmlDocGetRootElement(xml);

View File

@ -678,7 +678,7 @@ testCompareXMLToArgv(const void *data)
if (testCheckExclusiveFlags(info->flags) < 0) if (testCheckExclusiveFlags(info->flags) < 0)
goto cleanup; goto cleanup;
if (!(xml = virXMLParse(info->infile, NULL, "(domain_definition)"))) if (!(xml = virXMLParse(info->infile, NULL, "(domain_definition)", NULL, false)))
goto cleanup; goto cleanup;
root = xmlDocGetRootElement(xml); root = xmlDocGetRootElement(xml);