mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
cpu: Split up virCPUDataParse
This makes it possible to call virCPUDataParse with a xmlNodePtr, which will be required by a later patch. Signed-off-by: Tim Wiederhake <twiederh@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
6c72b352e5
commit
399d6df60e
@ -803,11 +803,8 @@ virCPUDataFormat(const virCPUData *data)
|
|||||||
virCPUData *
|
virCPUData *
|
||||||
virCPUDataParse(const char *xmlStr)
|
virCPUDataParse(const char *xmlStr)
|
||||||
{
|
{
|
||||||
struct cpuArchDriver *driver;
|
|
||||||
g_autoptr(xmlDoc) xml = NULL;
|
g_autoptr(xmlDoc) xml = NULL;
|
||||||
g_autoptr(xmlXPathContext) ctxt = NULL;
|
g_autoptr(xmlXPathContext) ctxt = NULL;
|
||||||
virCPUData *data = NULL;
|
|
||||||
g_autofree char *arch = NULL;
|
|
||||||
|
|
||||||
VIR_DEBUG("xmlStr=%s", xmlStr);
|
VIR_DEBUG("xmlStr=%s", xmlStr);
|
||||||
|
|
||||||
@ -817,7 +814,25 @@ virCPUDataParse(const char *xmlStr)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(arch = virXPathString("string(/cpudata/@arch)", ctxt))) {
|
return virCPUDataParseNode(ctxt->node);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virCPUDataParseNode:
|
||||||
|
*
|
||||||
|
* @node: XML node as produced by virCPUDataFormat
|
||||||
|
*
|
||||||
|
* Parses XML representation of virCPUData structure.
|
||||||
|
*
|
||||||
|
* Returns internal CPU data structure parsed from the XML or NULL on error.
|
||||||
|
*/
|
||||||
|
virCPUData *virCPUDataParseNode(xmlNodePtr node)
|
||||||
|
{
|
||||||
|
g_autofree char *arch = NULL;
|
||||||
|
struct cpuArchDriver *driver;
|
||||||
|
|
||||||
|
if (!(arch = virXMLPropString(node, "arch"))) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
_("missing CPU data architecture"));
|
_("missing CPU data architecture"));
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -827,13 +842,11 @@ virCPUDataParse(const char *xmlStr)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!driver->dataParse) {
|
if (!driver->dataParse) {
|
||||||
virReportError(VIR_ERR_NO_SUPPORT,
|
virReportError(VIR_ERR_NO_SUPPORT, _("cannot parse %s CPU data"), arch);
|
||||||
_("cannot parse %s CPU data"), arch);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
data = driver->dataParse(ctxt->node);
|
return driver->dataParse(node);
|
||||||
return data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -285,3 +285,5 @@ char *virCPUDataFormat(const virCPUData *data)
|
|||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
virCPUData *virCPUDataParse(const char *xmlStr)
|
virCPUData *virCPUDataParse(const char *xmlStr)
|
||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
virCPUData *virCPUDataParseNode(xmlNodePtr node)
|
||||||
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
@ -1464,6 +1464,7 @@ virCPUDataFormat;
|
|||||||
virCPUDataFree;
|
virCPUDataFree;
|
||||||
virCPUDataNew;
|
virCPUDataNew;
|
||||||
virCPUDataParse;
|
virCPUDataParse;
|
||||||
|
virCPUDataParseNode;
|
||||||
virCPUExpandFeatures;
|
virCPUExpandFeatures;
|
||||||
virCPUGetHost;
|
virCPUGetHost;
|
||||||
virCPUGetHostIsSupported;
|
virCPUGetHostIsSupported;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user