For OpenVMS long filename support, I will need to set the macro MAXPATHLEN to the proper size of either 256 or 4096 depending on the platform and version.

In order to do that through other macros, rmsdef.h would need to be included in vmsish.h instead of in vms.h and other modules.


Also to fix several problems seen in the glob support on OpenVMS and add proper EFS character support, I need to make similar changes to it as in the submitted patches to the Perl_readdir and Perl_opendir routines.

Glob is currently broken for 'foo[xxx]' and the './foo/*' cases, which are currently not being tested for in the Perl self tests.

It looks like rather than making the new routines public instead of static, it may be better to do what Craig Berry suggested earlier, to move the VMS specific glob code from doio.c into vms.c. That way the optimizer can work at it's best and inline/trim several commonly used subroutines.

So what I am looking at doing is creating a routine named:

PerlIO *
Perl_vms_start_glob
   (pTHX_ SV *tmpglob,
    IO *io,
    SV * const tmpcmd,
    PerlIO *fp)

in vms/vms.c and then moving the vms glob code there, and have Perl_start_glob() call it.

And then I can start fixing the VMS to UNIX conversions to handle EFS characters properly. With the EFS escape characters, it is not practical to scan a file specification backwards for delimiter characters, so those conversions need to be changed to use SYS$FILESCAN for finding the delimiters.

-John
[EMAIL PROTECTED]
Personal Opinion Only

Reply via email to