diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/os/fs.c | 17 | ||||
| -rw-r--r-- | src/nvim/tempfile.c | 2 | ||||
| -rw-r--r-- | src/nvim/version.c | 2 | 
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,  | 
