Better way to handle Unix compatibility modes must be found

[email protected] (Michael G Schwern)
Newsgroups perl.vmsperl,perl.makemaker
Message-ID <[email protected]>
John E. Malmberg wrote:
> Are you going to have time to look at the patches that I submitted to
> MakeMaker and Test::Simple?
> 
> These are to support VMS when the DECC$FILENAME_UNIX_REPORT and
> DECC$EFS_CHARSET and related options are active.
> 
> These options make Perl on VMS look more like Unix, including returning
> filenames in Unix syntax.  Path tools has already been updated to work
> in this mode.

I had a look at this, and I can't apply it.  It was bad enough having special
case code for VMS, now there's three different styles of VMS to be considered.

Here's the mass of detection code:

        use VMS::Feature;
        my $vms_unix_rpt = VMS::Feature::current("filename_unix_report");
        my $vms_efs      = VMS::Feature::current("efs_charset");
        my $vms_case     = VMS::Feature::current("efs_case_preserve");
        $Is{VMS_mode}  = 0 if $vms_unix_rpt;
        $Is{VMS_unix}  = 1 if $vms_unix_rpt;
        $Is{VMS_lc}    = 0 if $vms_case;
        $Is{VMS_noefs} = 0 if $vms_efs;

That mercifully doesn't include the work around if VMS::Feature isn't there.
There's no way to expect Perl programmers to stick all that in their code just
to accommodate VMS.

But this diff here illustrates the real problem:

-    is( $mm->{INSTALLVENDORMAN1DIR}, File::Spec->catdir('foo','bar'),
+    my $expect = File::Spec->catdir('foo','bar');
+    $expect = VMS::Filespec::vmspath($expect) if $Is_VMS;
+    is( $mm->{INSTALLVENDORMAN1DIR}, $expect,
                      'installvendorman1dir (in %Config) not modified' );

Now every call to File::Spec, which is supposed to generate a portable path,
has to have extra code tacked onto the end to do more work.  If that's
necessary then File::Spec::VMS should be doing it.

In conclusion, this should all be built into File::Spec::VMS.


-- 
ROCKS FALL! EVERYONE DIES!
	http://www.somethingpositive.net/sp05032002.shtml
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.