At 02:18 PM 3/13/00 -0800, Peter Prymmer replied to me off-list:
> > BTW, did you ever solve the dir not found error in Perl 5.6's vms.c?
>
>No.  I punted on the issue and sent a patch to vmsperl this morning.
>It is a wacky large value that I see on the return from sys$check_access.

Ah, I see the patch now.  It's actually not such a wacky value:

$ write sys$output f$message(114762)
%RMS-E-DNF, directory not found

or 

$ sea rmsdef.h rms$_dnf
#define RMS$_DNF 114762

but it's very wacky that you get it under the circumstances you do (but 
perhaps that's all you meant).

In any case, the code in vms.c appears to be trying to account for all the 
return values from sys$check_access that translate to "ain't no such thing." 
However, dir not found isn't in the list.  This patch adds it; I wonder if 
that's what's needed?

--- vms.c;-0    Sun Mar 12 19:30:17 2000
+++ vms.c       Mon Mar 13 16:36:12 2000
@@ -4648,7 +4648,7 @@
    retsts = sys$check_access(&objtyp,&namdsc,&usrdsc,armlst);
    if (retsts == SS$_NOPRIV      || retsts == SS$_NOSUCHOBJECT ||
        retsts == SS$_INVFILFOROP || retsts == RMS$_FNF || retsts == RMS$_SYN ||
-      retsts == RMS$_DIR        || retsts == RMS$_DEV) {
+      retsts == RMS$_DIR        || retsts == RMS$_DEV || retsts == RMS$_DNF) {
      set_vaxc_errno(retsts);
      if (retsts == SS$_NOPRIV) set_errno(EACCES);
      else if (retsts == SS$_INVFILFOROP) set_errno(EINVAL);
End of Patch.

I'm still curious what directory it's not finding.  If you ever have a 
chance to do a debug build, an "EXAM/ASCIZ namdsc.dsc$a_pointer" just before 
it calls sys$check_access could be informative.

_______________________________________________
Craig A. Berry                                   
mailto:[EMAIL PROTECTED]

Reply via email to