Evaluating the expression below leads to strange results that are
contradicting the doc-string which claims that "." and ".." would be
removed.
(expand-file-name "/..")
=> "/.."
The good news is that at least this is FSF compatible behavior. FSF
Emacs documents this weirdness saying:
“For technical reasons, this function can return correct but
non-intuitive results for the root directory; for instance,
(expand-file-name ".." "/") returns "/..". For this reason,
use
(directory-file-name (file-name-directory dirname)) to traverse a
filesystem tree, not (expand-file-name ".." dirname).”
Their suggested workaround is of course not correct in cases where
`dirname' ends with `directory-sep-char':
(directory-file-name (file-name-directory "/foo/bar/../"))
=> "/foo/bar/.." <<<< WRONG
(expand-file-name "/foo/bar/../")
=> "/foo/" <<<< RIGHT
It doesn't occur to me why it would be difficult to return
(expand-file-name "/..")
=> "/"
and
(expand-file-name "/.")
=> "/"
respectively. History?
Looking at the code I find this comment:
/* `/../' is the "superroot" on certain file systems. */
Is there any file system still in use with this concept?
Thanks
Marcus
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-beta