[libvirt] [PATCH] Fix return value semantic of virFileMakePath

Matthias Bolte matthias.bolte at googlemail.com
Tue Jul 5 21:04:02 UTC 2011


Some callers expected virFileMakePath to set errno, some expected
it to return an errno value. Unify this to return 0 on success and
-1 on error. Set errno to report detailed error information.

Also Make virFileMakePath report an error when stat fails with an
errno different from ENOENT.
---
 src/conf/domain_conf.c           |    2 +-
 src/conf/network_conf.c          |    5 +--
 src/conf/nwfilter_conf.c         |   11 +++-----
 src/conf/storage_conf.c          |    6 +---
 src/libxl/libxl_driver.c         |   14 ++++-----
 src/lxc/lxc_container.c          |   18 ++++++------
 src/lxc/lxc_controller.c         |    2 +-
 src/lxc/lxc_driver.c             |   10 +++----
 src/network/bridge_driver.c      |   25 ++++++++---------
 src/qemu/qemu_driver.c           |   28 ++++++++-----------
 src/qemu/qemu_process.c          |    2 +-
 src/storage/storage_backend_fs.c |    4 +-
 src/storage/storage_driver.c     |    6 +---
 src/uml/uml_driver.c             |   10 +++----
 src/util/dnsmasq.c               |    5 +--
 src/util/util.c                  |   56 ++++++++++++++++++++++++-------------
 16 files changed, 100 insertions(+), 104 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 109a947..64c5636 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -9986,7 +9986,7 @@ int virDomainSaveXML(const char *configDir,
     if ((configFile = virDomainConfigFile(configDir, def->name)) == NULL)
         goto cleanup;
 
-    if (virFileMakePath(configDir)) {
+    if (virFileMakePath(configDir) < 0) {
         virReportSystemError(errno,
                              _("cannot create config directory '%s'"),
                              configDir);
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index 45ddee2..ae479bf 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -1114,13 +1114,12 @@ int virNetworkSaveXML(const char *configDir,
     char *configFile = NULL;
     int fd = -1, ret = -1;
     size_t towrite;
-    int err;
 
     if ((configFile = virNetworkConfigFile(configDir, def->name)) == NULL)
         goto cleanup;
 
-    if ((err = virFileMakePath(configDir))) {
-        virReportSystemError(err,
+    if (virFileMakePath(configDir) < 0) {
+        virReportSystemError(errno,
                              _("cannot create config directory '%s'"),
                              configDir);
         goto cleanup;
diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c
index 127d4be..036c61a 100644
--- a/src/conf/nwfilter_conf.c
+++ b/src/conf/nwfilter_conf.c
@@ -2184,13 +2184,12 @@ int virNWFilterSaveXML(const char *configDir,
     char *configFile = NULL;
     int fd = -1, ret = -1;
     size_t towrite;
-    int err;
 
     if ((configFile = virNWFilterConfigFile(configDir, def->name)) == NULL)
         goto cleanup;
 
-    if ((err = virFileMakePath(configDir))) {
-        virReportSystemError(err,
+    if (virFileMakePath(configDir) < 0) {
+        virReportSystemError(errno,
                              _("cannot create config directory '%s'"),
                              configDir);
         goto cleanup;
@@ -2574,10 +2573,8 @@ virNWFilterObjSaveDef(virNWFilterDriverStatePtr driver,
     ssize_t towrite;
 
     if (!nwfilter->configFile) {
-        int err;
-
-        if ((err = virFileMakePath(driver->configDir))) {
-            virReportSystemError(err,
+        if (virFileMakePath(driver->configDir) < 0) {
+            virReportSystemError(errno,
                                  _("cannot create config directory %s"),
                                  driver->configDir);
             return -1;
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index ca86f19..f6f8be1 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -1512,10 +1512,8 @@ virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
     ssize_t towrite;
 
     if (!pool->configFile) {
-        int err;
-
-        if ((err = virFileMakePath(driver->configDir))) {
-            virReportSystemError(err,
+        if (virFileMakePath(driver->configDir) < 0) {
+            virReportSystemError(errno,
                                  _("cannot create config directory %s"),
                                  driver->configDir);
             return -1;
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 7fd257d..ade69d8 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -914,25 +914,25 @@ libxlStartup(int privileged) {
                     "%s", LIBXL_SAVE_DIR) == -1)
         goto out_of_memory;
 
-    if (virFileMakePath(libxl_driver->logDir) != 0) {
+    if (virFileMakePath(libxl_driver->logDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create log dir '%s': %s"),
                   libxl_driver->logDir, virStrerror(errno, ebuf, sizeof ebuf));
         goto error;
     }
-    if (virFileMakePath(libxl_driver->stateDir) != 0) {
+    if (virFileMakePath(libxl_driver->stateDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create state dir '%s': %s"),
                   libxl_driver->stateDir, virStrerror(errno, ebuf, sizeof ebuf));
         goto error;
     }
-    if (virFileMakePath(libxl_driver->libDir) != 0) {
+    if (virFileMakePath(libxl_driver->libDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create lib dir '%s': %s"),
                   libxl_driver->libDir, virStrerror(errno, ebuf, sizeof ebuf));
         goto error;
     }
-    if (virFileMakePath(libxl_driver->saveDir) != 0) {
+    if (virFileMakePath(libxl_driver->saveDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create save dir '%s': %s"),
                   libxl_driver->saveDir, virStrerror(errno, ebuf, sizeof ebuf));
@@ -3389,10 +3389,8 @@ libxlDomainSetAutostart(virDomainPtr dom, int autostart)
             goto cleanup;
 
         if (autostart) {
-            int err;
-
-            if ((err = virFileMakePath(driver->autostartDir))) {
-                virReportSystemError(err,
+            if (virFileMakePath(driver->autostartDir) < 0) {
+                virReportSystemError(errno,
                                      _("cannot create autostart directory %s"),
                                      driver->autostartDir);
                 goto cleanup;
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 7924858..ef8469c 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -308,7 +308,7 @@ static int lxcContainerChildMountSort(const void *a, const void *b)
 
 static int lxcContainerPivotRoot(virDomainFSDefPtr root)
 {
-    int rc, ret;
+    int ret;
     char *oldroot = NULL, *newroot = NULL;
 
     ret = -1;
@@ -325,8 +325,8 @@ static int lxcContainerPivotRoot(virDomainFSDefPtr root)
         goto err;
     }
 
-    if ((rc = virFileMakePath(oldroot)) != 0) {
-        virReportSystemError(rc,
+    if (virFileMakePath(oldroot) < 0) {
+        virReportSystemError(errno,
                              _("Failed to create %s"),
                              oldroot);
         goto err;
@@ -347,8 +347,8 @@ static int lxcContainerPivotRoot(virDomainFSDefPtr root)
         goto err;
     }
 
-    if ((rc = virFileMakePath(newroot)) != 0) {
-        virReportSystemError(rc,
+    if (virFileMakePath(newroot) < 0) {
+        virReportSystemError(errno,
                              _("Failed to create %s"),
                              newroot);
         goto err;
@@ -415,7 +415,7 @@ static int lxcContainerMountBasicFS(virDomainFSDefPtr root)
     }
 
     for (i = 0 ; i < ARRAY_CARDINALITY(mnts) ; i++) {
-        if (virFileMakePath(mnts[i].dst) != 0) {
+        if (virFileMakePath(mnts[i].dst) < 0) {
             virReportSystemError(errno,
                                  _("Failed to mkdir %s"),
                                  mnts[i].src);
@@ -429,8 +429,8 @@ static int lxcContainerMountBasicFS(virDomainFSDefPtr root)
         }
     }
 
-    if ((rc = virFileMakePath("/dev/pts") != 0)) {
-        virReportSystemError(rc, "%s",
+    if (virFileMakePath("/dev/pts") < 0) {
+        virReportSystemError(errno, "%s",
                              _("Cannot create /dev/pts"));
         goto cleanup;
     }
@@ -531,7 +531,7 @@ static int lxcContainerMountNewFS(virDomainDefPtr vmDef)
             return -1;
         }
 
-        if (virFileMakePath(vmDef->fss[i]->dst) != 0) {
+        if (virFileMakePath(vmDef->fss[i]->dst) < 0) {
             virReportSystemError(errno,
                                  _("Failed to create %s"),
                                  vmDef->fss[i]->dst);
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index 7d60090..31c7d4f 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -690,7 +690,7 @@ lxcControllerRun(virDomainDefPtr def,
             goto cleanup;
         }
 
-        if (virFileMakePath(devpts) != 0) {
+        if (virFileMakePath(devpts) < 0) {
             virReportSystemError(errno,
                                  _("Failed to make path %s"),
                                  devpts);
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index 7220a9b..ffcfe4d 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -1502,8 +1502,8 @@ static int lxcVmStart(virConnectPtr conn,
         return -1;
     }
 
-    if ((r = virFileMakePath(driver->logDir)) != 0) {
-        virReportSystemError(r,
+    if (virFileMakePath(driver->logDir) < 0) {
+        virReportSystemError(errno,
                              _("Cannot create log directory '%s'"),
                              driver->logDir);
         return -1;
@@ -2539,10 +2539,8 @@ static int lxcDomainSetAutostart(virDomainPtr dom,
         goto cleanup;
 
     if (autostart) {
-        int err;
-
-        if ((err = virFileMakePath(driver->autostartDir))) {
-            virReportSystemError(err,
+        if (virFileMakePath(driver->autostartDir) < 0) {
+            virReportSystemError(errno,
                                  _("Cannot create autostart directory %s"),
                                  driver->autostartDir);
             goto cleanup;
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 660dd65..170bf98 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -692,17 +692,16 @@ networkStartDhcpDaemon(virNetworkObjPtr network)
     virCommandPtr cmd = NULL;
     char *pidfile = NULL;
     int ret = -1;
-    int err;
     dnsmasqContext *dctx = NULL;
 
-    if ((err = virFileMakePath(NETWORK_PID_DIR)) != 0) {
-        virReportSystemError(err,
+    if (virFileMakePath(NETWORK_PID_DIR) < 0) {
+        virReportSystemError(errno,
                              _("cannot create directory %s"),
                              NETWORK_PID_DIR);
         goto cleanup;
     }
-    if ((err = virFileMakePath(NETWORK_STATE_DIR)) != 0) {
-        virReportSystemError(err,
+    if (virFileMakePath(NETWORK_STATE_DIR) < 0) {
+        virReportSystemError(errno,
                              _("cannot create directory %s"),
                              NETWORK_STATE_DIR);
         goto cleanup;
@@ -713,8 +712,8 @@ networkStartDhcpDaemon(virNetworkObjPtr network)
         goto cleanup;
     }
 
-    if ((err = virFileMakePath(DNSMASQ_STATE_DIR)) != 0) {
-        virReportSystemError(err,
+    if (virFileMakePath(DNSMASQ_STATE_DIR) < 0) {
+        virReportSystemError(errno,
                              _("cannot create directory %s"),
                              DNSMASQ_STATE_DIR);
         goto cleanup;
@@ -777,14 +776,14 @@ networkStartRadvd(virNetworkObjPtr network)
         goto cleanup;
     }
 
-    if ((err = virFileMakePath(NETWORK_PID_DIR)) != 0) {
-        virReportSystemError(err,
+    if (virFileMakePath(NETWORK_PID_DIR) < 0) {
+        virReportSystemError(errno,
                              _("cannot create directory %s"),
                              NETWORK_PID_DIR);
         goto cleanup;
     }
-    if ((err = virFileMakePath(RADVD_STATE_DIR)) != 0) {
-        virReportSystemError(err,
+    if (virFileMakePath(RADVD_STATE_DIR) < 0) {
+        virReportSystemError(errno,
                              _("cannot create directory %s"),
                              RADVD_STATE_DIR);
         goto cleanup;
@@ -2500,7 +2499,7 @@ static int networkSetAutostart(virNetworkPtr net,
     struct network_driver *driver = net->conn->networkPrivateData;
     virNetworkObjPtr network;
     char *configFile = NULL, *autostartLink = NULL;
-    int ret = -1;
+    int ret = -1, err;
 
     networkDriverLock(driver);
     network = virNetworkFindByUUID(&driver->networks, net->uuid);
@@ -2526,7 +2525,7 @@ static int networkSetAutostart(virNetworkPtr net,
             goto cleanup;
 
         if (autostart) {
-            if (virFileMakePath(driver->networkAutostartDir)) {
+            if (virFileMakePath(driver->networkAutostartDir) < 0) {
                 virReportSystemError(errno,
                                      _("cannot create autostart directory '%s'"),
                                      driver->networkAutostartDir);
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index aab3ab9..0f645fa 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -469,37 +469,37 @@ qemudStartup(int privileged) {
             goto out_of_memory;
     }
 
-    if (virFileMakePath(qemu_driver->stateDir) != 0) {
+    if (virFileMakePath(qemu_driver->stateDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create state dir '%s': %s"),
                   qemu_driver->stateDir, virStrerror(errno, ebuf, sizeof ebuf));
         goto error;
     }
-    if (virFileMakePath(qemu_driver->libDir) != 0) {
+    if (virFileMakePath(qemu_driver->libDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create lib dir '%s': %s"),
                   qemu_driver->libDir, virStrerror(errno, ebuf, sizeof ebuf));
         goto error;
     }
-    if (virFileMakePath(qemu_driver->cacheDir) != 0) {
+    if (virFileMakePath(qemu_driver->cacheDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create cache dir '%s': %s"),
                   qemu_driver->cacheDir, virStrerror(errno, ebuf, sizeof ebuf));
         goto error;
     }
-    if (virFileMakePath(qemu_driver->saveDir) != 0) {
+    if (virFileMakePath(qemu_driver->saveDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create save dir '%s': %s"),
                   qemu_driver->saveDir, virStrerror(errno, ebuf, sizeof ebuf));
         goto error;
     }
-    if (virFileMakePath(qemu_driver->snapshotDir) != 0) {
+    if (virFileMakePath(qemu_driver->snapshotDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create save dir '%s': %s"),
                   qemu_driver->snapshotDir, virStrerror(errno, ebuf, sizeof ebuf));
         goto error;
     }
-    if (virFileMakePath(qemu_driver->autoDumpPath) != 0) {
+    if (virFileMakePath(qemu_driver->autoDumpPath) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create dump dir '%s': %s"),
                   qemu_driver->autoDumpPath, virStrerror(errno, ebuf, sizeof ebuf));
@@ -586,8 +586,8 @@ qemudStartup(int privileged) {
         if (virAsprintf(&mempath, "%s/libvirt/qemu", qemu_driver->hugetlbfs_mount) < 0)
             goto out_of_memory;
 
-        if ((rc = virFileMakePath(mempath)) != 0) {
-            virReportSystemError(rc,
+        if (virFileMakePath(mempath) < 0) {
+            virReportSystemError(errno,
                                  _("unable to create hugepage path %s"), mempath);
             VIR_FREE(mempath);
             goto error;
@@ -5017,10 +5017,8 @@ static int qemudDomainSetAutostart(virDomainPtr dom,
             goto cleanup;
 
         if (autostart) {
-            int err;
-
-            if ((err = virFileMakePath(driver->autostartDir))) {
-                virReportSystemError(err,
+            if (virFileMakePath(driver->autostartDir) < 0) {
+                virReportSystemError(errno,
                                      _("cannot create autostart directory %s"),
                                      driver->autostartDir);
                 goto cleanup;
@@ -7483,7 +7481,6 @@ static int qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
     int ret = -1;
     char *snapDir = NULL;
     char *snapFile = NULL;
-    int err;
     char uuidstr[VIR_UUID_STRING_BUFLEN];
 
     virUUIDFormat(vm->def->uuid, uuidstr);
@@ -7497,9 +7494,8 @@ static int qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
         virReportOOMError();
         goto cleanup;
     }
-    err = virFileMakePath(snapDir);
-    if (err != 0) {
-        virReportSystemError(err, _("cannot create snapshot directory '%s'"),
+    if (virFileMakePath(snapDir) < 0) {
+        virReportSystemError(errno, _("cannot create snapshot directory '%s'"),
                              snapDir);
         goto cleanup;
     }
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index f2c439b..c9145cb 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -2448,7 +2448,7 @@ int qemuProcessStart(virConnectPtr conn,
         }
     }
 
-    if (virFileMakePath(driver->logDir) != 0) {
+    if (virFileMakePath(driver->logDir) < 0) {
         virReportSystemError(errno,
                              _("cannot create log directory %s"),
                              driver->logDir);
diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index f2912f0..d87401f 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -559,8 +559,8 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
         /* assure all directories in the path prior to the final dir
          * exist, with default uid/gid/mode. */
         *p = '\0';
-        if ((err = virFileMakePath(parent)) != 0) {
-            virReportSystemError(err, _("cannot create path '%s'"),
+        if (virFileMakePath(parent) < 0) {
+            virReportSystemError(errno, _("cannot create path '%s'"),
                                  parent);
             goto error;
         }
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index f9652f8..a990118 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -1019,10 +1019,8 @@ storagePoolSetAutostart(virStoragePoolPtr obj,
 
     if (pool->autostart != autostart) {
         if (autostart) {
-            int err;
-
-            if ((err = virFileMakePath(driver->autostartDir))) {
-                virReportSystemError(err,
+            if (virFileMakePath(driver->autostartDir) < 0) {
+                virReportSystemError(errno,
                                      _("cannot create autostart directory %s"),
                                      driver->autostartDir);
                 goto cleanup;
diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c
index a71ea21..f0f053b 100644
--- a/src/uml/uml_driver.c
+++ b/src/uml/uml_driver.c
@@ -420,7 +420,7 @@ umlStartup(int privileged)
         goto error;
     }
 
-    if (virFileMakePath(uml_driver->monitorDir) != 0) {
+    if (virFileMakePath(uml_driver->monitorDir) < 0) {
         char ebuf[1024];
         VIR_ERROR(_("Failed to create monitor directory %s: %s"),
                uml_driver->monitorDir, virStrerror(errno, ebuf, sizeof ebuf));
@@ -839,7 +839,7 @@ static int umlStartVMDaemon(virConnectPtr conn,
         return -1;
     }
 
-    if (virFileMakePath(driver->logDir) != 0) {
+    if (virFileMakePath(driver->logDir) < 0) {
         virReportSystemError(errno,
                              _("cannot create log directory %s"),
                              driver->logDir);
@@ -2004,10 +2004,8 @@ static int umlDomainSetAutostart(virDomainPtr dom,
             goto cleanup;
 
         if (autostart) {
-            int err;
-
-            if ((err = virFileMakePath(driver->autostartDir))) {
-                virReportSystemError(err,
+            if (virFileMakePath(driver->autostartDir) < 0) {
+                virReportSystemError(errno,
                                      _("cannot create autostart directory %s"),
                                      driver->autostartDir);
                 goto cleanup;
diff --git a/src/util/dnsmasq.c b/src/util/dnsmasq.c
index aadca10..55db96b 100644
--- a/src/util/dnsmasq.c
+++ b/src/util/dnsmasq.c
@@ -523,11 +523,10 @@ dnsmasqAddHost(dnsmasqContext *ctx,
 int
 dnsmasqSave(const dnsmasqContext *ctx)
 {
-    int err;
     int ret = 0;
 
-    if ((err = virFileMakePath(ctx->config_dir))) {
-        virReportSystemError(err, _("cannot create config directory '%s'"),
+    if (virFileMakePath(ctx->config_dir) < 0) {
+        virReportSystemError(errno, _("cannot create config directory '%s'"),
                              ctx->config_dir);
         return -1;
     }
diff --git a/src/util/util.c b/src/util/util.c
index 13973c3..482ca6b 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -1010,66 +1010,80 @@ int virDirCreate(const char *path ATTRIBUTE_UNUSED,
 }
 #endif /* WIN32 */
 
-static int virFileMakePathHelper(char *path) {
+static int virFileMakePathHelper(char *path)
+{
     struct stat st;
     char *p = NULL;
-    int err;
 
     if (stat(path, &st) >= 0)
         return 0;
+    else if (errno != ENOENT)
+        return -1;
 
-    if ((p = strrchr(path, '/')) == NULL)
-        return EINVAL;
+    if ((p = strrchr(path, '/')) == NULL) {
+        errno = EINVAL;
+        return -1;
+    }
 
     if (p != path) {
         *p = '\0';
-        err = virFileMakePathHelper(path);
+
+        if (virFileMakePathHelper(path) < 0)
+            return -1;
+
         *p = '/';
-        if (err != 0)
-            return err;
     }
 
-    if (mkdir(path, 0777) < 0 && errno != EEXIST) {
-        return errno;
-    }
+    if (mkdir(path, 0777) < 0 && errno != EEXIST)
+        return -1;
+
     return 0;
 }
 
+/**
+ * Creates the given path with mode 0777 if it's not already existing
+ * completely.
+ *
+ * Returns 0 on success, or -1 if an error occurred (in which case, errno
+ * is set appropriately).
+ */
 int virFileMakePath(const char *path)
 {
+    int ret = -1;
     struct stat st;
     char *parent = NULL;
     char *p;
-    int err = 0;
 
     if (stat(path, &st) >= 0)
+        return 0;
+    else if (errno != ENOENT)
         goto cleanup;
 
     if ((parent = strdup(path)) == NULL) {
-        err = ENOMEM;
+        errno = ENOMEM;
         goto cleanup;
     }
 
     if ((p = strrchr(parent, '/')) == NULL) {
-        err = EINVAL;
+        errno = EINVAL;
         goto cleanup;
     }
 
     if (p != parent) {
         *p = '\0';
-        if ((err = virFileMakePathHelper(parent)) != 0) {
+
+        if (virFileMakePathHelper(parent) < 0)
             goto cleanup;
-        }
     }
 
-    if (mkdir(path, 0777) < 0 && errno != EEXIST) {
-        err = errno;
+    if (mkdir(path, 0777) < 0 && errno != EEXIST)
         goto cleanup;
-    }
+
+    ret = 0;
 
 cleanup:
     VIR_FREE(parent);
-    return err;
+    return ret;
 }
 
 /* Build up a fully qualified path for a config file to be
@@ -1182,8 +1196,10 @@ int virFileWritePid(const char *dir,
         goto cleanup;
     }
 
-    if ((rc = virFileMakePath(dir)))
+    if (virFileMakePath(dir) < 0) {
+        rc = errno;
         goto cleanup;
+    }
 
     if (!(pidfile = virFilePid(dir, name))) {
         rc = ENOMEM;
-- 
1.7.4.1




More information about the libvir-list mailing list