From 7361c48852ef8f85937e6841181e1cd7e55359d6 Mon Sep 17 00:00:00 2001
From: toy <toy>
Date: Fri, 14 Feb 2003 19:47:12 +0000
Subject: [PATCH] UNPARSE-UNIX-ENOUGH:  If the PATHNAME has no directory
 component or has a relative directory component, it is taken as relative to
 DEFAULTS instead of signaling an error that it can't be represented relative
 to DEFAULTS.

---
 code/filesys.lisp | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/code/filesys.lisp b/code/filesys.lisp
index a9e8bb700..fbe35c8b9 100644
--- a/code/filesys.lisp
+++ b/code/filesys.lisp
@@ -6,7 +6,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/filesys.lisp,v 1.71 2002/11/15 15:08:11 toy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/filesys.lisp,v 1.72 2003/02/14 19:47:12 toy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -456,11 +456,17 @@
 	     (defaults-directory (%pathname-directory defaults))
 	     (prefix-len (length defaults-directory))
 	     (result-dir
-	      (cond ((and (> prefix-len 1)
-			  (>= (length pathname-directory) prefix-len)
-			  (compare-component (subseq pathname-directory
-						     0 prefix-len)
-					     defaults-directory))
+	      (cond ((null pathname-directory)
+		     ;; No directory, so relative to default.
+		     (list :relative))
+		    ((eq (first pathname-directory) :relative)
+		     ;; Relative directory so relative to default.
+		     pathname-directory)
+		    ((and (> prefix-len 1)
+			      (>= (length pathname-directory) prefix-len)
+			      (compare-component (subseq pathname-directory
+							 0 prefix-len)
+						 defaults-directory))
 		     ;; Pathname starts with a prefix of default.  So just
 		     ;; use a relative directory from then on out.
 		     (cons :relative (nthcdr prefix-len pathname-directory)))
-- 
GitLab