#!-sb-fluid (declaim (freeze-type logical-pathname logical-host))
\f
-;;;; UNIX-HOST stuff
+;;;; PHYSICAL-HOST stuff
(def!struct (unix-host
(:make-load-form-fun make-unix-host-load-form)
(unparse-directory #'unparse-unix-directory)
(unparse-file #'unparse-unix-file)
(unparse-enough #'unparse-unix-enough)
+ (unparse-directory-separator "/")
(customary-case :lower))))
-
(defvar *unix-host* (make-unix-host))
-
(defun make-unix-host-load-form (host)
(declare (ignore host))
'*unix-host*)
-(defvar *physical-host* *unix-host*)
+(def!struct (win32-host
+ (:make-load-form-fun make-win32-host-load-form)
+ (:include host
+ (parse #'parse-win32-namestring)
+ (parse-native #'parse-native-win32-namestring)
+ (unparse #'unparse-win32-namestring)
+ (unparse-native #'unparse-native-win32-namestring)
+ (unparse-host #'unparse-win32-host)
+ (unparse-directory #'unparse-win32-directory)
+ (unparse-file #'unparse-win32-file)
+ (unparse-enough #'unparse-win32-enough)
+ (unparse-directory-separator "\\")
+ (customary-case :upper))))
+(defvar *win32-host* (make-win32-host))
+(defun make-win32-host-load-form (host)
+ (declare (ignore host))
+ '*win32-host*)
+
+(defvar *physical-host*
+ #!-win32 *unix-host*
+ #!+win32 *win32-host*)
;;; Return a value suitable, e.g., for preinitializing
;;; *DEFAULT-PATHNAME-DEFAULTS* before *DEFAULT-PATHNAME-DEFAULTS* is
(if (and (eq dir :back)
results
(not (member (car results)
- '(:back :wild-inferiors))))
+ '(:back :wild-inferiors :relative :absolute))))
(pop results)
(push dir results))))
(dolist (dir (maybe-diddle-case dir2 diddle-case))
is not alphanumeric or hyphen:~% ~S"
:args (list ch)
:namestring word :offset i))))
- (coerce word 'base-string)))
+ (coerce word 'string))) ; why not simple-string?
;;; Given a logical host or string, return a logical host. If ERROR-P
;;; is NIL, then return NIL when no such host exists.
(version-supplied (not (or (null version)
(eq version :unspecific)))))
(when name
- (when (and (null type) (position #\. name :start 1))
+ (when (and (null type)
+ (typep name 'string)
+ (position #\. name :start 1))
(error "too many dots in the name: ~S" pathname))
(strings (unparse-logical-piece name)))
(when type-supplied
(unless name
(error "cannot specify the type without a file: ~S" pathname))
- (when (typep type 'simple-string)
+ (when (typep type 'string)
(when (position #\. type)
(error "type component can't have a #\. inside: ~S" pathname)))
(strings ".")