Subject: bug#5548: eshell has an odd idea of file permissions

From: Glenn Morris <[email-masked]>
Date: Mon, 08 Feb 2010 18:54:47 -0500

Current trunk on GNU/Linux:

mkdir foo
cd foo
touch 1 2 3 4
chmod 644 1               # writable by owner
chmod 446 2               # writable by other
chmod 744 3               # executable by owner
chmod 447 4               # executable by other

emacs -Q -f eshell
eshell> ls

"1" appears in eshell-ls-readonly face, "2" in default face.
"3" appears in readonly face, "4" in eshell-ls-executable face.

This seems to be due to eshell-ls-applicable, which looks odd to me.

Firstly, it does different things according to whether or not a file's
owner attribute is reported in numeric or string form.

Secondly, if the attribute is a string and the file is not remote (?),
it adds 6 to the index position to be checked, meaning it checks the
"other" file permission index.

For example, to test if a file is readable, it ends up testing
the 1+6=7 th (from 0) character in "-rw-r--r--".