[libvirt] [PATCH 3/4] nwfilter: Push configFile building into LoadConfig

Cole Robinson crobinso at redhat.com
Sun Apr 24 23:22:51 UTC 2016


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;
     }
 
+    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);
-- 
2.7.3




More information about the libvir-list mailing list