Re: VMS and Unix pathnames

"John E. Malmberg" <[email protected]>
Newsgroups gmane.comp.lang.perl.ports.vms
Message-ID <[email protected]>
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
[email protected]
Personal Opinion Only
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.