getaddrinfo: Doc fix.
[pspp] / tests / test-file-has-acl.sh
index bb5568c228c65e82cfd3a7798a90d36e76288bfe..3f49e8d9e3a2ce2624c216dde0e1fc394d639a8a 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.
@@ -106,18 +118,6 @@ cd "$builddir" ||
     fi
   fi
 
-  # func_test_has_acl file expected
-  # tests the result of the file_has_acl function on file, and checks that it
-  # matches the expected value.
-  func_test_has_acl ()
-  {
-    res=`"$builddir"/test-file-has-acl${EXEEXT} "$1"`
-    test "$res" = "$2" || {
-      echo "file_has_acl(\"$1\") returned $res, expected $2" 1>&2
-      exit 1
-    }
-  }
-
   # func_test_file_has_acl file expected
   # tests the result of the file_has_acl function on file, and checks that it
   # matches the expected value.
@@ -189,18 +189,27 @@ cd "$builddir" ||
 
   func_test_has_acl tmpfile0 no
 
+  mkdir tmpdir0
+  func_test_has_acl tmpdir0 no
+
   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
     if test "$agid" = "$mygid"; then agid=2; fi
 
     case $acl_flavor in
-      linux | cygwin | freebsd | solaris)
+      linux | freebsd | solaris)
 
         # Set an ACL for a user.
         if setfacl -m user:$auid:1 tmpfile0; then
@@ -214,11 +223,11 @@ cd "$builddir" ||
             *)       setfacl -d user:$auid:1 tmpfile0 ;;
           esac
 
-          # On Linux, the ACL for the mask is implicitly added.
+          # On Linux and FreeBSD, the ACL for the mask is implicitly added.
           # On Solaris, it is always there.
           case $acl_flavor in
-            linux) func_test_has_acl tmpfile0 yes ;;
-            *)     func_test_has_acl tmpfile0 no ;;
+            linux | freebsd) func_test_has_acl tmpfile0 yes ;;
+            *)               func_test_has_acl tmpfile0 no ;;
           esac
 
           # Remove the ACL for the mask, if it was implicitly added.
@@ -232,6 +241,21 @@ cd "$builddir" ||
         fi
         ;;
 
+      cygwin)
+
+        # Set an ACL for a group.
+        if setfacl -m group:0:1 tmpfile0; then
+
+          func_test_has_acl tmpfile0 yes
+
+          # Remove the ACL for the group.
+          setfacl -d group:0 tmpfile0
+
+          func_test_has_acl tmpfile0 no
+
+        fi
+        ;;
+
       hpux)
 
         # Set an ACL for a user.
@@ -268,6 +292,20 @@ cd "$builddir" ||
         fi
         ;;
 
+      nsk)
+
+        # Set an ACL for a user.
+        setacl -m user:$auid:1 tmpfile0
+
+        func_test_has_acl tmpfile0 yes
+
+        # Remove the ACL for the user.
+        setacl -d user:$auid tmpfile0
+
+        func_test_has_acl tmpfile0 no
+
+        ;;
+
       aix)
 
         # Set an ACL for a user.
@@ -319,6 +357,7 @@ cd "$builddir" ||
   fi
 
   rm -f tmpfile[0-9] tmp.err
+  rm -rf tmpdir0
 ) || exit 1
 
 rm -rf "$tmp"