pathname-directory表现得很奇怪

时间:2013-05-23 06:26:16

标签: directory common-lisp sbcl pathname

我使用SBCL 1.1.4,发现pathname-directory表现得很奇怪:

假设路径名包含“..”,以下示例为trival。 SBCL将每个“..”转换为“:UP”

(pathname-directory "a/b/../")
(:RELATIVE "a" "b" :UP)

(pathname-directory "a/../b/../")
(:RELATIVE "a" :UP "b" :UP)

问题出现在这里:

(pathname-directory "C:/test/../")
;;=> (:ABSOLUTE "test" :UP)

(truename "C:/test/..")
#P"C:/test/../"

(pathname-directory (truename "C:/test/.."))
;;=> (:ABSOLUTE "test" "..")

(pathname-directory #P"C:/test/../")
;;=> (:ABSOLUTE "test" :UP)

当在truename的返回值上调用pathname-directory时,“..”不会转换为“:UP”。 (truename“C:/ test / ..”)也返回#P“C:/ test /../”,为什么“..”没有被转换?

1 个答案:

答案 0 :(得分:0)

这似乎是Windows上SBCL的一个问题。 /a/b/..的广告应为/a/。相反,它似乎返回对..条目本身的引用。

在Linux上,这就是你得到的:

(truename "/etc/udev/..")
#P"/etc/"

我将此报告为SBCL开发人员的错误。