Patch 7.4.1116
Problem:    delete(x, 'rf') does not delete files starting with a dot.
Solution:   Also delete files starting with a dot.
Files:      src/misc1.c, src/fileio.c, src/vim.h


*** ../vim-7.4.1115/src/misc1.c 2016-01-15 15:16:58.336609048 +0100
--- src/misc1.c 2016-01-17 16:45:32.955129298 +0100
***************
*** 10013,10019 ****
        if (p[0] == '*' && p[1] == '*')
            starstar = TRUE;
  
!     starts_with_dot = (*s == '.');
      pat = file_pat_to_reg_pat(s, e, NULL, FALSE);
      if (pat == NULL)
      {
--- 10013,10019 ----
        if (p[0] == '*' && p[1] == '*')
            starstar = TRUE;
  
!     starts_with_dot = *s == '.' || (flags & EW_DODOT);
      pat = file_pat_to_reg_pat(s, e, NULL, FALSE);
      if (pat == NULL)
      {
***************
*** 10096,10102 ****
  #endif
        /* Ignore entries starting with a dot, unless when asked for.  Accept
         * all entries found with "matchname". */
!       if ((p[0] != '.' || starts_with_dot)
                && (matchname == NULL
                  || (regmatch.regprog != NULL
                                     && vim_regexec(&regmatch, p, (colnr_T)0))
--- 10096,10103 ----
  #endif
        /* Ignore entries starting with a dot, unless when asked for.  Accept
         * all entries found with "matchname". */
!       if ((p[0] != '.' || (starts_with_dot
!                       && p[1] != NUL && (p[1] != '.' || p[2] != NUL)))
                && (matchname == NULL
                  || (regmatch.regprog != NULL
                                     && vim_regexec(&regmatch, p, (colnr_T)0))
***************
*** 10325,10331 ****
            starstar = TRUE;
  
      /* convert the file pattern to a regexp pattern */
!     starts_with_dot = (*s == '.');
      pat = file_pat_to_reg_pat(s, e, NULL, FALSE);
      if (pat == NULL)
      {
--- 10326,10332 ----
            starstar = TRUE;
  
      /* convert the file pattern to a regexp pattern */
!     starts_with_dot = *s == '.' || (flags & EW_DODOT);
      pat = file_pat_to_reg_pat(s, e, NULL, FALSE);
      if (pat == NULL)
      {
***************
*** 10374,10380 ****
            dp = readdir(dirp);
            if (dp == NULL)
                break;
!           if ((dp->d_name[0] != '.' || starts_with_dot)
                 && ((regmatch.regprog != NULL && vim_regexec(&regmatch,
                                             (char_u *)dp->d_name, (colnr_T)0))
                   || ((flags & EW_NOTWILD)
--- 10375,10383 ----
            dp = readdir(dirp);
            if (dp == NULL)
                break;
!           if ((dp->d_name[0] != '.' || (starts_with_dot
!                       && dp->d_name[1] != NUL
!                       && (dp->d_name[1] != '.' || dp->d_name[2] != NUL)))
                 && ((regmatch.regprog != NULL && vim_regexec(&regmatch,
                                             (char_u *)dp->d_name, (colnr_T)0))
                   || ((flags & EW_NOTWILD)
*** ../vim-7.4.1115/src/fileio.c        2016-01-17 15:56:29.362605265 +0100
--- src/fileio.c        2016-01-17 16:29:41.753299747 +0100
***************
*** 7313,7319 ****
        if (exp == NULL)
            return -1;
        if (gen_expand_wildcards(1, &exp, &file_count, &files,
!                                             EW_DIR|EW_FILE|EW_SILENT) == 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) == OK)
        {
            for (i = 0; i < file_count; ++i)
                if (delete_recursive(files[i]) != 0)
*** ../vim-7.4.1115/src/vim.h   2016-01-15 21:23:15.658977959 +0100
--- src/vim.h   2016-01-17 16:28:05.126332735 +0100
***************
*** 835,840 ****
--- 835,841 ----
  #define EW_ALLLINKS   0x1000  /* also links not pointing to existing file */
  #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 */
  
  /* Flags for find_file_*() functions. */
  #define FINDFILE_FILE 0       /* only files */
*** ../vim-7.4.1115/src/version.c       2016-01-17 16:15:27.806426027 +0100
--- src/version.c       2016-01-17 16:29:53.569173425 +0100
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     1116,
  /**/

-- 
You can test a person's importance in the organization by asking how much RAM
his computer has.  Anybody who knows the answer to that question is not a
decision-maker.
                                (Scott Adams - The Dilbert principle)

 /// Bram Moolenaar -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui