Just a quick update: I think that I've found the smoking gun here.
Note that with a vms.c that is equipped with the following .+printf()s

This is not a patch
$ gdiff -u vms.c;1 vms.c
--- vms.c;1     Tue Mar 14 15:56:14 2000
+++ vms.c       Tue Mar 14 19:02:03 2000
@@ -4549,6 +4549,7 @@
 bool
 Perl_cando(pTHX_ Mode_t bit, Uid_t effective, Stat_t *statbufp)
 {
.+printf("statbufp is now %d\n",statbufp);
   if (statbufp == &PL_statcache) return 
cando_by_name(bit,effective,namecache);
   else {
     char fname[NAM$C_MAXRSS+1];
@@ -4562,11 +4563,14 @@
     devdsc.dsc$w_length = strlen(((Stat_t *)statbufp)->st_devnam);
     namdsc.dsc$a_pointer = fname;
     namdsc.dsc$w_length = sizeof fname - 1;
.+printf("st_devnam is now %s\n",((Stat_t *)statbufp)->st_devnam);

     retsts = lib$fid_to_name(&devdsc,&(((Stat_t *)statbufp)->st_ino),
                              &namdsc,&namdsc.dsc$w_length,0,0);
.+printf("retsts is now %d\n",retsts);
     if (retsts & 1) {
       fname[namdsc.dsc$w_length] = '\0';
.+printf("gonna call cando with fname of %s\n",fname);
       return cando_by_name(bit,effective,fname);
     }
.     else if (retsts == SS$_NOSUCHDEV || retsts == SS$_NOSUCHFILE) {
Not a patch.

I see this toward the bottom of a `MMS/macro=("__DEBUG__=1")` build:

Link 
/Trace/Debug/Map/Full/Cross/NoDebug/Trace/NoMap/NoFull/NoCross/Exe=SYS$DISK:[]MINIPERL.EXE
 miniperlmain.obj, DBGlibperl.olb/Library/Include=globals 
,[]crtl.opt/Options
MCR Sys$Disk:[]miniperl.exe "-I[.lib]" [.VMS]Writemain.pl "DynaLoader Socket"
statbufp is now 285880
st_devnam is now _SNFRN$DKB100
retsts is now 1
gonna call cando with fname of USER:[VMSPERL.VMS]WRITEMAIN.PL;1
Fatal VMS error (status=114762) at DKB100:[VMSPERL]VMS.C;11, line 4678.
%RMS-E-DNF, directory not found
-NONAME-W-NOMSG, Message number 00000000
%MMS-F-ABORT, For target PERLMAIN.C, CLI returned abort status: %X0001C04A.
-RMS-E-DNF, directory not found


Thus lib$fid_to_name() apparently feels compelled to change a perfectly OK 
device name doing s/\Q_SNFRN$DKB100\E/USER/ for some odd reason.  The bug is 
Compaq's and I now have to hunt up a patch :-{

Peter Prymmer

Reply via email to