为什么(探测文件#P" /")返回nil?

时间:2017-01-27 17:51:53

标签: common-lisp ecl

这似乎可能是ECL实施中的一个错误 - 或者由于标准中的一些细节:

    > (probe-file #P"/usr")

    #P"/usr/"
    > (probe-file #P"/usr/")

    #P"/usr/"
    > (probe-file #P"/")

    NIL
    > (probe-file #P"//")

    NIL

还有一个案例:

    > (probe-file #P"/.")

    #P"/"

更新,FWIW,SBCL做我期望的事情:

    * (probe-file #P"/")

    #P"/"

1 个答案:

答案 0 :(得分:1)

这是我现在正在测试的修复提交消息(希望这回答了问题 - 这确实是一个错误):

  

unixfsys:删除coerce_to_posix_filename

     

这是针对cygwin和mingw中的错误的解决方法   已修复),当目录名以' /'结尾时。这个修复   介绍了在根目录中调用的probe-file的额外错误(它   在所有平台上返回nil。)

     

原始评论:

     

这会将路径名指示符转换为一个名称字符串   特殊情况,目录不以斜杠结束' /',因为   所有POSIX平台(最值得注意的是Windows)都不支持此功能。

     

错误参考:

     

https://sourceforge.net/p/mingw-w64/patches/34/

     

修正#351。