Pathname abstraction redesigned. New design is very similar to the
Common Lisp pathname abstraction.
Incompatible changes:
* ->PATHNAME no longer accepts a symbol as an argument. Only strings
and pathnames are valid.
* Procedures eliminated:
CANONICALIZE-INPUT-FILENAME
CANONICALIZE-INPUT-PATHNAME
CANONICALIZE-OUTPUT-FILENAME
CANONICALIZE-OUTPUT-PATHNAME
CANONICALIZE-OVERWRITE-FILENAME
CANONICALIZE-OVERWRITE-PATHNAME
HOME-DIRECTORY-PATHNAME
INIT-FILE-TRUENAME
PATHNAME->ABSOLUTE-PATHNAME
PATHNAME->INPUT-TRUENAME
PATHNAME->OUTPUT-TRUENAME
PATHNAME->OVERWRITE-TRUENAME
PATHNAME->STRING
PATHNAME-COMPONENTS
PATHNAME-DEFAULT-HOST
PATHNAME-DIRECTORY-PATH
PATHNAME-DIRECTORY-STRING
PATHNAME-NAME-PATH
PATHNAME-NAME-STRING
PATHNAME-NEW-HOST
PATHNAME-RELATIVE?
STRING->PATHNAME
SYMBOL->PATHNAME
The file "old-path.scm" contains emulations for all of these
procedures, except PATHNAME-DEFAULT-HOST, PATHNAME-NEW-HOST, and
SYMBOL->PATHNAME.
* UNIX/FILE-ACCESS has been renamed to FILE-ACCESS. UNIX/FILE-ACCESS
still exists as a synonym, but is obsolete.
* PATHNAME-DEFAULT no longer accepts a HOST argument.
* DELETE-FILE no longer returns a useful value. Attempting to delete
a non-existent file signals an error.
* Various "loading" and "dumping" messages now use ENOUGH-NAMESTRING
to eliminate redundant part of the filename being printed.
* MAKE-PATHNAME checks its arguments for consistency, and signals an
error for illegal arguments.
* Representation of pathname directories changed to match Common
Lisp. Directory is now either #F or a list of symbols and strings
with first element either 'ABSOLUTE or 'RELATIVE.
* Unix pathnames now set DEVICE and VERSION to 'UNSPECIFIC.
'UNSPECIFIC now means that the field is not used by the operating
system.
* Parsing rules for unix filenames changed: the file type is the part
of the name after the last dot, if any. If the dot occurs at the
beginning or end of the filename, then it doesn't count -- in that
case there is no type. Thus, names like "." and ".." have no type.
Enhancements:
* New procedures and variables. Most are defined as in Common Lisp.
*DEFAULT-PATHNAME-DEFAULTS*
->NAMESTRING
->TRUENAME
DIRECTORY-NAMESTRING
DIRECTORY-PATHNAME
DIRECTORY-PATHNAME-AS-FILE
ENOUGH-NAMESTRING
ENOUGH-PATHNAME
FILE-ACCESS
FILE-ATTRIBUTES-DIRECT (same as FILE-ATTRIBUTES)
FILE-MODIFICATION-TIME-DIRECT
FILE-MODIFICATION-TIME-INDIRECT (same as FILE-MODIFICATION-TIME)
FILE-NAMESTRING
FILE-PATHNAME
FILE-READABLE?
HOST-NAMESTRING
PATHNAME-WILD?
PATHNAME=?
* All pathname procedures now do an implicit ->PATHNAME on their
"pathname" and "defaults" arguments.
* MERGE-PATHNAMES second argument is now optional, and defaults to
*DEFAULT-PATHNAME-DEFAULTS*. It accepts a third optional argument,
DEFAULT-VERSION, which defaults to 'NEWEST. The merging algorithm
has been changed to match Common Lisp.
* *DEFAULT-PATHNAME-DEFAULTS* is updated by
SET-WORKING-DIRECTORY-PATHNAME! and CD as long as it is EQ? to the
working directory.
* EQUAL? guaranteed to work on pathnames.
Miscellaneous:
* Old Starbase graphics eliminated.
* Files "unk*.scm" and "vms*.scm" removed. They will need to be
rewritten if this support is desired in the future.
28 files changed: