On 04/24/2016 07:22 PM, Cole Robinson wrote:
This matches the pattern used for network object APIs, and we want
configDir in LoadConfig for upcoming patches
---
src/conf/nwfilter_conf.c | 45 ++++++++++++++++++++++++---------------------
1 file changed, 24 insertions(+), 21 deletions(-)
diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c
index d02bbff..d8e83f0 100644
--- a/src/conf/nwfilter_conf.c
+++ b/src/conf/nwfilter_conf.c
@@ -3156,30 +3156,39 @@ virNWFilterObjAssignDef(virNWFilterObjListPtr nwfilters,
static virNWFilterObjPtr
-virNWFilterObjLoad(virNWFilterObjListPtr nwfilters,
- const char *file,
- const char *path)
+virNWFilterLoadConfig(virNWFilterObjListPtr nwfilters,
+ const char *configDir,
+ const char *name)
{
- virNWFilterDefPtr def;
+ virNWFilterDefPtr def = NULL;
virNWFilterObjPtr nwfilter;
+ char *configFile = NULL;
- if (!(def = virNWFilterDefParseFile(path)))
- return NULL;
+ if (!(configFile = virFileBuildPath(configDir, name, ".xml")))
+ goto error;
- if (!virFileMatchesNameSuffix(file, def->name, ".xml")) {
+ if (!(def = virNWFilterDefParseFile(configFile)))
+ goto error;
+
+ if (STRNEQ(name, def->name)) {
virReportError(VIR_ERR_XML_ERROR,
- _("network filter config filename '%s' does not
match name '%s'"),
- path, def->name);
- virNWFilterDefFree(def);
- return NULL;
+ _("network filter config filename '%s' "
+ "does not match name '%s'"),
+ configFile, def->name);
+ goto error;
}
if (!(nwfilter = virNWFilterObjAssignDef(nwfilters, def))) {
- virNWFilterDefFree(def);
- return NULL;
+ goto error;
}
Make sure you run 'syntax-check'... A window I had used for compiles was
obscured and I see the syntax-check fails because of the { } and one
line goto error.
John
+ VIR_FREE(configFile);
return nwfilter;
+
+ error:
+ VIR_FREE(configFile);
+ virNWFilterDefFree(def);
+ return NULL;
}
@@ -3200,23 +3209,17 @@ virNWFilterLoadAllConfigs(virNWFilterObjListPtr nwfilters,
}
while ((ret = virDirRead(dir, &entry, configDir)) > 0) {
- char *path;
virNWFilterObjPtr nwfilter;
if (entry->d_name[0] == '.')
continue;
- if (!virFileHasSuffix(entry->d_name, ".xml"))
- continue;
-
- if (!(path = virFileBuildPath(configDir, entry->d_name, NULL)))
+ if (!virFileStripSuffix(entry->d_name, ".xml"))
continue;
- nwfilter = virNWFilterObjLoad(nwfilters, entry->d_name, path);
+ nwfilter = virNWFilterLoadConfig(nwfilters, configDir, entry->d_name);
if (nwfilter)
virNWFilterObjUnlock(nwfilter);
-
- VIR_FREE(path);
}
closedir(dir);