From 8bb672e6a088eb77d98d182bd46551986b52eb49 Mon Sep 17 00:00:00 2001 From: Thomas Wienecke Date: Tue, 4 Mar 2014 20:50:48 +0100 Subject: Port mch_isdir to libuv. --- src/os/fs.c | 19 +++++++++++++++++++ src/os/os.h | 1 + 2 files changed, 20 insertions(+) (limited to 'src/os') 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 -- cgit