diff src/fileio.c @ 7629:befbed72da87 v7.4.1114

commit https://github.com/vim/vim/commit/43a34f9f74fdce462fa250baab620264c28b6165 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 17 15:56:34 2016 +0100 patch 7.4.1114 Problem: delete() does not work well with symbolic links. Solution: Recognize symbolik links.
author Christian Brabandt <cb@256bit.org>
date Sun, 17 Jan 2016 16:00:05 +0100
parents 228ff048db20
children 2a280b8e7040
line wrap: on
line diff
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -7294,7 +7294,19 @@ delete_recursive(char_u *name)
     int		i;
     char_u	*exp;
 
-    if (mch_isdir(name))
+    /* A symbolic link to a directory itself is deleted, not the directory it
+     * points to. */
+    if (
+# if defined(WIN32)
+	 mch_isdir(name) && !mch_is_symbolic_link(name)
+# else
+#  ifdef UNIX
+	 mch_isrealdir(name)
+#  else
+	 mch_isdir(name)
+#  endif
+# endif
+	    )
     {
 	vim_snprintf((char *)NameBuff, MAXPATHL, "%s/*", name);
 	exp = vim_strsave(NameBuff);