aboutsummaryrefslogtreecommitdiff
path: root/src/os
diff options
context:
space:
mode:
Diffstat (limited to 'src/os')
-rw-r--r--src/os/fs.c19
-rw-r--r--src/os/os.h1
2 files changed, 20 insertions, 0 deletions
diff --git a/src/os/fs.c b/src/os/fs.c
index 0b83ca319e..bf9de63355 100644
--- a/src/os/fs.c
+++ b/src/os/fs.c
@@ -160,3 +160,22 @@ int mch_is_full_name(char_u *fname)
return *fname == '/' || *fname == '~';
}
+/*
+ * return TRUE if "name" is a directory
+ * return FALSE if "name" is not a directory
+ * return FALSE for error
+ */
+int mch_isdir(char_u *name)
+{
+ uv_fs_t request;
+ if (0 != uv_fs_stat(uv_default_loop(), &request, (const char*) name, NULL)) {
+ return FALSE;
+ }
+
+ if (!S_ISDIR(request.statbuf.st_mode)) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
diff --git a/src/os/os.h b/src/os/os.h
index 1ef311b32c..8d3caa849f 100644
--- a/src/os/os.h
+++ b/src/os/os.h
@@ -8,5 +8,6 @@ int mch_chdir(char *path);
int mch_dirname(char_u *buf, int len);
int mch_full_name (char_u *fname, char_u *buf, int len, int force);
int mch_is_full_name (char_u *fname);
+int mch_isdir(char_u *name);
#endif