[libvirt] [libvirt PATCH v6 13/15] xen_common: Change xenParsePCIList to using virConfGetValueStringList

Fabiano Fidêncio fidencio at redhat.com
Tue Sep 18 18:48:16 UTC 2018


The `if (!list || list->type != VIR_CONF_LIST)` couldn't be written in a
100% similar way as `if (virConfGetValueStringList(conf, "pci", false,
&pcis) <= 0)` leads us to just ignore any error and return 0 in case of
failure. However, for what's needed in this function, this is the
closest to the original that we can get and it shouldn't change the
function behaviour.

Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
 src/xenconfig/xen_common.c | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/xenconfig/xen_common.c b/src/xenconfig/xen_common.c
index 09f93ba449..9ad081e56b 100644
--- a/src/xenconfig/xen_common.c
+++ b/src/xenconfig/xen_common.c
@@ -462,27 +462,30 @@ xenParsePCI(char *entry)
 static int
 xenParsePCIList(virConfPtr conf, virDomainDefPtr def)
 {
-    virConfValuePtr list = virConfGetValue(conf, "pci");
+    char **pcis = NULL, **entries;
+    int ret = -1;
 
-    if (!list || list->type != VIR_CONF_LIST)
+    if (virConfGetValueStringList(conf, "pci", false, &pcis) <= 0)
         return 0;
 
-    for (list = list->list; list; list = list->next) {
+    for (entries = pcis; *entries; entries++) {
+        char *entry = *entries;
         virDomainHostdevDefPtr hostdev;
 
-        if ((list->type != VIR_CONF_STRING) || (list->str == NULL))
-            continue;
-
-        if (!(hostdev = xenParsePCI(list->str)))
-            return -1;
+        if (!(hostdev = xenParsePCI(entry)))
+            goto cleanup;
 
         if (VIR_APPEND_ELEMENT(def->hostdevs, def->nhostdevs, hostdev) < 0) {
             virDomainHostdevDefFree(hostdev);
-            return -1;
+            goto cleanup;
         }
     }
 
-    return 0;
+    ret = 0;
+
+ cleanup:
+    virStringListFree(pcis);
+    return ret;
 }
 
 
-- 
2.17.1




More information about the libvir-list mailing list