Added Mike Davidsons Tru64 ACL patch.
authorJeremy Allison <jra@samba.org>
Fri, 10 Aug 2001 20:48:25 +0000 (20:48 +0000)
committerJeremy Allison <jra@samba.org>
Fri, 10 Aug 2001 20:48:25 +0000 (20:48 +0000)
Jeremy.

source/acconfig.h
source/configure
source/configure.in
source/include/config.h.in
source/include/smb_acls.h
source/lib/sysacls.c

index 98c83b08f54c5e688b6e3aba49cf23fe88f37071..e3fa72077a1512e7ae5ed1f89feba817d8f48d51 100644 (file)
 #undef HAVE_SOLARIS_ACLS
 #undef HAVE_IRIX_ACLS
 #undef HAVE_AIX_ACLS
-#undef HAVE_DRAFT13_POSIX_ACLS
+#undef HAVE_TRU64_ACLS
 #undef HAVE_NO_ACLS
 #undef HAVE_LIBPAM
 #undef HAVE_ASPRINTF_DECL
index 201bfbcb89502ffd7f4b951f4261d01c021308a5..3b6da1c0869344b31ec5ac474c719d343d0e3c3c 100755 (executable)
@@ -944,7 +944,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-for ac_prog in mawk gawk nawk awk
+for ac_prog in gawk mawk nawk awk
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -12349,9 +12349,9 @@ EOF
 
                        ;;
                *osf*)
-                       echo "$ac_t""Using Draft 13 Posix ACLs" 1>&6
+                       echo "$ac_t""Using Tru64 ACLs" 1>&6
                        cat >> confdefs.h <<\EOF
-#define HAVE_DRAFT13_POSIX_ACLS 1
+#define HAVE_TRU64_ACLS 1
 EOF
 
                        LIBS="$LIBS -lpacl"
index 8cc8b5d4cdbbc8a7194e63513311385f9806ee5f..88e2349d9a4347f703802c1c0b8618b6343356bb 100644 (file)
@@ -2285,8 +2285,8 @@ AC_ARG_WITH(acl-support,
                        AC_DEFINE(HAVE_AIX_ACLS)
                        ;;
                *osf*)
-                       AC_MSG_RESULT(Using Draft 13 Posix ACLs)
-                       AC_DEFINE(HAVE_DRAFT13_POSIX_ACLS)
+                       AC_MSG_RESULT(Using Tru64 ACLs)
+                       AC_DEFINE(HAVE_TRU64_ACLS)
                        LIBS="$LIBS -lpacl"
                        ;;
         *)
index 3a0c747a3d9d187a36b5ec300cc243b3ddc023b6..68c4a541d5efc6e0abc5b1900d17d5daa7402737 100644 (file)
 #undef HAVE_SOLARIS_ACLS
 #undef HAVE_IRIX_ACLS
 #undef HAVE_AIX_ACLS
-#undef HAVE_DRAFT13_POSIX_ACLS
+#undef HAVE_TRU64_ACLS
 #undef HAVE_NO_ACLS
 #undef HAVE_LIBPAM
 #undef HAVE_ASPRINTF_DECL
index 4b282481ff389d6364f83a4778774c960be7d39b..37aa7cb65c2a02f79c723815e663e842bcf023ff 100644 (file)
@@ -54,9 +54,9 @@
 #define SMB_ACL_TYPE_ACCESS         ACL_TYPE_ACCESS
 #define SMB_ACL_TYPE_DEFAULT        ACL_TYPE_DEFAULT
 
-#elif defined(HAVE_DRAFT13_POSIX_ACLS)
+#elif defined(HAVE_TRU64_ACLS)
 
-/* This is for DEC OSF/1 */
+/* This is for DEC/Compaq Tru64 UNIX */
 
 #define SMB_ACL_TAG_T               acl_tag_t
 #define SMB_ACL_TYPE_T                         acl_type_t
index 98f0617d44c931aedcb97c5da7173512010328c1..424e705755389b3838605801b0d9d6c69bc7b6ae 100644 (file)
@@ -191,8 +191,17 @@ int sys_acl_free_qualifier(void *qual, SMB_ACL_TAG_T tagtype)
        return acl_free(qual);
 }
 
-#elif defined(HAVE_DRAFT13_POSIX_ACLS)
-
+#elif defined(HAVE_TRU64_ACLS)
+/*
+ * The interface to DEC/Compaq Tru64 UNIX ACLs
+ * is based on Draft 13 of the POSIX spec which is
+ * slightly different from the Draft 16 interface.
+ * 
+ * Also, some of the permset manipulation functions
+ * such as acl_clear_perm() and acl_add_perm() appear
+ * to be broken on Tru64 so we have to manipulate
+ * the permission bits in the permset directly.
+ */
 int sys_acl_get_entry( SMB_ACL_T the_acl, int entry_id, SMB_ACL_ENTRY_T *entry_p)
 {
        SMB_ACL_ENTRY_T entry;
@@ -237,25 +246,26 @@ SMB_ACL_T sys_acl_get_fd(int fd)
 
 int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset)
 {
-       return acl_clear_perm(permset);
+       *permset = 0;           /* acl_clear_perm() is broken on Tru64  */
+
+       return 0;
 }
 
 int sys_acl_add_perm( SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm)
 {
-       return acl_add_perm(permset, perm);
+       if (perm & ~(SMB_ACL_READ | SMB_ACL_WRITE | SMB_ACL_EXECUTE)) {
+               errno = EINVAL;
+               return -1;
+       }
+
+       *permset |= perm;       /* acl_add_perm() is broken on Tru64    */
+
+       return 0;
 }
 
 int sys_acl_get_perm( SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm)
 {
-#if defined(HAVE_ACL_GET_PERM_NP)
-       return acl_get_perm_np(permset, perm);
-#else
-       /*
-        * if we don't have an acl_get_perm() interface
-        * this will probably work for most implementations
-        */
-       return *permset & perm;
-#endif
+       return *permset & perm; /* Tru64 doesn't have acl_get_perm() */
 }
 
 char *sys_acl_to_text( SMB_ACL_T the_acl, ssize_t *plen)