[Openmcl-devel] ENOUGH-NAMESTRING is broken
hans at huebner.org
Wed Nov 14 11:28:22 EST 2007
enough-namestring is broken for if P"/" is passed as the defaults parameter:
(enough-namestring "/foo/bar" "/") => "/foo/bar" ;; wrong
(enough-namestring "/foo" "/") => "foo"
(enough-namestring "/foo/bar/baz" "/foo/") => "bar/baz"
I looked at the source of enough-namestring, and for some reason that
is not apparent to me there is explicit code in there which creates
this behavior. Is there a good reason for that? It is a bug as the
"enough-namestring returns an abbreviated namestring that is just
sufficient to identify the file named by pathname when considered
relative to the defaults. It is required that
(merge-pathnames (enough-namestring pathname defaults) defaults)
== (merge-pathnames (parse-namestring pathname nil defaults) defaults)
in all cases, and the result of enough-namestring is the shortest
reasonable string that will satisfy this criterion. "
and this criterion would also be satisfied by (merge-pathnames
(parse-namestring "foo/bar" nil "/") defaults) as per the "WRONG"
example above. But maybe I'm missing something, which is why I don't
include the rather trivial fix.
More information about the Openmcl-devel