r11448: counter is not used on all platforms
[umlisp.git] / parse-common.lisp
index ba7aef61c816e8b8d4bf6897254dcfefabe9efc1..c9adcf740cd7d856a383723af8a99f55922cbf42 100644 (file)
 (defun ufile-pathname (ufile &optional (extension ""))
   "Return pathname for a umls filename with an optional extension"
   (assert (typep ufile 'ufile))
-  (let ((dirs (append (list (dir ufile))
-                     (awhen (subdir ufile) (list it)))))
+  (let* ((dirs (append (list (dir ufile))
+                       (awhen (subdir ufile) (list it))))
+         (name-list (delimited-string-to-list (fil ufile) #\.))
+         (name (if (second name-list)
+                   (first name-list)
+                   (concatenate 'string (first name-list) (or extension ""))))
+         (type (when (second name-list)
+                 (concatenate 'string (second name-list) (or extension "")))))
      (merge-pathnames
-      (make-pathname :name (concatenate 'string (fil ufile) extension)
+      (make-pathname :name name :type type
                     :directory (cons :relative dirs))
       *umls-path*)))
 
 "Return pathname for a umls filename with an optional extension"
   (etypecase filename
     (string
+     (let* ((name-list (delimited-string-to-list filename #\.))
+            (name (if (second name-list)
+                      (first name-list)
+                      (concatenate 'string (first name-list) (or extension ""))))
+            (type (when (second name-list)
+                    (concatenate 'string (second name-list) (or extension "")))))
      (merge-pathnames
-      (make-pathname :name (concatenate 'string filename extension))
+      (make-pathname :name name :type type)
       (case (schar filename 0)
-       ((#\M #\m)
-        *meta-path*)
-       ((#\L #\l)
-        *lex-path*)
-       ((#\S #\s)
-        *net-path*)
-       (t
-        *umls-path*))))
+        ((#\M #\m)
+         *meta-path*)
+        ((#\L #\l)
+         *lex-path*)
+        ((#\S #\s)
+         *net-path*)
+        (t
+         *umls-path*)))))
     (pathname
      filename)))