Craig and Dan,

FWIW, I believe that there was a long-standing bug in VMS distributions
causing the backlinked name on the common rooted system directories to
switch from VMS$COMMON.dir, which is where it should be, to SYSCOMMON.DIR,
which is the bogus, or alias, directory. You can see this with the dump
utility:

$ DUMP/HEADER/BLOCK:COUNT:0 sys$sysdevice:[000000]vms$common.dir

$ DUMP/HEADER/BLOCK:COUNT:0 sys$sysdevice:[sys0]syscommon.dir

These are both the same entity (on my system disk, FID 15,1,0). The file
header IDENTIFICATION area will has the file spec (hopefully,
vms$common.dir;1); otherwise, you have this problem.

There are various articles on DSNLINK telling you how to work around this,
to get the back-linked name fixed up again. It is worth doing for other
reasons, but this is one of the nastier side-effects I've seen.

I do belive that if your rooted directory structure on the system disk is
correct, you will see VMS$COMMON, and not SYSCOMMON, as the filename of the
backlinked directory, and you will then have a valid filespec, e.g.

DISK$DISK13:[VMS$COMMON.SYSEXE]LOGINOUT.EXE;1

will work as a valid filespec. Maybe this is what should be checked (and
will I be the one to try to write this code?).

 I have no doubt that in the general case of file aliases, there will be
those which thoroughly break lib$fid_to_name, as why else would they put a
warning (a thinly veiled threat, really) in the documentation?

Carl

-----Original Message-----
From: Craig A. Berry [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 21, 2000 4:55 PM
To: Dan Sugalski
Cc: [EMAIL PROTECTED]
Subject: RE: Perl_cando(), rooted logicals, and volume labels

$ r fidvoltest
Enter a complete path to a known file: sys$common:[sysexe]loginout.exe
stat() says sys$common:[sysexe]loginout.exe is file 488, 2, 0 on device
_BUBBA$DRA0
lib$fid_to_name gives a resulting name of
DISK$DISK13:[SYSCOMMON.SYSEXE]LOGINOUT.EXE;1

but what lib$fid_to_name returns is of course not there because the SYSn 
part of the dirspec is missing:

$ dir DISK$DISK13:[SYSCOMMON.SYSEXE]LOGINOUT.EXE;1
%DIRECT-E-OPENIN, error opening DISK$DISK13:[SYSCOMMON.SYSEXE]LOGINOUT.EXE;1
as input
-RMS-E-DNF, directory not found
-SYSTEM-W-NOSUCHFILE, no such file

when what's really there is:

$ dir DISK$DISK13:[SYS0.SYSCOMMON.SYSEXE]LOGINOUT.EXE;1

Directory DISK$DISK13:[SYS0.SYSCOMMON.SYSEXE]

LOGINOUT.EXE;1      

Total of 1 file.

I suppose this is a result of the backlink problem we discussed earlier, 
i.e., SYSCOMMON.DIR refuses to acknowledge its parentage in SYSn, where n 
depends on what node in the cluster you're on.  In any case, if we start 
thrashing around in here to solve redirected volume logicals, we should also

try to figure out what to do with missing backlinks.  Ugh.

_______________________________________________
Craig A. Berry                                   
mailto:[EMAIL PROTECTED]

Reply via email to