aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/os/fs.c17
-rw-r--r--src/nvim/tempfile.c2
-rw-r--r--src/nvim/version.c2
3 files changed, 19 insertions, 2 deletions
diff --git a/src/nvim/os/fs.c b/src/nvim/os/fs.c
index 34d8fde4f1..bc2d37764d 100644
--- a/src/nvim/os/fs.c
+++ b/src/nvim/os/fs.c
@@ -59,6 +59,23 @@ int os_dirname(char_u *buf, size_t len)
return OK;
}
+/// Check if the given path is a directory and not a symlink to a directory.
+/// @return `true` if `name` is a directory and NOT a symlink to a directory.
+/// `false` if `name` is not a directory or if an error occurred.
+bool os_isrealdir(const char_u *name)
+ FUNC_ATTR_NONNULL_ALL
+{
+ uv_fs_t request;
+ if (uv_fs_lstat(&fs_loop, &request, (char *)name, NULL) != kLibuvSuccess) {
+ return false;
+ }
+ if (S_ISLNK(request.statbuf.st_mode)) {
+ return false;
+ } else {
+ return S_ISDIR(request.statbuf.st_mode);
+ }
+}
+
/// Check if the given path is a directory or not.
///
/// @return `true` if `fname` is a directory.
diff --git a/src/nvim/tempfile.c b/src/nvim/tempfile.c
index 882dbe32f2..5b6268168d 100644
--- a/src/nvim/tempfile.c
+++ b/src/nvim/tempfile.c
@@ -63,7 +63,7 @@ int delete_recursive(char_u *name)
{
int result = 0;
- if (os_isdir(name)) {
+ if (os_isrealdir(name)) {
snprintf((char *)NameBuff, MAXPATHL, "%s/*", name);
char_u **files;
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 2828442611..235d74de76 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -250,7 +250,7 @@ static int included_patches[] = {
// 1117,
// 1116,
// 1115 NA
- // 1114,
+ 1114,
1113,
1112,
// 1111,