From 4d56d3c6382f01238c64bbc74b974f0c84ec382b Mon Sep 17 00:00:00 2001 From: Mark McLoughlin Date: Fri, 7 Jul 2006 14:36:27 +0000 Subject: [PATCH] Wed Jul 5 17:11:32 IST 2006 Mark McLoughlin * xml.c: allow a to not have any devices - e.g. when using an NFS root. --- ChangeLog | 5 +++++ src/xml.c | 23 +++++++++++------------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e447a1388..eee4e222d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Jul 5 17:11:32 IST 2006 Mark McLoughlin + + * xml.c: allow a to not have any devices - e.g. + when using an NFS root. + Thu Jul 6 10:32:14 CEST 2006 Daniel Veillard * src/xend_internal.c: fixed xenDaemonOpen() to try both unix and diff --git a/src/xml.c b/src/xml.c index f967dfc6c8..44ea2ee66d 100644 --- a/src/xml.c +++ b/src/xml.c @@ -944,20 +944,19 @@ virDomainParseXMLDesc(const char *xmldesc, char **name) /* analyze of the devices */ obj = xmlXPathEval(BAD_CAST "/domain/devices/disk", ctxt); - if ((obj == NULL) || (obj->type != XPATH_NODESET) || - (obj->nodesetval == NULL) || (obj->nodesetval->nodeNr < 1)) { - virXMLError(VIR_ERR_NO_DEVICE, nam, 0); - goto error; - } - for (i = 0; i < obj->nodesetval->nodeNr; i++) { - virBufferAdd(&buf, "(device ", 8); - res = virDomainParseXMLDiskDesc(obj->nodesetval->nodeTab[i], &buf); - if (res != 0) { - goto error; - } - virBufferAdd(&buf, ")", 1); + if ((obj != NULL) && (obj->type == XPATH_NODESET) && + (obj->nodesetval != NULL) && (obj->nodesetval->nodeNr >= 0)) { + for (i = 0; i < obj->nodesetval->nodeNr; i++) { + virBufferAdd(&buf, "(device ", 8); + res = virDomainParseXMLDiskDesc(obj->nodesetval->nodeTab[i], &buf); + if (res != 0) { + goto error; + } + virBufferAdd(&buf, ")", 1); + } } xmlXPathFreeObject(obj); + obj = xmlXPathEval(BAD_CAST "/domain/devices/interface", ctxt); if ((obj != NULL) && (obj->type == XPATH_NODESET) && (obj->nodesetval != NULL) && (obj->nodesetval->nodeNr >= 0)) {