To: vim_dev@googlegroups.com Subject: Patch 7.3.432 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.432 Problem: ACLs are not supported for ZFS or NFSv4 on Solaris. Solution: Add configure check and code. (Danek Duvall) Files: src/configure.in, src/auto/configure, src/config.h.in, src/os_unix.c *** ../vim-7.3.431/src/configure.in 2011-12-14 20:51:19.000000000 +0100 --- src/configure.in 2012-02-05 22:40:22.000000000 +0100 *************** *** 3106,3111 **** --- 3106,3112 ---- dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI dnl when -lacl works, also try to use -lattr (required for Debian). + dnl On Solaris, use the acl_get/set functions in libsec, if present. AC_MSG_CHECKING(--disable-acl argument) AC_ARG_ENABLE(acl, [ --disable-acl Don't check for ACL support.], *************** *** 3128,3133 **** --- 3129,3135 ---- AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL), AC_MSG_RESULT(no)) + AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)], AC_MSG_CHECKING(for Solaris ACL support) AC_TRY_LINK([ #ifdef HAVE_SYS_ACL_H *************** *** 3135,3141 **** #endif], [acl("foo", GETACLCNT, 0, NULL); ], AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL), ! AC_MSG_RESULT(no)) AC_MSG_CHECKING(for AIX ACL support) AC_TRY_LINK([ --- 3137,3143 ---- #endif], [acl("foo", GETACLCNT, 0, NULL); ], AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL), ! AC_MSG_RESULT(no))) AC_MSG_CHECKING(for AIX ACL support) AC_TRY_LINK([ *** ../vim-7.3.431/src/auto/configure 2011-12-14 20:51:19.000000000 +0100 --- src/auto/configure 2012-02-05 22:41:01.000000000 +0100 *************** *** 11328,11334 **** rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5 $as_echo_n "checking for Solaris ACL support... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ --- 11328,11374 ---- rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get in -lsec" >&5 ! $as_echo_n "checking for acl_get in -lsec... " >&6; } ! if test "${ac_cv_lib_sec_acl_get+set}" = set; then : ! $as_echo_n "(cached) " >&6 ! else ! ac_check_lib_save_LIBS=$LIBS ! LIBS="-lsec $LIBS" ! cat confdefs.h - <<_ACEOF >conftest.$ac_ext ! /* end confdefs.h. */ ! ! /* Override any GCC internal prototype to avoid an error. ! Use char because int might match the return type of a GCC ! builtin and then its argument prototype would still apply. */ ! #ifdef __cplusplus ! extern "C" ! #endif ! char acl_get (); ! int ! main () ! { ! return acl_get (); ! ; ! return 0; ! } ! _ACEOF ! if ac_fn_c_try_link "$LINENO"; then : ! ac_cv_lib_sec_acl_get=yes ! else ! ac_cv_lib_sec_acl_get=no ! fi ! rm -f core conftest.err conftest.$ac_objext \ ! conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_acl_get" >&5 ! $as_echo "$ac_cv_lib_sec_acl_get" >&6; } ! if test "x$ac_cv_lib_sec_acl_get" = x""yes; then : ! LIBS="$LIBS -lsec"; $as_echo "#define HAVE_SOLARIS_ZFS_ACL 1" >>confdefs.h ! ! else ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5 $as_echo_n "checking for Solaris ACL support... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ *************** *** 11355,11360 **** --- 11395,11402 ---- fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AIX ACL support" >&5 $as_echo_n "checking for AIX ACL support... " >&6; } *** ../vim-7.3.431/src/config.h.in 2011-09-02 12:27:20.000000000 +0200 --- src/config.h.in 2012-02-05 22:40:22.000000000 +0100 *************** *** 363,368 **** --- 363,369 ---- /* Define if you want to add support for ACL */ #undef HAVE_POSIX_ACL + #undef HAVE_SOLARIS_ZFS_ACL #undef HAVE_SOLARIS_ACL #undef HAVE_AIX_ACL *** ../vim-7.3.431/src/os_unix.c 2012-01-10 22:26:12.000000000 +0100 --- src/os_unix.c 2012-02-05 22:40:22.000000000 +0100 *************** *** 2746,2751 **** --- 2746,2758 ---- #ifdef HAVE_POSIX_ACL ret = (vim_acl_T)acl_get_file((char *)fname, ACL_TYPE_ACCESS); #else + #ifdef HAVE_SOLARIS_ZFS_ACL + acl_t *aclent; + + if (acl_get((char *)fname, 0, &aclent) < 0) + return NULL; + ret = (vim_acl_T)aclent; + #else #ifdef HAVE_SOLARIS_ACL vim_acl_solaris_T *aclent; *************** *** 2791,2796 **** --- 2798,2804 ---- ret = (vim_acl_T)aclent; #endif /* HAVE_AIX_ACL */ #endif /* HAVE_SOLARIS_ACL */ + #endif /* HAVE_SOLARIS_ZFS_ACL */ #endif /* HAVE_POSIX_ACL */ return ret; } *************** *** 2808,2813 **** --- 2816,2824 ---- #ifdef HAVE_POSIX_ACL acl_set_file((char *)fname, ACL_TYPE_ACCESS, (acl_t)aclent); #else + #ifdef HAVE_SOLARIS_ZFS_ACL + acl_set((char *)fname, (acl_t *)aclent); + #else #ifdef HAVE_SOLARIS_ACL acl((char *)fname, SETACL, ((vim_acl_solaris_T *)aclent)->acl_cnt, ((vim_acl_solaris_T *)aclent)->acl_entry); *************** *** 2816,2821 **** --- 2827,2833 ---- chacl((char *)fname, aclent, ((struct acl *)aclent)->acl_len); #endif /* HAVE_AIX_ACL */ #endif /* HAVE_SOLARIS_ACL */ + #endif /* HAVE_SOLARIS_ZFS_ACL */ #endif /* HAVE_POSIX_ACL */ } *************** *** 2828,2833 **** --- 2840,2848 ---- #ifdef HAVE_POSIX_ACL acl_free((acl_t)aclent); #else + #ifdef HAVE_SOLARIS_ZFS_ACL + acl_free((acl_t *)aclent); + #else #ifdef HAVE_SOLARIS_ACL free(((vim_acl_solaris_T *)aclent)->acl_entry); free(aclent); *************** *** 2836,2841 **** --- 2851,2857 ---- free(aclent); #endif /* HAVE_AIX_ACL */ #endif /* HAVE_SOLARIS_ACL */ + #endif /* HAVE_SOLARIS_ZFS_ACL */ #endif /* HAVE_POSIX_ACL */ } #endif *** ../vim-7.3.431/src/version.c 2012-02-05 22:05:44.000000000 +0100 --- src/version.c 2012-02-05 22:44:10.000000000 +0100 *************** *** 716,717 **** --- 716,719 ---- { /* Add new patch number below this line */ + /**/ + 432, /**/ -- If you put 7 of the most talented OSS developers in a room for a week and asked them to fix a bug in a spreadsheet program, in 1 week you'd have 2 new mail readers and a text-based web browser. /// 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 ///