HELP UNIX_FILENAMES                                   John Gibson Jul 1985

From Version 10.3 of POPLOG, most parts of the system that use filenames
will accept them in Unix format. The translation of Unix format to VMS
format is done by the procedure SYSFILEOK and by the operator DIR_><, as
follows:

A Unix top-level directory is equated to a disk specification in VMS. Thus
in general, the translation for an absolute pathname is

            /aaa/bbb/ccc/ddd  ---->   aaa:[bbb.ccc]ddd

while for a relative pathname,

            aaa/bbb/ccc/ddd   ---->   [.aaa.bbb.ccc]ddd

etc.  When a pathname begins with a '$', this is taken to flag an
environment variable (as in Unix POPLOG), and (since all disk specs in VMS
are tried as logical names), the following component is treated as a disk
spec. E.g.

    $usepop/pop/lib/auto/nl.p  ---->  usepop:[pop.lib.auto]nl.p

When the pathname is known to be directory, not an actual file name, the
last component will be treated as a directory.  This happens for the first
argument to DIR_><, e.g.

            '/aaa/bbb/ccc/ddd' dir_>< '' =>
            *** aaa:[bbb.ccc.ddd]

whereas the second argument is treated as a file name:

            '' dir_>< '/aaa/bbb/ccc/ddd' =>
            *** aaa:[bbb.ccc]ddd

The translation performed by "sysfileok" also assumes a file name:

            sysfileok('/aaa/bbb/ccc/ddd') =>
            *** aaa:[bbb.ccc]ddd

Various other little things are coped with, e.g. '..' translates to '-':

            sysfileok('../foo') =>
            ** [.-]foo

            '../foo' dir_>< '' =>
            ** [.-.foo]

etc. Since there is no usual equivalent in Unix terms of the disk-less VMS
pathname

            [aaa.bbb.ccc]

(it would be 'aaa/bbb/ccc' but with the current top-level directory
prefixed), an empty environment variable name is taken to mean 'sys$disk',
e.g.

            '$/aaa/bbb/ccc'

is the same as

            '$sys$disk/aaa/bbb/ccc'

etc. Also, the top-level Unix directory /tmp is translated as
'sys$scratch', e.g.

            sysfileok('/tmp/foo') =>
            ** sys$scratch:foo
