| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.432 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| 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 |
| |
| |
| |
| |
| |
| *** 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([ |
| |
| |
| |
| *** 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; } |
| |
| |
| |
| *** 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 |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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 /// |