1.0.44.21: expand ~ in pathnames
[sbcl.git] / src / code / pathname.lisp
index 7f9d4cf..bd0471f 100644 (file)
     (when directory
       (ecase (pop directory)
        (:absolute
-        (pieces "/"))
-       (:relative))
+        (let ((next (pop directory)))
+          (cond ((eq :home next)
+                 (pieces "~"))
+                ((and (consp next) (eq :home (car next)))
+                 (pieces "~")
+                 (pieces (second next)))
+                ((and (plusp (length next)) (char= #\~ (char next 0)))
+                 ;; The only place we need to escape the tilde.
+                 (pieces "\\")
+                 (pieces next))
+                (next
+                 (push next directory)))
+          (pieces "/")))
+        (:relative))
       (dolist (dir directory)
         (typecase dir
          ((member :up)