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 <[email protected]> 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
