From 2b9c35da12f6892e22253e8beb6a7ec95ba17c58 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 27 Jul 2014 19:08:52 +0200 Subject: [PATCH] lib: Simplify directory_create_or_exist with an early return Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- lib/util/util.c | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/lib/util/util.c b/lib/util/util.c index b6f60c4754c..d0449e3ae89 100644 --- a/lib/util/util.c +++ b/lib/util/util.c @@ -196,35 +196,36 @@ _PUBLIC_ bool directory_create_or_exist(const char *dname, { int ret; struct stat st; + mode_t old_umask; ret = lstat(dname, &st); - if (ret == -1) { - mode_t old_umask; + if (ret == 0) { + return true; + } - if (errno != ENOENT) { - DEBUG(0, ("lstat failed on directory %s: %s\n", - dname, strerror(errno))); - return false; - } + if (errno != ENOENT) { + DEBUG(0, ("lstat failed on directory %s: %s\n", + dname, strerror(errno))); + return false; + } - /* Create directory */ - old_umask = umask(0); - ret = mkdir(dname, dir_perms); - if (ret == -1 && errno != EEXIST) { - DEBUG(0, ("mkdir failed on directory " - "%s: %s\n", dname, - strerror(errno))); - umask(old_umask); - return false; - } + /* Create directory */ + old_umask = umask(0); + ret = mkdir(dname, dir_perms); + if (ret == -1 && errno != EEXIST) { + DEBUG(0, ("mkdir failed on directory " + "%s: %s\n", dname, + strerror(errno))); umask(old_umask); + return false; + } + umask(old_umask); - ret = lstat(dname, &st); - if (ret == -1) { - DEBUG(0, ("lstat failed on created directory %s: %s\n", - dname, strerror(errno))); - return false; - } + ret = lstat(dname, &st); + if (ret == -1) { + DEBUG(0, ("lstat failed on created directory %s: %s\n", + dname, strerror(errno))); + return false; } return true; -- 2.11.4.GIT