diff options
author | Volker Lendecke <vl@samba.org> | 2014-07-27 19:08:52 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2014-07-28 22:04:13 +0200 |
commit | 2b9c35da12f6892e22253e8beb6a7ec95ba17c58 (patch) | |
tree | 148625aee1158f5399a97826e490f46a33a1d9ab /lib/util/util.c | |
parent | f4810097cb8c7ae76a3ce8af8d06cebe9734789f (diff) | |
download | samba-2b9c35da12f6892e22253e8beb6a7ec95ba17c58.tar.gz samba-2b9c35da12f6892e22253e8beb6a7ec95ba17c58.tar.xz samba-2b9c35da12f6892e22253e8beb6a7ec95ba17c58.zip |
lib: Simplify directory_create_or_exist with an early return
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'lib/util/util.c')
-rw-r--r-- | lib/util/util.c | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/lib/util/util.c b/lib/util/util.c index b6f60c4754..d0449e3ae8 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; |