aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/path.c2
-rw-r--r--src/nvim/path.h1
-rw-r--r--src/nvim/tempfile.c4
-rw-r--r--src/nvim/version.c2
-rw-r--r--test/functional/legacy/delete_spec.lua2
5 files changed, 7 insertions, 4 deletions
diff --git a/src/nvim/path.c b/src/nvim/path.c
index a6e8aa6236..d3df9bc059 100644
--- a/src/nvim/path.c
+++ b/src/nvim/path.c
@@ -1223,7 +1223,7 @@ int gen_expand_wildcards(int num_pat, char_u **pat, int *num_file,
recursive = false;
- return (ga.ga_data != NULL) ? OK : FAIL;
+ return ((flags & EW_EMPTYOK) || ga.ga_data != NULL) ? OK : FAIL;
}
diff --git a/src/nvim/path.h b/src/nvim/path.h
index 9574d8131f..88e5935c24 100644
--- a/src/nvim/path.h
+++ b/src/nvim/path.h
@@ -22,6 +22,7 @@
* is used when executing commands and EW_SILENT for interactive expanding. */
#define EW_ALLLINKS 0x1000 // also links not pointing to existing file
#define EW_DODOT 0x4000 // also files starting with a dot
+#define EW_EMPTYOK 0x8000 // no matches is not an error
/// Return value for the comparison of two files. Also @see path_full_compare.
typedef enum file_comparison {
diff --git a/src/nvim/tempfile.c b/src/nvim/tempfile.c
index 3b1a2ffca6..c7881fd9a5 100644
--- a/src/nvim/tempfile.c
+++ b/src/nvim/tempfile.c
@@ -70,8 +70,8 @@ int delete_recursive(char_u *name)
int file_count;
char_u *exp = vim_strsave(NameBuff);
if (gen_expand_wildcards(1, &exp, &file_count, &files,
- EW_DIR | EW_FILE | EW_SILENT
- | EW_ALLLINKS | EW_DODOT) == OK) {
+ EW_DIR | EW_FILE | EW_SILENT | EW_ALLLINKS
+ | EW_DODOT | EW_EMPTYOK) == OK) {
for (int i = 0; i < file_count; i++) {
if (delete_recursive(files[i]) != 0) {
result = -1;
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 3276439c50..ca7438e708 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -244,7 +244,7 @@ static int included_patches[] = {
// 1123,
// 1122 NA
// 1121,
- // 1120,
+ 1120,
// 1119,
// 1118,
1117,
diff --git a/test/functional/legacy/delete_spec.lua b/test/functional/legacy/delete_spec.lua
index b524af3338..75c3fdf1a0 100644
--- a/test/functional/legacy/delete_spec.lua
+++ b/test/functional/legacy/delete_spec.lua
@@ -25,6 +25,7 @@ describe('Test for delete()', function()
it('recursive delete', function()
execute("call mkdir('Xdir1')")
execute("call mkdir('Xdir1/subdir')")
+ execute("call mkdir('Xdir1/empty')")
execute('split Xdir1/Xfile')
execute("call setline(1, ['a', 'b'])")
execute('w')
@@ -35,6 +36,7 @@ describe('Test for delete()', function()
eq(eval("['a', 'b']"), eval("readfile('Xdir1/Xfile')"))
eq(1, eval("isdirectory('Xdir1/subdir')"))
eq(eval("['a', 'b']"), eval("readfile('Xdir1/subdir/Xfile')"))
+ eq(1, eval("isdirectory('Xdir1/empty')"))
eq(0, eval("delete('Xdir1', 'rf')"))
eq(0, eval("isdirectory('Xdir1')"))
eq(-1, eval("delete('Xdir1', 'd')"))