changeset 9509:e61974ab3ed0 v7.4.2035

commit https://github.com/vim/vim/commit/da4127794aa333631bde879e73bcfce4aef42f85 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jul 14 20:37:07 2016 +0200 patch 7.4.2035 Problem: On Solaris with ZFS the ACL may get removed. Solution: Always restore the ACL for Solaris ZFS. (Danek Duvall)
author Christian Brabandt <cb@256bit.org>
date Thu, 14 Jul 2016 20:45:06 +0200
parents eab4723217e7
children e0f0aa1e3571
files src/fileio.c src/version.c
diffstat 2 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4709,9 +4709,17 @@ restore_backup:
     if (perm >= 0)		/* set perm. of new file same as old file */
 	(void)mch_setperm(wfname, perm);
 #ifdef HAVE_ACL
-    /* Probably need to set the ACL before changing the user (can't set the
-     * ACL on a file the user doesn't own). */
+    /*
+     * Probably need to set the ACL before changing the user (can't set the
+     * ACL on a file the user doesn't own).
+     * On Solaris, with ZFS and the aclmode property set to "discard" (the
+     * default), chmod() discards all part of a file's ACL that don't represent
+     * the mode of the file.  It's non-trivial for us to discover whether we're
+     * in that situation, so we simply always re-set the ACL.
+     */
+# ifndef HAVE_SOLARIS_ZFS_ACL
     if (!backup_copy)
+# endif
 	mch_set_acl(wfname, acl);
 #endif
 #ifdef FEAT_CRYPT
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2035,
+/**/
     2034,
 /**/
     2033,