coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: coreutils-8.14.116-1e18d on Solaris 10


From: Jim Meyering
Subject: Re: coreutils-8.14.116-1e18d on Solaris 10
Date: Thu, 05 Jan 2012 11:33:28 +0100

Bruno Haible wrote:
>>   http://meyering.net/cu/coreutils-8.14.116-1e18d.tar.xz
>
> On Solaris 10/x86, there is 1 test framework failure:
>
> slink-acl: set-up failure:
> ERROR: ls/slink-acl
>
>
> ERROR: ls/slink-acl
> ===================
>
> Unrecognized character found in mode field
> slink-acl: set-up failure:
>
>
> + require_setfacl_
> + setfacl -m user::rwx .
> + touch k
> + setfacl -m user::r k
> Unrecognized character found in mode field
> + framework_failure_
>
>
> The reason is that the mode is expected to be a 3-letter sequence:
> $ setfacl -m user::r k
> Unrecognized character found in mode field
> $ setfacl -m user::r-- k
> $ setfacl -m user::-w- k
> $ setfacl -m user::--x k

Thanks for the report and analysis!
This should fix it and prevent recurrence.

>From cf318308a5dd0c1bc3f149f13f0052b44690f1d8 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Thu, 5 Jan 2012 11:31:29 +0100
Subject: [PATCH] tests: adjust setfacl usage to accommodate Solaris 10

* cfg.mk (sc_prohibit_short_facl_mode_spec): New rule.
* tests/cp/acl: Extend setfacl mode spec to have length 3.
* tests/ls/slink-acl: Likewise.
* tests/mv/acl: Likewise.
Report and analysis by Bruno Haible.
---
 cfg.mk             |    9 +++++++++
 tests/cp/acl       |    2 +-
 tests/ls/slink-acl |    2 +-
 tests/mv/acl       |    8 ++++----
 4 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index ef54ed2..1bf4f80 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -245,6 +245,15 @@ sc_prohibit_fail_0:
        halt='fail=0 initialization'                                    \
          $(_sc_search_regexp)

+# The mode part of a setfacl -m option argument must be three bytes long.
+# I.e., an argument of user:bin:rw or user:bin:r will make Solaris 10's
+# setfacl reject it with: "Unrecognized character found in mode field".
+# Use hyphens to give it a length of 3: "...:rw-" or "...:r--".
+sc_prohibit_short_facl_mode_spec:
+       @prohibit='\<setfacl .*-m.*:.*:[rwx-]{1,2} '                    \
+       halt='setfacl mode string length < 3; extend with hyphen(s)'    \
+         $(_sc_search_regexp)
+
 # Ensure that "stdio--.h" is used where appropriate.
 sc_require_stdio_safer:
        @if $(VC_LIST_EXCEPT) | grep -l '\.[ch]$$' > /dev/null; then    \
diff --git a/tests/cp/acl b/tests/cp/acl
index a538186..94b7af6 100755
--- a/tests/cp/acl
+++ b/tests/cp/acl
@@ -32,7 +32,7 @@ touch a/file || framework_failure_
 # Ensure that setfacl and getfacl work on this file system.
 skip=no
 acl1=`cd a && getfacl file` || skip=yes
-setfacl -m user:bin:rw a/file 2> /dev/null || skip=yes
+setfacl -m user:bin:rw- a/file 2> /dev/null || skip=yes
 test $skip = yes &&
   skip_ "'.' is not on a suitable file system for this test"

diff --git a/tests/ls/slink-acl b/tests/ls/slink-acl
index d631cdc..ae9af50 100755
--- a/tests/ls/slink-acl
+++ b/tests/ls/slink-acl
@@ -22,7 +22,7 @@ print_ver_ ls
 require_setfacl_

 touch k || framework_failure_
-setfacl -m user::r k || framework_failure_
+setfacl -m user::r-- k || framework_failure_
 ln -s k s || framework_failure_

 set _ $(ls -Log s); shift; link=$1
diff --git a/tests/mv/acl b/tests/mv/acl
index 6ec864c..382752a 100755
--- a/tests/mv/acl
+++ b/tests/mv/acl
@@ -35,9 +35,9 @@ touch $t1 || framework_failure_

 skip_partition=none
 # Ensure that setfacl and getfacl work on this file system.
-setfacl -m user:bin:rw file 2> /dev/null || skip_partition=.
+setfacl -m user:bin:rw- file 2> /dev/null || skip_partition=.
 # And on the destination file system.
-setfacl -m user:bin:rw $t1 || skip_partition=$other_partition_tmpdir
+setfacl -m user:bin:rw- $t1 || skip_partition=$other_partition_tmpdir
 acl1=`getfacl file` || skip_partition=.

 test $skip_partition != none &&
@@ -50,7 +50,7 @@ test "$acl1" = "$acl2" || fail=1

 # move the access acl of a directory
 mkdir dir || framework_failure_
-setfacl -m user:bin:rw dir || framework_failure_
+setfacl -m user:bin:rw- dir || framework_failure_
 acl1=`getfacl dir` || framework_failure_
 mv dir "$other_partition_tmpdir" || fail=1
 acl2=`cd "$other_partition_tmpdir" && getfacl dir` || framework_failure_
@@ -58,7 +58,7 @@ test "$acl1" = "$acl2" || fail=1

 # move the default acl of a directory
 mkdir dir2 || framework_failure_
-setfacl -d -m user:bin:rw dir2 || framework_failure_
+setfacl -d -m user:bin:rw- dir2 || framework_failure_
 acl1=`getfacl dir2` || framework_failure_
 mv dir2 "$other_partition_tmpdir" || fail=1
 acl2=`cd "$other_partition_tmpdir" && getfacl dir2` || framework_failure_
--
1.7.8.2.329.g04d73



reply via email to

[Prev in Thread] Current Thread [Next in Thread]