diff options
Diffstat (limited to 'libglusterfs')
| -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 75b977225..19afeee3d 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 bbafd1fb0..d04df579b 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);  /*  | 
