To: vim_dev@googlegroups.com Subject: Patch 7.4.1120 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1120 Problem: delete(x, 'rf') fails if a directory is empty. (Lcd) Solution: Ignore not finding matches in an empty directory. Files: src/fileio.c, src/misc1.c, src/vim.h, src/testdir/test_delete.vim *** ../vim-7.4.1119/src/fileio.c 2016-01-17 16:49:38.636505419 +0100 --- src/fileio.c 2016-01-17 18:17:08.028275767 +0100 *************** *** 7313,7319 **** 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) { for (i = 0; i < file_count; ++i) if (delete_recursive(files[i]) != 0) --- 7313,7319 ---- if (exp == NULL) return -1; if (gen_expand_wildcards(1, &exp, &file_count, &files, ! 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) *** ../vim-7.4.1119/src/misc1.c 2016-01-17 17:04:01.091290646 +0100 --- src/misc1.c 2016-01-17 18:16:55.824407289 +0100 *************** *** 11087,11093 **** recursive = FALSE; ! return (ga.ga_data != NULL) ? retval : FAIL; } # ifdef VIM_BACKTICK --- 11087,11093 ---- recursive = FALSE; ! return ((flags & EW_EMPTYOK) || ga.ga_data != NULL) ? retval : FAIL; } # ifdef VIM_BACKTICK *** ../vim-7.4.1119/src/vim.h 2016-01-17 16:49:38.640505376 +0100 --- src/vim.h 2016-01-17 18:15:49.209125263 +0100 *************** *** 836,841 **** --- 836,842 ---- #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 */ *** ../vim-7.4.1119/src/testdir/test_delete.vim 2016-01-17 15:56:29.366605222 +0100 --- src/testdir/test_delete.vim 2016-01-17 18:11:30.479914696 +0100 *************** *** 21,26 **** --- 21,27 ---- 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,35 **** --- 31,37 ---- 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')) *** ../vim-7.4.1119/src/version.c 2016-01-17 18:04:15.412608602 +0100 --- src/version.c 2016-01-17 18:10:16.176716045 +0100 *************** *** 743,744 **** --- 743,746 ---- { /* Add new patch number below this line */ + /**/ + 1120, /**/ -- The budget process was invented by an alien race of sadistic beings who resemble large cats. (Scott Adams - The Dilbert principle) /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///