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