Mercurial > vim
comparison src/os_unix.c @ 3330:81201fb337a5 v7.3.432
updated for version 7.3.432
Problem: ACLs are not supported for ZFS or NFSv4 on Solaris.
Solution: Add configure check and code. (Danek Duvall)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Sun, 05 Feb 2012 22:51:33 +0100 |
parents | 320cc46d0eb0 |
children | 4a2cb025b641 |
comparison
equal
deleted
inserted
replaced
3329:973891c28075 | 3330:81201fb337a5 |
---|---|
2744 { | 2744 { |
2745 vim_acl_T ret = NULL; | 2745 vim_acl_T ret = NULL; |
2746 #ifdef HAVE_POSIX_ACL | 2746 #ifdef HAVE_POSIX_ACL |
2747 ret = (vim_acl_T)acl_get_file((char *)fname, ACL_TYPE_ACCESS); | 2747 ret = (vim_acl_T)acl_get_file((char *)fname, ACL_TYPE_ACCESS); |
2748 #else | 2748 #else |
2749 #ifdef HAVE_SOLARIS_ZFS_ACL | |
2750 acl_t *aclent; | |
2751 | |
2752 if (acl_get((char *)fname, 0, &aclent) < 0) | |
2753 return NULL; | |
2754 ret = (vim_acl_T)aclent; | |
2755 #else | |
2749 #ifdef HAVE_SOLARIS_ACL | 2756 #ifdef HAVE_SOLARIS_ACL |
2750 vim_acl_solaris_T *aclent; | 2757 vim_acl_solaris_T *aclent; |
2751 | 2758 |
2752 aclent = malloc(sizeof(vim_acl_solaris_T)); | 2759 aclent = malloc(sizeof(vim_acl_solaris_T)); |
2753 if ((aclent->acl_cnt = acl((char *)fname, GETACLCNT, 0, NULL)) < 0) | 2760 if ((aclent->acl_cnt = acl((char *)fname, GETACLCNT, 0, NULL)) < 0) |
2789 } | 2796 } |
2790 } | 2797 } |
2791 ret = (vim_acl_T)aclent; | 2798 ret = (vim_acl_T)aclent; |
2792 #endif /* HAVE_AIX_ACL */ | 2799 #endif /* HAVE_AIX_ACL */ |
2793 #endif /* HAVE_SOLARIS_ACL */ | 2800 #endif /* HAVE_SOLARIS_ACL */ |
2801 #endif /* HAVE_SOLARIS_ZFS_ACL */ | |
2794 #endif /* HAVE_POSIX_ACL */ | 2802 #endif /* HAVE_POSIX_ACL */ |
2795 return ret; | 2803 return ret; |
2796 } | 2804 } |
2797 | 2805 |
2798 /* | 2806 /* |
2805 { | 2813 { |
2806 if (aclent == NULL) | 2814 if (aclent == NULL) |
2807 return; | 2815 return; |
2808 #ifdef HAVE_POSIX_ACL | 2816 #ifdef HAVE_POSIX_ACL |
2809 acl_set_file((char *)fname, ACL_TYPE_ACCESS, (acl_t)aclent); | 2817 acl_set_file((char *)fname, ACL_TYPE_ACCESS, (acl_t)aclent); |
2818 #else | |
2819 #ifdef HAVE_SOLARIS_ZFS_ACL | |
2820 acl_set((char *)fname, (acl_t *)aclent); | |
2810 #else | 2821 #else |
2811 #ifdef HAVE_SOLARIS_ACL | 2822 #ifdef HAVE_SOLARIS_ACL |
2812 acl((char *)fname, SETACL, ((vim_acl_solaris_T *)aclent)->acl_cnt, | 2823 acl((char *)fname, SETACL, ((vim_acl_solaris_T *)aclent)->acl_cnt, |
2813 ((vim_acl_solaris_T *)aclent)->acl_entry); | 2824 ((vim_acl_solaris_T *)aclent)->acl_entry); |
2814 #else | 2825 #else |
2815 #ifdef HAVE_AIX_ACL | 2826 #ifdef HAVE_AIX_ACL |
2816 chacl((char *)fname, aclent, ((struct acl *)aclent)->acl_len); | 2827 chacl((char *)fname, aclent, ((struct acl *)aclent)->acl_len); |
2817 #endif /* HAVE_AIX_ACL */ | 2828 #endif /* HAVE_AIX_ACL */ |
2818 #endif /* HAVE_SOLARIS_ACL */ | 2829 #endif /* HAVE_SOLARIS_ACL */ |
2830 #endif /* HAVE_SOLARIS_ZFS_ACL */ | |
2819 #endif /* HAVE_POSIX_ACL */ | 2831 #endif /* HAVE_POSIX_ACL */ |
2820 } | 2832 } |
2821 | 2833 |
2822 void | 2834 void |
2823 mch_free_acl(aclent) | 2835 mch_free_acl(aclent) |
2825 { | 2837 { |
2826 if (aclent == NULL) | 2838 if (aclent == NULL) |
2827 return; | 2839 return; |
2828 #ifdef HAVE_POSIX_ACL | 2840 #ifdef HAVE_POSIX_ACL |
2829 acl_free((acl_t)aclent); | 2841 acl_free((acl_t)aclent); |
2842 #else | |
2843 #ifdef HAVE_SOLARIS_ZFS_ACL | |
2844 acl_free((acl_t *)aclent); | |
2830 #else | 2845 #else |
2831 #ifdef HAVE_SOLARIS_ACL | 2846 #ifdef HAVE_SOLARIS_ACL |
2832 free(((vim_acl_solaris_T *)aclent)->acl_entry); | 2847 free(((vim_acl_solaris_T *)aclent)->acl_entry); |
2833 free(aclent); | 2848 free(aclent); |
2834 #else | 2849 #else |
2835 #ifdef HAVE_AIX_ACL | 2850 #ifdef HAVE_AIX_ACL |
2836 free(aclent); | 2851 free(aclent); |
2837 #endif /* HAVE_AIX_ACL */ | 2852 #endif /* HAVE_AIX_ACL */ |
2838 #endif /* HAVE_SOLARIS_ACL */ | 2853 #endif /* HAVE_SOLARIS_ACL */ |
2854 #endif /* HAVE_SOLARIS_ZFS_ACL */ | |
2839 #endif /* HAVE_POSIX_ACL */ | 2855 #endif /* HAVE_POSIX_ACL */ |
2840 } | 2856 } |
2841 #endif | 2857 #endif |
2842 | 2858 |
2843 /* | 2859 /* |