[...]
So your series went through rather messed up. I see at least two
different copies of patch 2/something.
On Thu, Feb 08, 2018 at 14:45:59 +0800, xinhua.Cao wrote:
beacause virDomainDefParseXML is too long, and all domain xml
parse in this function, it's difficulty to maintain this function
so separate virDomainDefParseXML into serial parts use
virDomainPreaseInfoFunc. then it will easy to maintain
So this commit message should describe what this patch is using, but
it's not.
---
src/conf/domain_conf.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 34aae82..e36783b 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -18527,6 +18527,28 @@ virDomainCachetuneDefParse(virDomainDefPtr def,
}
+typedef struct _virDomainParseTotalParam virDomainParseTotalParam;
+typedef virDomainParseTotalParam *virDomainParseTotalParamPtr;
+
+struct _virDomainParseTotalParam{
+ //input parameters
We use only old-style comments.
+ virDomainDefPtr def;
+ xmlDocPtr xml;
+ xmlNodePtr root;
+ xmlXPathContextPtr ctxt;
+ virCapsPtr caps;
+ virDomainXMLOptionPtr xmlopt;
+ void *parseOpaque;
+ unsigned int flags;
+
+ //internal parameters
+ bool usb_none;
+ bool usb_other;
+ bool usb_master;
+ bool uuid_generated;
+};
+
+
static virDomainDefPtr
virDomainDefParseXML(xmlDocPtr xml,
xmlNodePtr root,
@@ -18536,11 +18558,14 @@ virDomainDefParseXML(xmlDocPtr xml,
void *parseOpaque,
unsigned int flags)
{
+ typedef int (*virDomainPreaseInfoFunc)(virDomainParseTotalParamPtr params);
Typo in the name and also you should not typedef in the functions.
+
xmlNodePtr *nodes = NULL, node = NULL;
char *tmp = NULL;
size_t i, j;
int n, virtType, gic_version;
long id = -1;
+ size_t fun_index = 0;
virDomainDefPtr def;
bool uuid_generated = false;
virHashTablePtr bootHash = NULL;
@@ -18548,6 +18573,25 @@ virDomainDefParseXML(xmlDocPtr xml,
bool usb_other = false;
bool usb_master = false;
char *netprefix = NULL;
+ virDomainParseTotalParam param = {
+ NULL,
+ xml,
+ root,
+ ctxt,
+ caps,
+ xmlopt,
+ parseOpaque,
+ flags,
+ false,
+ false,
+ false,
+ false
+
+ };
+
+ virDomainPreaseInfoFunc parse_funs[] = {
+ NULL
+ };
if (flags & VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA) {
char *schema = virFileFindResource("domain.rng",
@@ -18565,6 +18609,14 @@ virDomainDefParseXML(xmlDocPtr xml,
if (!(def = virDomainDefNew()))
return NULL;
+ param.def = def;
+
+ while (parse_funs[fun_index]) {
+ if (parse_funs[fun_index](¶m) < 0)
+ goto error;
+ fun_index++;
+ }
NACK to this. I prefer if the functions are visible in the code in the
correct order, so please don't try to load them from an array of
callbacks. I don't see any benefit of this.