diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-01-17 18:23:58 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-01-17 18:23:58 +0100 |
commit | 336bd622c31e1805495c034e1a8cfadcc0bbabc7 (patch) | |
tree | cd49277ac430addcad75432e8d9a462cab82e0a4 | |
parent | 72defda84eb26be9e2ade56c7877b912f818026e (diff) | |
download | vim-git-7.4.1120.tar.gz |
patch 7.4.1120v7.4.1120
Problem: delete(x, 'rf') fails if a directory is empty. (Lcd)
Solution: Ignore not finding matches in an empty directory.
-rw-r--r-- | src/fileio.c | 2 | ||||
-rw-r--r-- | src/misc1.c | 2 | ||||
-rw-r--r-- | src/testdir/test_delete.vim | 2 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim.h | 1 |
5 files changed, 7 insertions, 2 deletions
diff --git a/src/fileio.c b/src/fileio.c index fdaad20bb..55337d682 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -7313,7 +7313,7 @@ delete_recursive(char_u *name) if (exp == NULL) return -1; 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 (i = 0; i < file_count; ++i) if (delete_recursive(files[i]) != 0) diff --git a/src/misc1.c b/src/misc1.c index fd63ec37f..a44e4d681 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -11087,7 +11087,7 @@ gen_expand_wildcards(num_pat, pat, num_file, file, flags) recursive = FALSE; - return (ga.ga_data != NULL) ? retval : FAIL; + return ((flags & EW_EMPTYOK) || ga.ga_data != NULL) ? retval : FAIL; } # ifdef VIM_BACKTICK diff --git a/src/testdir/test_delete.vim b/src/testdir/test_delete.vim index 13c87a152..3cf26234d 100644 --- a/src/testdir/test_delete.vim +++ b/src/testdir/test_delete.vim @@ -21,6 +21,7 @@ endfunc func Test_recursive_delete() call mkdir('Xdir1') call mkdir('Xdir1/subdir') + call mkdir('Xdir1/empty') split Xdir1/Xfile call setline(1, ['a', 'b']) w @@ -30,6 +31,7 @@ func Test_recursive_delete() call assert_equal(['a', 'b'], readfile('Xdir1/Xfile')) call assert_true(isdirectory('Xdir1/subdir')) call assert_equal(['a', 'b'], readfile('Xdir1/subdir/Xfile')) + call assert_true(isdirectory('Xdir1/empty')) call assert_equal(0, delete('Xdir1', 'rf')) call assert_false(isdirectory('Xdir1')) call assert_equal(-1, delete('Xdir1', 'd')) diff --git a/src/version.c b/src/version.c index f26828c85..ef98ee4b8 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1120, +/**/ 1119, /**/ 1118, @@ -836,6 +836,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname); #define EW_SHELLCMD 0x2000 /* called from expand_shellcmd(), don't check * if executable is in $PATH */ #define EW_DODOT 0x4000 /* also files starting with a dot */ +#define EW_EMPTYOK 0x8000 /* no matches is not an error */ /* Flags for find_file_*() functions. */ #define FINDFILE_FILE 0 /* only files */ |