mirror of https://gitee.com/openkylin/libvirt.git
conf: Use automatic pointers for xmlXPathContext
Clean up functions which grab and free the context to use VIR_AUTOPTR. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
475777c9ec
commit
8aa2233099
|
@ -209,13 +209,12 @@ virDomainCheckpointDefParseNode(xmlDocPtr xml,
|
||||||
void *parseOpaque,
|
void *parseOpaque,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
|
||||||
virDomainCheckpointDefPtr def = NULL;
|
|
||||||
VIR_AUTOFREE(char *) schema = NULL;
|
VIR_AUTOFREE(char *) schema = NULL;
|
||||||
|
|
||||||
if (!virXMLNodeNameEqual(root, "domaincheckpoint")) {
|
if (!virXMLNodeNameEqual(root, "domaincheckpoint")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s", _("domaincheckpoint"));
|
virReportError(VIR_ERR_XML_ERROR, "%s", _("domaincheckpoint"));
|
||||||
goto cleanup;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is a new enough API to make schema validation unconditional */
|
/* This is a new enough API to make schema validation unconditional */
|
||||||
|
@ -228,13 +227,10 @@ virDomainCheckpointDefParseNode(xmlDocPtr xml,
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!(ctxt = virXMLXPathContextNew(xml)))
|
if (!(ctxt = virXMLXPathContextNew(xml)))
|
||||||
goto cleanup;
|
return NULL;
|
||||||
|
|
||||||
ctxt->node = root;
|
ctxt->node = root;
|
||||||
def = virDomainCheckpointDefParse(ctxt, caps, xmlopt, parseOpaque, flags);
|
return virDomainCheckpointDefParse(ctxt, caps, xmlopt, parseOpaque, flags);
|
||||||
cleanup:
|
|
||||||
xmlXPathFreeContext(ctxt);
|
|
||||||
return def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virDomainCheckpointDefPtr
|
virDomainCheckpointDefPtr
|
||||||
|
|
|
@ -21600,26 +21600,21 @@ virDomainObjParseNode(xmlDocPtr xml,
|
||||||
virDomainXMLOptionPtr xmlopt,
|
virDomainXMLOptionPtr xmlopt,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
|
||||||
virDomainObjPtr obj = NULL;
|
|
||||||
|
|
||||||
if (!virXMLNodeNameEqual(root, "domstatus")) {
|
if (!virXMLNodeNameEqual(root, "domstatus")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
_("unexpected root element <%s>, "
|
_("unexpected root element <%s>, "
|
||||||
"expecting <domstatus>"),
|
"expecting <domstatus>"),
|
||||||
root->name);
|
root->name);
|
||||||
goto cleanup;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ctxt = virXMLXPathContextNew(xml)))
|
if (!(ctxt = virXMLXPathContextNew(xml)))
|
||||||
goto cleanup;
|
return NULL;
|
||||||
|
|
||||||
ctxt->node = root;
|
ctxt->node = root;
|
||||||
obj = virDomainObjParseXML(xml, ctxt, caps, xmlopt, flags);
|
return virDomainObjParseXML(xml, ctxt, caps, xmlopt, flags);
|
||||||
|
|
||||||
cleanup:
|
|
||||||
xmlXPathFreeContext(ctxt);
|
|
||||||
return obj;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -819,8 +819,7 @@ virInterfaceDefPtr
|
||||||
virInterfaceDefParseNode(xmlDocPtr xml,
|
virInterfaceDefParseNode(xmlDocPtr xml,
|
||||||
xmlNodePtr root)
|
xmlNodePtr root)
|
||||||
{
|
{
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
|
||||||
virInterfaceDefPtr def = NULL;
|
|
||||||
|
|
||||||
if (!virXMLNodeNameEqual(root, "interface")) {
|
if (!virXMLNodeNameEqual(root, "interface")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
|
@ -831,14 +830,10 @@ virInterfaceDefParseNode(xmlDocPtr xml,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ctxt = virXMLXPathContextNew(xml)))
|
if (!(ctxt = virXMLXPathContextNew(xml)))
|
||||||
goto cleanup;
|
return NULL;
|
||||||
|
|
||||||
ctxt->node = root;
|
ctxt->node = root;
|
||||||
def = virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_LAST);
|
return virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_LAST);
|
||||||
|
|
||||||
cleanup:
|
|
||||||
xmlXPathFreeContext(ctxt);
|
|
||||||
return def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2114,8 +2114,7 @@ virNetworkDefParseNode(xmlDocPtr xml,
|
||||||
xmlNodePtr root,
|
xmlNodePtr root,
|
||||||
virNetworkXMLOptionPtr xmlopt)
|
virNetworkXMLOptionPtr xmlopt)
|
||||||
{
|
{
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
|
||||||
virNetworkDefPtr def = NULL;
|
|
||||||
|
|
||||||
if (!virXMLNodeNameEqual(root, "network")) {
|
if (!virXMLNodeNameEqual(root, "network")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
|
@ -2126,14 +2125,10 @@ virNetworkDefParseNode(xmlDocPtr xml,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ctxt = virXMLXPathContextNew(xml)))
|
if (!(ctxt = virXMLXPathContextNew(xml)))
|
||||||
goto cleanup;
|
return NULL;
|
||||||
|
|
||||||
ctxt->node = root;
|
ctxt->node = root;
|
||||||
def = virNetworkDefParseXML(ctxt, xmlopt);
|
return virNetworkDefParseXML(ctxt, xmlopt);
|
||||||
|
|
||||||
cleanup:
|
|
||||||
xmlXPathFreeContext(ctxt);
|
|
||||||
return def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2052,8 +2052,7 @@ virNodeDeviceDefParseNode(xmlDocPtr xml,
|
||||||
int create,
|
int create,
|
||||||
const char *virt_type)
|
const char *virt_type)
|
||||||
{
|
{
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
|
||||||
virNodeDeviceDefPtr def = NULL;
|
|
||||||
|
|
||||||
if (!virXMLNodeNameEqual(root, "device")) {
|
if (!virXMLNodeNameEqual(root, "device")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
|
@ -2064,14 +2063,10 @@ virNodeDeviceDefParseNode(xmlDocPtr xml,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ctxt = virXMLXPathContextNew(xml)))
|
if (!(ctxt = virXMLXPathContextNew(xml)))
|
||||||
goto cleanup;
|
return NULL;
|
||||||
|
|
||||||
ctxt->node = root;
|
ctxt->node = root;
|
||||||
def = virNodeDeviceDefParseXML(ctxt, create, virt_type);
|
return virNodeDeviceDefParseXML(ctxt, create, virt_type);
|
||||||
|
|
||||||
cleanup:
|
|
||||||
xmlXPathFreeContext(ctxt);
|
|
||||||
return def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2746,25 +2746,20 @@ virNWFilterDefPtr
|
||||||
virNWFilterDefParseNode(xmlDocPtr xml,
|
virNWFilterDefParseNode(xmlDocPtr xml,
|
||||||
xmlNodePtr root)
|
xmlNodePtr root)
|
||||||
{
|
{
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
|
||||||
virNWFilterDefPtr def = NULL;
|
|
||||||
|
|
||||||
if (STRNEQ((const char *)root->name, "filter")) {
|
if (STRNEQ((const char *)root->name, "filter")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
"%s",
|
"%s",
|
||||||
_("unknown root element for nw filter"));
|
_("unknown root element for nw filter"));
|
||||||
goto cleanup;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ctxt = virXMLXPathContextNew(xml)))
|
if (!(ctxt = virXMLXPathContextNew(xml)))
|
||||||
goto cleanup;
|
return NULL;
|
||||||
|
|
||||||
ctxt->node = root;
|
ctxt->node = root;
|
||||||
def = virNWFilterDefParseXML(ctxt);
|
return virNWFilterDefParseXML(ctxt);
|
||||||
|
|
||||||
cleanup:
|
|
||||||
xmlXPathFreeContext(ctxt);
|
|
||||||
return def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -430,12 +430,11 @@ virDomainSnapshotDefParseNode(xmlDocPtr xml,
|
||||||
bool *current,
|
bool *current,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
|
||||||
virDomainSnapshotDefPtr def = NULL;
|
|
||||||
|
|
||||||
if (!virXMLNodeNameEqual(root, "domainsnapshot")) {
|
if (!virXMLNodeNameEqual(root, "domainsnapshot")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s", _("domainsnapshot"));
|
virReportError(VIR_ERR_XML_ERROR, "%s", _("domainsnapshot"));
|
||||||
goto cleanup;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE) {
|
if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE) {
|
||||||
|
@ -445,19 +444,16 @@ virDomainSnapshotDefParseNode(xmlDocPtr xml,
|
||||||
abs_top_srcdir "/docs/schemas",
|
abs_top_srcdir "/docs/schemas",
|
||||||
PKGDATADIR "/schemas");
|
PKGDATADIR "/schemas");
|
||||||
if (!schema)
|
if (!schema)
|
||||||
goto cleanup;
|
return NULL;
|
||||||
if (virXMLValidateAgainstSchema(schema, xml) < 0)
|
if (virXMLValidateAgainstSchema(schema, xml) < 0)
|
||||||
goto cleanup;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ctxt = virXMLXPathContextNew(xml)))
|
if (!(ctxt = virXMLXPathContextNew(xml)))
|
||||||
goto cleanup;
|
return NULL;
|
||||||
|
|
||||||
ctxt->node = root;
|
ctxt->node = root;
|
||||||
def = virDomainSnapshotDefParse(ctxt, caps, xmlopt, parseOpaque, current, flags);
|
return virDomainSnapshotDefParse(ctxt, caps, xmlopt, parseOpaque, current, flags);
|
||||||
cleanup:
|
|
||||||
xmlXPathFreeContext(ctxt);
|
|
||||||
return def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virDomainSnapshotDefPtr
|
virDomainSnapshotDefPtr
|
||||||
|
|
|
@ -1013,25 +1013,21 @@ virStoragePoolDefPtr
|
||||||
virStoragePoolDefParseNode(xmlDocPtr xml,
|
virStoragePoolDefParseNode(xmlDocPtr xml,
|
||||||
xmlNodePtr root)
|
xmlNodePtr root)
|
||||||
{
|
{
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
|
||||||
virStoragePoolDefPtr def = NULL;
|
|
||||||
|
|
||||||
if (!virXMLNodeNameEqual(root, "pool")) {
|
if (!virXMLNodeNameEqual(root, "pool")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
_("unexpected root element <%s>, "
|
_("unexpected root element <%s>, "
|
||||||
"expecting <pool>"),
|
"expecting <pool>"),
|
||||||
root->name);
|
root->name);
|
||||||
goto cleanup;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ctxt = virXMLXPathContextNew(xml)))
|
if (!(ctxt = virXMLXPathContextNew(xml)))
|
||||||
goto cleanup;
|
return NULL;
|
||||||
|
|
||||||
ctxt->node = root;
|
ctxt->node = root;
|
||||||
def = virStoragePoolDefParseXML(ctxt);
|
return virStoragePoolDefParseXML(ctxt);
|
||||||
cleanup:
|
|
||||||
xmlXPathFreeContext(ctxt);
|
|
||||||
return def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1454,25 +1450,21 @@ virStorageVolDefParseNode(virStoragePoolDefPtr pool,
|
||||||
xmlNodePtr root,
|
xmlNodePtr root,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
VIR_AUTOPTR(xmlXPathContext) ctxt = NULL;
|
||||||
virStorageVolDefPtr def = NULL;
|
|
||||||
|
|
||||||
if (!virXMLNodeNameEqual(root, "volume")) {
|
if (!virXMLNodeNameEqual(root, "volume")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
_("unexpected root element <%s>, "
|
_("unexpected root element <%s>, "
|
||||||
"expecting <volume>"),
|
"expecting <volume>"),
|
||||||
root->name);
|
root->name);
|
||||||
goto cleanup;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ctxt = virXMLXPathContextNew(xml)))
|
if (!(ctxt = virXMLXPathContextNew(xml)))
|
||||||
goto cleanup;
|
return NULL;
|
||||||
|
|
||||||
ctxt->node = root;
|
ctxt->node = root;
|
||||||
def = virStorageVolDefParseXML(pool, ctxt, flags);
|
return virStorageVolDefParseXML(pool, ctxt, flags);
|
||||||
cleanup:
|
|
||||||
xmlXPathFreeContext(ctxt);
|
|
||||||
return def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue