logical pathname translations and :device :unspecific
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Confirmed
|
Low
|
Unassigned |
Bug Description
As per CLHS 19.3.2.1 logical pathnames always have :device :unspecific.
Couple this with how TRANSLATE-PATHNAME works, and it means that physical pathnames translated from logical ones have :device :unspecific on Unix.
Compare this with the same physical pathname parsed from a namestring having :device nil.
CL-USER> (setf (logical-
(("*.TEXT" #P"/tmp/*.txt"))
CL-USER> (translate-
#P"/tmp/foo.txt"
CL-USER> (equal * (pathname (namestring *)))
NIL
Damned inconvenient.
...and because of the way MERGE-PATHNAMES works physical pathnames parsing with :device :unspecific would be even worse:
;;; Consider Win32.
(make- pathname :device "C")))
CL-USER> (pathname-device (merge-pathnames (make-pathname :device :unspecific)
:UNSPECIFIC
...no, not good.