Deskin Miller <deskinm@xxxxxxxxx> writes: > My patch, on the other hand, is to deal with 'ls' output in case a file has > certain filesystem extended attributes. These could be e.g. POSIX ACLs, or a > SELinux security context, or perhaps others. If such an extended attribute is > present, 'ls -l' will print permissions with a '+' appended, e.g. > -rw-r--r--+ > Instead of > -rw-r--r-- > ... > For what it's worth, I've experienced this failure on my Ubuntu 8.04 laptop > with SELinux permissive mode, so it's possible ls behaves slightly differently > on other systems; I've not been able to determine this one way or another. Is there way to explicitly tell "ls -l" not to do this, I have to wonder? POSIX.1 says that the file mode written under the -l option is "%c%s%s%s%c" (where the first %c is for type, three %s are for owner, group and other perm, and the last %c is "optional alternate access method flag"). If there is no alternate or additional access control method associated with the file, the "optional alternate access method flag" would be a single SP, otherwise it would be a printable character. If we drop the default ACL from the trash directory like Matt's patch does, does a file created in there (i.e. the ones we check with /bin/ls) still have "alternate or additional access control method associated with" it? Somehow it feels wrong that you need your patch, but if you do, stripping only the trailing '+' as your patch does not look sufficient, either. Shouldn't we be stripping the last letter if the length of actual is longer than strlen("-rwxrwxrwx"), as any printable can come there? t/t1301-shared-repo.sh | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff --git c/t/t1301-shared-repo.sh i/t/t1301-shared-repo.sh index 2275caa..653362b 100755 --- c/t/t1301-shared-repo.sh +++ i/t/t1301-shared-repo.sh @@ -20,6 +20,10 @@ test_expect_success 'shared = 0400 (faulty permission u-w)' ' test $ret != "0" ' +modebits () { + ls -l "$1" | sed -e 's|^\(..........\).*|\1|' +} + for u in 002 022 do test_expect_success "shared=1 does not clear bits preset by umask $u" ' @@ -85,8 +89,7 @@ do rm -f .git/info/refs && git update-server-info && - actual="$(ls -l .git/info/refs)" && - actual=${actual%% *} && + actual="$(modebits .git/info/refs)" && test "x$actual" = "x-$y" || { ls -lt .git/info false @@ -98,8 +101,7 @@ do rm -f .git/info/refs && git update-server-info && - actual="$(ls -l .git/info/refs)" && - actual=${actual%% *} && + actual="$(modebits .git/info/refs)" && test "x$actual" = "x-$x" || { ls -lt .git/info false -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html