Merging takes a pathname with unfilled components and supplies values for those components from a source of defaults.
If a component's value is nil
, that component is considered to be unfilled.
If a component's value is any non-nil object,
including :unspecific, that component is considered to be filled.
Except as explicitly specified otherwise,
for functions that manipulate or inquire about files in the file system,
the pathname argument to such a function
is merged with *default-pathname-defaults*
before accessing the file system
(as if by merge-pathnames
).
Although the following examples are possible to execute only in implementations which permit :unspecific in the indicated position andwhich permit four-letter type components, they serve to illustrate the basic concept of pathname merging.
(pathname-type (merge-pathnames (make-pathname :type "LISP") (make-pathname :type "TEXT"))) → "LISP" (pathname-type (merge-pathnames (make-pathname :type nil) (make-pathname :type "LISP"))) → "LISP" (pathname-type (merge-pathnames (make-pathname :type :unspecific) (make-pathname :type "LISP"))) → :UNSPECIFIC