diff options
Diffstat (limited to 'libglusterfs/src')
-rw-r--r-- | libglusterfs/src/common-utils.c | 30 | ||||
-rw-r--r-- | libglusterfs/src/common-utils.h | 3 |
2 files changed, 33 insertions, 0 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 75b97722513..19afeee3d1f 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -44,6 +44,7 @@ #include "stack.h" #include "globals.h" #include "lkowner.h" +#include "syscall.h" #ifndef AI_ADDRCONFIG #define AI_ADDRCONFIG 0 @@ -113,6 +114,35 @@ out: } int +gf_lstat_dir (const char *path, struct stat *stbuf_in) +{ + int ret = -1; + struct stat stbuf = {0,}; + + if (path == NULL) { + errno = EINVAL; + goto out; + } + + ret = sys_lstat (path, &stbuf); + if (ret) + goto out; + + if (!S_ISDIR (stbuf.st_mode)) { + errno = ENOTDIR; + ret = -1; + goto out; + } + ret = 0; + +out: + if (!ret && stbuf_in) + *stbuf_in = stbuf; + + return ret; +} + +int log_base2 (unsigned long x) { int val = 0; diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index bbafd1fb039..d04df579b53 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -483,6 +483,9 @@ mkdir_p (char *path, mode_t mode, gf_boolean_t allow_symlinks); * nr */ +int +gf_lstat_dir (const char *path, struct stat *stbuf_in); + int32_t gf_roundup_power_of_two (int32_t nr); /* |