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