0.9.16.17:
[sbcl.git] / src / code / unix-pathname.lisp
index 6f1cf6a..b376da8 100644 (file)
@@ -15,7 +15,7 @@
 ;;; separated subseq. The first value is true if absolute directories
 ;;; location.
 (defun split-at-slashes (namestr start end)
-  (declare (type simple-base-string namestr)
+  (declare (type simple-string namestr)
            (type index start end))
   (let ((absolute (and (/= start end)
                        (char= (schar namestr start) #\/))))
@@ -34,7 +34,7 @@
 (defun parse-unix-namestring (namestring start end)
   (declare (type simple-string namestring)
            (type index start end))
-  (setf namestring (coerce namestring 'simple-base-string))
+  (setf namestring (coerce namestring 'simple-string))
   (multiple-value-bind (absolute pieces)
       (split-at-slashes namestring start end)
     (multiple-value-bind (name type version)
@@ -88,7 +88,7 @@
 (defun parse-native-unix-namestring (namestring start end)
   (declare (type simple-string namestring)
            (type index start end))
-  (setf namestring (coerce namestring 'simple-base-string))
+  (setf namestring (coerce namestring 'simple-string))
   (multiple-value-bind (absolute ranges)
       (split-at-slashes namestring start end)
     (let* ((components (loop for ((start . end) . rest) on ranges
               (t
                (error "invalid pattern piece: ~S" piece))))))
        (apply #'concatenate
-              'simple-base-string
+              'simple-string
               (strings))))))
 
 (defun unparse-unix-directory-list (directory)
            (pieces "/"))
           (t
            (error "invalid directory component: ~S" dir)))))
-    (apply #'concatenate 'simple-base-string (pieces))))
+    (apply #'concatenate 'simple-string (pieces))))
 
 (defun unparse-unix-directory (pathname)
   (declare (type pathname pathname))
             (error "type component can't have a #\. inside: ~S" pathname)))
         (strings ".")
         (strings (unparse-unix-piece type))))
-    (apply #'concatenate 'simple-base-string (strings))))
+    (apply #'concatenate 'simple-string (strings))))
 
 (/show0 "filesys.lisp 406")
 
 (defun unparse-unix-namestring (pathname)
   (declare (type pathname pathname))
-  (concatenate 'simple-base-string
+  (concatenate 'simple-string
                (unparse-unix-directory pathname)
                (unparse-unix-file pathname)))
 
         (type (pathname-type pathname)))
     (coerce
      (with-output-to-string (s)
-       (ecase (car directory)
-         (:absolute (write-char #\/ s))
-         (:relative))
+       (when directory
+         (ecase (car directory)
+           (:absolute (write-char #\/ s))
+           (:relative)))
        (dolist (piece (cdr directory))
          (typecase piece
            ((member :up) (write-string ".." s))
              (error "non-STRING type in NATIVE-NAMESTRING: ~S" name))
            (write-char #\. s)
            (write-string type s))))
-     'simple-base-string)))
+     'simple-string)))
 
 (defun unparse-unix-enough (pathname defaults)
   (declare (type pathname pathname defaults))
         (when name-needed
           (unless pathname-name (lose))
           (when (and (null pathname-type)
+                     (typep pathname-name 'simple-base-string)
                      (position #\. pathname-name :start 1))
             (error "too many dots in the name: ~S" pathname))
           (strings (unparse-unix-piece pathname-name)))
         (when type-needed
           (when (or (null pathname-type) (eq pathname-type :unspecific))
             (lose))
-          (when (typep pathname-type 'simple-base-string)
+          (when (typep pathname-type 'simple-string)
             (when (position #\. pathname-type)
               (error "type component can't have a #\. inside: ~S" pathname)))
           (strings ".")