strtoumax: fix typo in previous commit.
[gnulib.git] / tests / test-file-has-acl.sh
index 7064c1c..26610c1 100755 (executable)
@@ -60,8 +60,8 @@ cd "$builddir" ||
   # Classification of the platform according to the programs available for
   # manipulating ACLs.
   # Possible values are:
-  #   linux, cygwin, freebsd, solaris, hpux, osf1, aix, macosx, irix, none.
-  # TODO: Support also native Win32 platforms (mingw).
+  #   linux, cygwin, freebsd, solaris, hpux, hpuxjfs, osf1, aix, macosx, irix, none.
+  # TODO: Support also native Windows platforms (mingw).
   acl_flavor=none
   if (getfacl tmpfile0 >/dev/null) 2>/dev/null; then
     # Platforms with the getfacl and setfacl programs.
@@ -88,18 +88,30 @@ cd "$builddir" ||
     if (lsacl / >/dev/null) 2>/dev/null; then
       # Platforms with the lsacl and chacl programs.
       # HP-UX, sometimes also IRIX.
-      acl_flavor=hpux
+      if (getacl tmpfile0 >/dev/null) 2>/dev/null; then
+        # HP-UX 11.11 or newer.
+        acl_flavor=hpuxjfs
+      else
+        # HP-UX 11.00.
+        acl_flavor=hpux
+      fi
     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.
           acl_flavor=aix
         else
           if (fsaclctl -v >/dev/null) 2>/dev/null; then
-            # MacOS X.
+            # Mac OS X.
             acl_flavor=macosx
           else
             if test -f /sbin/chacl; then
@@ -187,10 +199,16 @@ cd "$builddir" ||
   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
@@ -244,7 +262,7 @@ cd "$builddir" ||
         fi
         ;;
 
-      hpux)
+      hpux | hpuxjfs)
 
         # Set an ACL for a user.
         orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'`
@@ -257,6 +275,20 @@ cd "$builddir" ||
 
           func_test_has_acl tmpfile0 no
 
+        else
+          if test $acl_flavor = hpuxjfs; then
+
+            # 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
+
+          fi
         fi
         ;;
 
@@ -280,6 +312,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.