New module 'iswctype'.
[gnulib.git] / tests / test-set-mode-acl.sh
index ef468d9..56fde29 100755 (executable)
@@ -3,6 +3,12 @@
 # Show all commands when run with environment variable VERBOSE=yes.
 test -z "$VERBOSE" || set -x
 
+test "$USE_ACL" = 0 &&
+  {
+    echo "Skipping test: insufficient ACL support"
+    exit 77
+  }
+
 # func_tmpdir
 # creates a temporary directory.
 # Sets variable
@@ -85,8 +91,14 @@ cd "$builddir" ||
       acl_flavor=hpux
     else
       if (getacl tmpfile0 >/dev/null) 2>/dev/null; then
-        # Tru64.
-        acl_flavor=osf1
+        # Tru64, NonStop Kernel.
+        if (getacl -m tmpfile0 >/dev/null) 2>/dev/null; then
+          # Tru64.
+          acl_flavor=osf1
+        else
+          # NonStop Kernel.
+          acl_flavor=nsk
+        fi
       else
         if (aclget tmpfile0 >/dev/null) 2>/dev/null; then
           # AIX.
@@ -107,10 +119,16 @@ cd "$builddir" ||
   fi
 
   if test $acl_flavor != none; then
+    # A POSIX compliant 'id' program.
+    if test -f /usr/xpg4/bin/id; then
+      ID=/usr/xpg4/bin/id
+    else
+      ID=id
+    fi
     # Use a user and group id different from the current one, to avoid
     # redundant/ambiguous ACLs.
-    myuid=`id -u`
-    mygid=`id -g`
+    myuid=`$ID -u`
+    mygid=`$ID -g`
     auid=1
     if test "$auid" = "$myuid"; then auid=2; fi
     agid=1
@@ -148,11 +166,14 @@ cd "$builddir" ||
         # Prepare a file with an ACL.
         echo "Special contents" > tmpfile2
         chmod 600 tmpfile2
-        # Set an ACL for a user.
+        # Set an ACL for a user (or group).
         case $acl_flavor in
-          linux | cygwin | freebsd | solaris)
+          linux | freebsd | solaris)
             setfacl -m user:$auid:1 tmpfile0
             ;;
+          cygwin)
+            setfacl -m group:0:1 tmpfile0
+            ;;
           hpux)
             orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'`
             chacl -r "${orig}($auid.%,--x)" tmpfile0
@@ -160,6 +181,9 @@ cd "$builddir" ||
           osf1)
             setacl -u user:$auid:1 tmpfile0
             ;;
+          nsk)
+            setacl -m user:$auid:1 tmpfile0
+            ;;
           aix)
             { aclget tmpfile0 | sed -e 's/disabled$/enabled/'; echo "        permit --x u:$auid"; } | aclput tmpfile0
             ;;