[net.eunice] Unity and related topics

bcw (09/07/82)

From:	Bruce C. Wright @ Duke University
Re:	Unity & similar topics

One of the most obvious problems with the emulation of Unix by
Eunice is the fact that Eunice uses VMS files to put its Unix-
like files into on a one-to-one basis.  This means that Eunice
must either choose to use VMS file names, and interpret the VMS
directory structure, or it must maintain its own directory
structure (with all the problems that that implies).  Eunice uses
the first approach, which means that Eunice file names are limited
to alphanumerics (and only lower-case at that since VMS does not
distinguish between cases in file names), and that file names
are limited to 9 characters if they don't have a "." character,
and 13 characters if they do have a "." character.  In addition,
there can be no more than 3 characters after the "." since this
is mapped into a VMS file extension.

My question is how the Unity product avoids this problem.  I can
think of three ways to get around the problem, none of them very
satisfactory (in my view).  One would be to maintain a separate
directory structure (as above), but that would mean that you would
have to either avoid things like renaming and deleting Unity files
with VMS commands, or you would have to edit the command tables or
create aliases for the "delete" and "rename" commands (but this
will not fix the problem with programs which call the system services
directly).  Another would be to maintain the Unix-like files in a
single, HUGE file.  This strikes me as quite unsatisfactory since
there would have to be code to handle cross-update of that file (even
if you have a single copy for each user [!!!] you'd have to lock out
different processes for the same user), plus there would be problems
moving between the Unix files and VMS (otherwise you'd just have two
independent systems running - you'd have to use either one or the
other but couldn't really use both at once).  The third would be to
dedicate an entire disk drive and then use as the second choice above.
This has all the disadvantages of (2) above plus probably requiring
the active cooperation of the system administration, but it would be
moderately faster and could possibly be made somewhat cleaner by
writing something like a separate file handler process similar to
F11ACP which handles the VMS file structure.

None of these alternatives look like they would be really nice from
the user's point of view (let alone the point of view of the system
administrator).  Does Unity use one of these (in which case I must
be forced to conclude that it's less nice than claimed), or have they
found another way around the dilemma?

			Bruce C. Wright @ Duke University

ARPAVAX:mo (09/09/82)

Unity maps filenames in a way which uses the VMS names, but allows
full Unix transparency.  When a filename is allowable as a VMS filename,
it is used as-is.  When it contains non-RAD50 characters, it is mapped
into a unique name of a very specific form.  There is a table of these
translations kept in a file in the directory.  This sounds somewhat hokey,
but turns out to win quite often. The number of times it gets invoked
isn't that bad, and "ls" is modified to know about these peculiar names
and not display them (sort of like "." files).  A VMS DIR command will
show them, but the normal "ls" doesn't.  The only thing I can't figure
out how to do is real links.  Since VMS doesn't have them, I can't
see an easy way to do them (doesn't mean the haven't found a way!),
but you can do symbolic links (but I don't know if they did that).
Anyway, real Unix filename transparency is a big win, and the mechanism
Unity uses works out pretty well, or seems to.
	-Mike