diff --git a/asdf.lisp b/asdf.lisp index a43c24abd0e5e84c4766a1c118ccf80ebd474bc7..530468b89c9211daed98d955d602f5ff834f6dcc 100644 --- a/asdf.lisp +++ b/asdf.lisp @@ -323,7 +323,11 @@ be overridden by around methods added by a system developer.") (:documentation "Extracts the pathname applicable for a particular component.")) (defgeneric component-relative-pathname (component) - (:documentation "Extracts the relative pathname applicable for a particular component.")) + (:documentation "Returns a pathname for the component argument intended to be +interpreted relative to the pathname of that component's parent. +Despite the function's name, the return value may be an absolute +pathname, because an absolute pathname may be interpreted relative to +another pathname in a degenerate way.")) (defgeneric component-property (component property)) @@ -460,6 +464,17 @@ and NIL NAME, TYPE and VERSION components" (setf start (1+ end))))))) (defun split-path-string (s &optional force-directory) + "Splits the path string S, returning three values: +A flag that is either :absolute or :relative, indicating + how the rest of the values are to be interpreted. +A directory path --- a list of strings, suitable for + use with MAKE-PATHNAME when prepended with the flag + value. +A filename with type extension, possibly NIL in the + case of a directory pathname. +FORCE-DIRECTORY forces S to be interpreted as a directory +pathname \(third return value will be NIL, final component +of S will be treated as part of the directory path." (check-type s string) (let* ((components (split s nil "/")) (last-comp (car (last components))))