summaryrefslogtreecommitdiffstats
path: root/lib/util/util.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-07-27 19:08:52 +0200
committerJeremy Allison <jra@samba.org>2014-07-28 22:04:13 +0200
commit2b9c35da12f6892e22253e8beb6a7ec95ba17c58 (patch)
tree148625aee1158f5399a97826e490f46a33a1d9ab /lib/util/util.c
parentf4810097cb8c7ae76a3ce8af8d06cebe9734789f (diff)
downloadsamba-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.c47
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;