[libvirt] [PATCH 06/18] Use virDirOpen

Ján Tomko jtomko at redhat.com
Tue Jun 21 16:05:29 UTC 2016


Switch from opendir to virDirOpen everywhere we need to report an error.
---
 src/storage/storage_backend_fs.c    |  6 +-----
 src/storage/storage_backend_iscsi.c |  7 +------
 src/storage/storage_backend_scsi.c  | 19 +++----------------
 src/util/vircgroup.c                |  5 +----
 src/util/virfile.c                  | 16 +++-------------
 src/util/virhostcpu.c               |  4 +---
 src/util/virnetdev.c                |  6 +-----
 src/util/virnetdevtap.c             |  7 +------
 src/util/virpci.c                   | 13 +++----------
 src/util/virprocess.c               |  2 +-
 src/util/virscsi.c                  | 10 ++--------
 src/util/virusb.c                   |  7 +------
 src/util/virutil.c                  | 18 +++---------------
 src/xen/xen_inotify.c               |  7 ++-----
 src/xen/xm_internal.c               |  6 +-----
 tests/virschematest.c               |  6 +-----
 tools/nss/libvirt_nss.c             |  4 +---
 17 files changed, 27 insertions(+), 116 deletions(-)

diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index 152f9f3..2054309 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -900,12 +900,8 @@ virStorageBackendFileSystemRefresh(virConnectPtr conn ATTRIBUTE_UNUSED,
     int direrr;
     int fd = -1, ret = -1;
 
-    if (!(dir = opendir(pool->def->target.path))) {
-        virReportSystemError(errno,
-                             _("cannot open path '%s'"),
-                             pool->def->target.path);
+    if (virDirOpen(&dir, pool->def->target.path) < 0)
         goto cleanup;
-    }
 
     while ((direrr = virDirRead(dir, &ent, pool->def->target.path)) > 0) {
         int err;
diff --git a/src/storage/storage_backend_iscsi.c b/src/storage/storage_backend_iscsi.c
index e50158f..6283837 100644
--- a/src/storage/storage_backend_iscsi.c
+++ b/src/storage/storage_backend_iscsi.c
@@ -99,13 +99,8 @@ virStorageBackendISCSIGetHostNumber(const char *sysfs_path,
 
     virFileWaitForDevices();
 
-    sysdir = opendir(sysfs_path);
-
-    if (sysdir == NULL) {
-        virReportSystemError(errno,
-                             _("Failed to opendir path '%s'"), sysfs_path);
+    if (virDirOpen(&sysdir, sysfs_path) < 0)
         goto cleanup;
-    }
 
     while ((direrr = virDirRead(sysdir, &dirent, sysfs_path)) > 0) {
         if (STREQLEN(dirent->d_name, "target", strlen("target"))) {
diff --git a/src/storage/storage_backend_scsi.c b/src/storage/storage_backend_scsi.c
index b08d960..df683e4 100644
--- a/src/storage/storage_backend_scsi.c
+++ b/src/storage/storage_backend_scsi.c
@@ -265,12 +265,8 @@ getNewStyleBlockDevice(const char *lun_path,
 
     VIR_DEBUG("Looking for block device in '%s'", block_path);
 
-    if (!(block_dir = opendir(block_path))) {
-        virReportSystemError(errno,
-                             _("Failed to opendir sysfs path '%s'"),
-                             block_path);
+    if (virDirOpen(&block_dir, block_path) < 0)
         goto cleanup;
-    }
 
     while ((direrr = virDirRead(block_dir, &block_dirent, block_path)) > 0) {
         if (STREQLEN(block_dirent->d_name, ".", 1))
@@ -353,12 +349,8 @@ getBlockDevice(uint32_t host,
                     host, bus, target, lun) < 0)
         goto cleanup;
 
-    if (!(lun_dir = opendir(lun_path))) {
-        virReportSystemError(errno,
-                             _("Failed to opendir sysfs path '%s'"),
-                             lun_path);
+    if (virDirOpen(&lun_dir, lun_path) < 0)
         goto cleanup;
-    }
 
     while ((direrr = virDirRead(lun_dir, &lun_dirent, lun_path)) > 0) {
         if (STREQLEN(lun_dirent->d_name, "block", 5)) {
@@ -470,13 +462,8 @@ virStorageBackendSCSIFindLUs(virStoragePoolObjPtr pool,
 
     virFileWaitForDevices();
 
-    devicedir = opendir(device_path);
-
-    if (devicedir == NULL) {
-        virReportSystemError(errno,
-                             _("Failed to opendir path '%s'"), device_path);
+    if (virDirOpen(&devicedir, device_path) < 0)
         return -1;
-    }
 
     snprintf(devicepattern, sizeof(devicepattern), "%u:%%u:%%u:%%u\n", scanhost);
 
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index c76c94f..ce9b942 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -3957,11 +3957,8 @@ int virCgroupSetOwner(virCgroupPtr cgroup,
                         cgroup->controllers[i].placement) < 0)
             goto cleanup;
 
-        if (!(dh = opendir(base))) {
-            virReportSystemError(errno,
-                                 _("Unable to open dir '%s'"), base);
+        if (virDirOpen(&dh, base) < 0)
             goto cleanup;
-        }
 
         while ((direrr = virDirRead(dh, &de, base)) > 0) {
             if (STREQ(de->d_name, ".") ||
diff --git a/src/util/virfile.c b/src/util/virfile.c
index aac0324..7dee3d9 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -614,11 +614,8 @@ static int virFileLoopDeviceOpenSearch(char **dev_name)
 
     VIR_DEBUG("Looking for loop devices in /dev");
 
-    if (!(dh = opendir("/dev"))) {
-        virReportSystemError(errno, "%s",
-                             _("Unable to read /dev"));
+    if (virDirOpen(&dh, "/dev") < 0)
         goto cleanup;
-    }
 
     while ((direrr = virDirRead(dh, &de, "/dev")) > 0) {
         /* Checking 'loop' prefix is insufficient, since
@@ -782,12 +779,8 @@ virFileNBDDeviceFindUnused(void)
     struct dirent *de;
     int direrr;
 
-    if (!(dh = opendir(SYSFS_BLOCK_DIR))) {
-        virReportSystemError(errno,
-                             _("Cannot read directory %s"),
-                             SYSFS_BLOCK_DIR);
+    if (virDirOpen(&dh, SYSFS_BLOCK_DIR) < 0)
         return NULL;
-    }
 
     while ((direrr = virDirRead(dh, &de, SYSFS_BLOCK_DIR)) > 0) {
         if (STRPREFIX(de->d_name, "nbd")) {
@@ -942,11 +935,8 @@ int virFileDeleteTree(const char *dir)
     if (!dir || !virFileExists(dir))
         return 0;
 
-    if (!(dh = opendir(dir))) {
-        virReportSystemError(errno, _("Cannot open dir '%s'"),
-                             dir);
+    if (virDirOpen(&dh, dir) < 0)
         return -1;
-    }
 
     while ((direrr = virDirRead(dh, &de, dir)) > 0) {
         struct stat sb;
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
index 6883466..087ce22 100644
--- a/src/util/virhostcpu.c
+++ b/src/util/virhostcpu.c
@@ -339,10 +339,8 @@ virHostCPUParseNode(const char *node,
     *cores = 0;
     *sockets = 0;
 
-    if (!(cpudir = opendir(node))) {
-        virReportSystemError(errno, _("cannot opendir %s"), node);
+    if (virDirOpen(&cpudir, node) < 0)
         goto cleanup;
-    }
 
     /* Keep track of the CPUs that belong to the current node */
     if (!(node_cpus_map = virBitmapNew(npresent_cpus)))
diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
index 75ec484..84406de 100644
--- a/src/util/virnetdev.c
+++ b/src/util/virnetdev.c
@@ -3157,12 +3157,8 @@ virNetDevRDMAFeature(const char *ifname,
     if (!virFileExists(SYSFS_INFINIBAND_DIR))
         return 0;
 
-    if (!(dirp = opendir(SYSFS_INFINIBAND_DIR))) {
-        virReportSystemError(errno,
-                             _("Failed to opendir path '%s'"),
-                             SYSFS_INFINIBAND_DIR);
+    if (virDirOpen(&dirp, SYSFS_INFINIBAND_DIR) < 0)
         return -1;
-    }
 
     if (virAsprintf(&eth_devpath, SYSFS_NET_DIR "%s/device/resource", ifname) < 0)
         goto cleanup;
diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c
index eec7614..98e27bb 100644
--- a/src/util/virnetdevtap.c
+++ b/src/util/virnetdevtap.c
@@ -98,13 +98,8 @@ virNetDevTapGetRealDeviceName(char *ifname ATTRIBUTE_UNUSED)
     char *devpath = NULL;
     int fd;
 
-    DIR *dirp = opendir("/dev");
-    if (dirp == NULL) {
-        virReportSystemError(errno,
-                             _("Failed to opendir path '%s'"),
-                             "/dev");
+    if (virDirOpen(&dirp, "/dev") < 0)
         return NULL;
-    }
 
     while (virDirRead(dirp, &dp, "/dev") > 0) {
         if (STRPREFIX(dp->d_name, "tap")) {
diff --git a/src/util/virpci.c b/src/util/virpci.c
index 5cb5d3a..77ae9b4 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -460,11 +460,8 @@ virPCIDeviceIterDevices(virPCIDeviceIterPredicate predicate,
 
     VIR_DEBUG("%s %s: iterating over " PCI_SYSFS "devices", dev->id, dev->name);
 
-    dir = opendir(PCI_SYSFS "devices");
-    if (!dir) {
-        VIR_WARN("Failed to open " PCI_SYSFS "devices");
+    if (virDirOpen(&dir, PCI_SYSFS "devices") < 0)
         return -1;
-    }
 
     while ((ret = virDirRead(dir, &entry, PCI_SYSFS "devices")) > 0) {
         unsigned int domain, bus, slot, function;
@@ -1962,11 +1959,8 @@ int virPCIDeviceFileIterate(virPCIDevicePtr dev,
                     dev->address.slot, dev->address.function) < 0)
         goto cleanup;
 
-    if (!(dir = opendir(pcidir))) {
-        virReportSystemError(errno,
-                             _("cannot open %s"), pcidir);
+    if (virDirOpen(&dir, pcidir) < 0)
         goto cleanup;
-    }
 
     while ((direrr = virDirRead(dir, &ent, pcidir)) > 0) {
         /* Device assignment requires:
@@ -2696,8 +2690,7 @@ virPCIGetNetName(char *device_link_sysfs_path, char **netname)
         return -1;
     }
 
-    dir = opendir(pcidev_sysfs_net_path);
-    if (dir == NULL)
+    if (virDirOpen(&dir, pcidev_sysfs_net_path) < 0)
         goto out;
 
     while (virDirRead(dir, &entry, pcidev_sysfs_net_path) > 0) {
diff --git a/src/util/virprocess.c b/src/util/virprocess.c
index b0ca1ce..a3e7f4e 100644
--- a/src/util/virprocess.c
+++ b/src/util/virprocess.c
@@ -612,7 +612,7 @@ int virProcessGetPids(pid_t pid, size_t *npids, pid_t **pids)
                     (unsigned long long)pid) < 0)
         goto cleanup;
 
-    if (!(dir = opendir(taskPath)))
+    if (virDirOpen(&dir, taskPath) < 0)
         goto cleanup;
 
     while ((value = virDirRead(dir, &ent, taskPath)) > 0) {
diff --git a/src/util/virscsi.c b/src/util/virscsi.c
index 72a5661..0f57494 100644
--- a/src/util/virscsi.c
+++ b/src/util/virscsi.c
@@ -127,11 +127,8 @@ virSCSIDeviceGetSgName(const char *sysfs_prefix,
                     prefix, adapter_id, bus, target, unit) < 0)
         return NULL;
 
-    if (!(dir = opendir(path))) {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("Failed to open %s"), path);
+    if (virDirOpen(&dir, path) < 0)
         goto cleanup;
-    }
 
     while (virDirRead(dir, &entry, path) > 0) {
         if (entry->d_name[0] == '.')
@@ -173,11 +170,8 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix,
                     prefix, adapter_id, bus, target, unit) < 0)
         return NULL;
 
-    if (!(dir = opendir(path))) {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("Failed to open %s"), path);
+    if (virDirOpen(&dir, path) < 0)
         goto cleanup;
-    }
 
     while (virDirRead(dir, &entry, path) > 0) {
         if (entry->d_name[0] == '.')
diff --git a/src/util/virusb.c b/src/util/virusb.c
index 33b188e..1db8173 100644
--- a/src/util/virusb.c
+++ b/src/util/virusb.c
@@ -138,13 +138,8 @@ virUSBDeviceSearch(unsigned int vendor,
     if (!(list = virUSBDeviceListNew()))
         goto cleanup;
 
-    dir = opendir(USB_SYSFS "/devices");
-    if (!dir) {
-        virReportSystemError(errno,
-                             _("Could not open directory %s"),
-                             USB_SYSFS "/devices");
+    if (virDirOpen(&dir, USB_SYSFS "/devices") < 0)
         goto cleanup;
-    }
 
     while ((direrr = virDirRead(dir, &de, USB_SYSFS "/devices")) > 0) {
         unsigned int found_prod, found_vend, found_bus, found_devno;
diff --git a/src/util/virutil.c b/src/util/virutil.c
index a6c1273..46313c2 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -1860,12 +1860,8 @@ virFindSCSIHostByPCI(const char *sysfs_prefix,
     char *unique_path = NULL;
     unsigned int read_unique_id;
 
-    if (!(dir = opendir(prefix))) {
-        virReportSystemError(errno,
-                             _("Failed to opendir path '%s'"),
-                             prefix);
+    if (virDirOpen(&dir, prefix) < 0)
         return NULL;
-    }
 
     while (virDirRead(dir, &entry, prefix) > 0) {
         if (entry->d_name[0] == '.' || !virFileIsLink(entry->d_name))
@@ -2198,12 +2194,8 @@ virGetFCHostNameByWWN(const char *sysfs_prefix,
     char *p;
     char *ret = NULL;
 
-    if (!(dir = opendir(prefix))) {
-        virReportSystemError(errno,
-                             _("Failed to opendir path '%s'"),
-                             prefix);
+    if (virDirOpen(&dir, prefix) < 0)
         return NULL;
-    }
 
 # define READ_WWN(wwn_path, buf)                      \
     do {                                              \
@@ -2292,12 +2284,8 @@ virFindFCHostCapableVport(const char *sysfs_prefix)
     char *state = NULL;
     char *ret = NULL;
 
-    if (!(dir = opendir(prefix))) {
-        virReportSystemError(errno,
-                             _("Failed to opendir path '%s'"),
-                             prefix);
+    if (virDirOpen(&dir, prefix) < 0)
         return NULL;
-    }
 
     while (virDirRead(dir, &entry, prefix) > 0) {
         unsigned int host;
diff --git a/src/xen/xen_inotify.c b/src/xen/xen_inotify.c
index cd169e0..ac4070c 100644
--- a/src/xen/xen_inotify.c
+++ b/src/xen/xen_inotify.c
@@ -360,12 +360,9 @@ xenInotifyOpen(virConnectPtr conn,
             return -1;
 
         /* populate initial list */
-        if (!(dh = opendir(priv->configDir))) {
-            virReportSystemError(errno,
-                                 _("cannot open directory: %s"),
-                                 priv->configDir);
+        if (virDirOpen(&dh, priv->configDir) < 0)
             return -1;
-        }
+
         while ((direrr = virDirRead(dh, &ent, priv->configDir)) > 0) {
             if (STRPREFIX(ent->d_name, "."))
                 continue;
diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
index e7ac57e..3c34652 100644
--- a/src/xen/xm_internal.c
+++ b/src/xen/xm_internal.c
@@ -319,12 +319,8 @@ xenXMConfigCacheRefresh(virConnectPtr conn)
     priv->lastRefresh = now;
 
     /* Process the files in the config dir */
-    if (!(dh = opendir(priv->configDir))) {
-        virReportSystemError(errno,
-                             _("cannot read directory %s"),
-                             priv->configDir);
+    if (virDirOpen(&dh, priv->configDir) < 0)
         return -1;
-    }
 
     while ((ret = virDirRead(dh, &ent, priv->configDir)) > 0) {
         struct stat st;
diff --git a/tests/virschematest.c b/tests/virschematest.c
index 14a9e20..c372c43 100644
--- a/tests/virschematest.c
+++ b/tests/virschematest.c
@@ -80,12 +80,8 @@ testSchemaDir(const char *schema,
         .validator = validator,
     };
 
-    if (!(dir = opendir(dir_path))) {
-        virReportSystemError(errno,
-                             "Failed to opendir path '%s'",
-                             dir_path);
+    if (virDirOpen(&dir, dir_path) < 0)
         return -1;
-    }
 
     while ((rc = virDirRead(dir, &ent, dir_path)) > 0) {
         if (!virFileHasSuffix(ent->d_name, ".xml"))
diff --git a/tools/nss/libvirt_nss.c b/tools/nss/libvirt_nss.c
index d179514..724cb06 100644
--- a/tools/nss/libvirt_nss.c
+++ b/tools/nss/libvirt_nss.c
@@ -125,10 +125,8 @@ findLease(const char *name,
     }
 
 
-    if (!(dir = opendir(leaseDir))) {
-        ERROR("Failed to open dir '%s'", leaseDir);
+    if (virDirOpen(&dir, leaseDir) < 0)
         goto cleanup;
-    }
 
     if (!(leases_array = virJSONValueNewArray())) {
         ERROR("Failed to create json array");
-- 
2.7.3




More information about the libvir-list mailing list