[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Issue: PATHNAME-LOGICAL (version 2)



    Date: Wed, 24 May 1989 12:52:12 EDT
    From: Gail Zacharias <gz@spt.entity.com>

I noticed Coral (Macintosh Allegro Common Lisp) has a logical pathname
feature which is somewhat simpler but aimed at solving the same problems.
In particular your feature only affects the directory component and does
not allow wildcard mapping, only one-to-one mapping.  Should we say
something about this in the current practice section?

    I really like this, except that I have a problem with the syntax - it looks
    too much like the Macintosh pathname syntax.  A name like "pcl:foo.lisp" can
    be parsed as either a physical Macintosh pathname or a logical pathname.  I
    realize that the proposal is unambiguous on this point, resolving it in favor
    of a logical pathname.  But this means that a program defining a logical "pcl"
    host thereby makes impossible for the user to access files on his physical
    "pcl" disk.  Note that TOPS-20, VMS and (I think) MSDOS have a similar
    problem.

The use of colon affects Symbolics more than anybody, since logical
pathname host names conflict with network host names, whereas on the
Macintosh and those DEC and IBM systems they only conflict with device
names, usually a much smaller set and often chosen with names that are
distinctive enough that conflict is unlikely.  We thought about this but
no matter what syntax we choose it's going to be a conflict for
somebody.  We can't even use double colon without conflict since DEC is
already using it.

I could make the alternate argument that the use of colon fits really
nicely into the Macintosh environment, where hd: means the hard disk,
carry: means the floppy disk used for taking stuff between machines, and
pcl: means the logical disk with PCL on it.  Does that make sense to
you?  I could also point out that the Macintosh already allows you to
have two volumes with the same name and (usually!) provides mechanisms
(such as the Drive button in the Standard File dialog) to allow you
to disambiguate.

    How about using "!" as the host separator?

That's current practice in Coral (except I gather you currently throw
away the host and don't do anything with it), but might be considered
poor in the standard since ! is one of the characters that Common Lisp
has been careful not to use for anything and leave for the users.

Another thing we could do is to make logical pathname namestrings
more distinctive; instead of starting with a word that has been defined
as a logical pathname host name, they could start with some character.
However, I have been unable to think of any character that would not
conflict with existing use in some file system.

I'm amenable to alternative syntax suggestions.  I'll be surprised if
anyone comes up with a good one, though, since this has been explored
before without success.  I think we just have to grab some syntactic
space for logical pathnames.

The other thing we could do is not standardize logical pathname
namestrings at all, but require some other construct to be used, perhaps
a make-pathname call or a new function (logical-pathname "string").  I
think that would be very ugly and I'd like to avoid it.