Pathname abstraction redesigned. New design is very similar to the
authorChris Hanson <org/chris-hanson/cph>
Mon, 4 Nov 1991 20:30:42 +0000 (20:30 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 4 Nov 1991 20:30:42 +0000 (20:30 +0000)
commitbd0c26ebfdc8337348803ea803be3c27900c00df
tree56cfab47f338493bedaee85e1566d352c69c2b10
parentcb872f6f122c80a05304ec69c9c7dd46cb29964a
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:
v7/src/runtime/ed-ffi.scm
v7/src/runtime/emacs.scm
v7/src/runtime/equals.scm
v7/src/runtime/error.scm
v7/src/runtime/global.scm
v7/src/runtime/infutl.scm
v7/src/runtime/intrpt.scm
v7/src/runtime/io.scm
v7/src/runtime/load.scm
v7/src/runtime/make.scm
v7/src/runtime/option.scm
v7/src/runtime/packag.scm
v7/src/runtime/pathnm.scm
v7/src/runtime/runtime.pkg
v7/src/runtime/savres.scm
v7/src/runtime/sfile.scm
v7/src/runtime/starbase.scm
v7/src/runtime/system.scm
v7/src/runtime/unxdir.scm
v7/src/runtime/unxprm.scm
v7/src/runtime/unxpth.scm
v7/src/runtime/version.scm
v7/src/runtime/wrkdir.scm
v8/src/runtime/global.scm
v8/src/runtime/infutl.scm
v8/src/runtime/load.scm
v8/src/runtime/make.scm
v8/src/runtime/runtime.pkg