Nicholas Clark wrote:
Currently the core uses File::Spec inside the test running script, t/TEST,
that VMS uses. If I understand perlvms.pod correctly, perl on VMS can
understand Unix-like pathnames directly.

I'd like to remove File::Spec from t/TEST, as it's something complex run too
early in testing. Would the appended change work on VMS? It assumes that

As the current t/TEST is used now, I think it is passed the starting file specification in VMS format. So on VMS you still need a VMS::Filespec::unixify to convert the input path parameter(s) to the test.

1: relative pathnames, Unix style, work

Those mostly work. Testing would be needed to verify that these work for the pathnames that show up for t/TEST.

2: readdir returns '.', '..' and directories in Unix format

I think we would need to verify that also. I have been mostly focused on making Perl work with Unix file specifications using the Extended Character set.

In the default/traditional mode of Perl on VMS, it was deemed acceptable for routines to return VMS format paths on output even when given Unix format paths on input. With the new Unix compatible mode, that should not happen.

Is that assuming to much? Would a subdirectory "foo" actually be returned as
"foo." or "foo.DIR"?

In the default/traditional mode of Perl on VMS, subdirectory "foo" will be returned as "foo.dir" when readdir() or glob operation is given a UNIX format path.

It is a bug that we can not remove because there may be existing perl modules that depend on it being present.

Also in the default/traditional mode of Perl on VMS, file specifications are converted to lower case. The older file system on VMS only stores file names in uppercase, and code in VMS.c would convert them to lowercase for better Unix compatibility.

When Perl on VMS is operating in the Extended Character Set mode with case preservered, then subdirectory "foo" will return "foo", and "FOOBAR" will be returned as "FOOBAR", provided that the Perl directory is on a disk with the newer file system and that the directory was created with the correct case.

I have noticed that some of the files and directories created by the Perl build procedure on VMS are in the wrong case.

VMS by default does not pay attention to the case when looking up a file, but if something is doing a directory lookup, they will get either the old behavior of all lowercase names, or the new behavior of exactly the case that is on the disk.

When I am doing the tests, I set the mode that Perl is in before running all the tests.

(I've also attached the entire file TEST, if anyone wants to try, and doesn't
have a patch tool on VMS. You can get a snapshot of blead from
http://perl5.git.perl.org/perl.git/snapshot/HEAD.tar.gz  )

No attachment showed up.

I will try to do a build of blead sometime early this week to see how it works on VMS/Alpha.

I'm not subscribed to the vmsperl list, so please Cc: me on responses.

Nicholas Clark

-John
wb8...@qsl.net
Personal Opinion Only

Reply via email to