changeset 7194:272f04b41f51 v7.4.906

commit https://github.com/vim/vim/commit/8a52ba791893fd55c5bdf98825c5b3e8892eaa62 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Nov 2 14:45:56 2015 +0100 patch 7.4.906 Problem: On MS-Windows the viminfo file is (always) given the hidden attribute. (raulnac) Solution: Check the hidden attribute in a different way. (Ken Takata)
author Christian Brabandt <cb@256bit.org>
date Mon, 02 Nov 2015 15:00:04 +0100
parents 556ead123953
children 6e4b63231a86
files src/ex_cmds.c src/os_win32.c src/version.c
diffstat 3 files changed, 19 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1795,7 +1795,7 @@ write_viminfo(file, forceit)
     struct stat	st_old;		/* mch_stat() of existing viminfo file */
 #endif
 #ifdef WIN3264
-    long	perm = -1;
+    int		hidden = FALSE;
 #endif
 
     if (no_viminfo())
@@ -1858,7 +1858,7 @@ write_viminfo(file, forceit)
 #endif
 #ifdef WIN3264
 	/* Get the file attributes of the existing viminfo file. */
-	perm = mch_getperm(fname);
+	hidden = mch_ishidden(fname);
 #endif
 
 	/*
@@ -2033,7 +2033,7 @@ write_viminfo(file, forceit)
 
 #ifdef WIN3264
 	/* If the viminfo file was hidden then also hide the new file. */
-	if (perm > 0 && (perm & FILE_ATTRIBUTE_HIDDEN))
+	if (hidden)
 	    mch_hide(fname);
 #endif
     }
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -3098,6 +3098,20 @@ mch_hide(char_u *name)
 }
 
 /*
+ * Return TRUE if file "name" exists and is hidden.
+ */
+    int
+mch_ishidden(char_u *name)
+{
+    int f = win32_getattrs(name);
+
+    if (f == -1)
+	return FALSE;		    /* file does not exist at all */
+
+    return (f & FILE_ATTRIBUTE_HIDDEN) != 0;
+}
+
+/*
  * return TRUE if "name" is a directory
  * return FALSE if "name" is not a directory or upon error
  */
--- 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 */
 /**/
+    906,
+/**/
     905,
 /**/
     904,