Mark Berryman wrote:
!However, I did manage to track down the problem. Here are the
!variables:
!
!First, the command line:
!MCR [---]miniperl.exe [-.bin]enc2xs -"Q" -"O" -o BYTE_T.C -f byte_t.fnm
!
!Second, DECC$ARGV_PARSE_STYLE is defined. This logical removes the need
!to quote mixed-case or uppercase arguments to C programs on VMS.
!
!Third, the following check in [.EXT.ENCODE.BIN]ENC2XS.:
!if ($cname =~ /\.(c|xs)$/)
!
!So, with the logical name defined, the filename BYTE_T.C was not
!converted to lowercase but the code only accepted the file as a C file
!if the extension was lowercase. Bad code. Bad. Bad.
Aha - we've not extensively tested the perl build with the new logical
names
like DECC$ARGV_PARSE_STYLE defined and I certainly think that
we should. Here is a unified diff taken against perl-5.8.1-RC3 that
implements the changes you've described. My one source of concern
is the possible change in behavior on MSWin32 for the pod*.PL extraction
and the possible changes for enc2xs running on 'dos', 'os2', or 'MSWin32'.
Mind you, by inspection I don't think that there is a problem, but it can
be difficult to predict. If you have access to a GNU patch program (such
as on linux, *BSD, or Cygwin on Windows) you should be able to apply
this unified diff (note: GNU patch understands how to apply unified
diffs, Unix vendor patch programs typically only understand context
diffs not unified). It would then be helpful for someone to verify that
this patch does not break the build on Windows:
diff -ru perl-5.8.1-RC3.orig/ext/Encode/bin/enc2xs perl-5.8.1-RC3/ext/Encode/bin/enc2xs
--- perl-5.8.1-RC3.orig/ext/Encode/bin/enc2xs 2003-07-10 02:10:42.000000000 -0400
+++ perl-5.8.1-RC3/ext/Encode/bin/enc2xs 2003-08-01 09:40:47.335001000 -0400
@@ -159,7 +159,7 @@
my ($doC,$doEnc,$doUcm,$doPet);
-if ($cname =~ /\.(c|xs)$/)
+if ($cname =~ /\.(c|xs)$/i) # VMS may have upcased filenames with
DECC$ARGV_PARSE_STYLE defined
{
$doC = 1;
$dname =~ s/(\.[^\.]*)?$/.exh/;
diff -ru perl-5.8.1-RC3.orig/pod/pod2usage.PL perl-5.8.1-RC3/pod/pod2usage.PL
--- perl-5.8.1-RC3.orig/pod/pod2usage.PL 2003-07-10 02:12:48.000000000 -0400
+++ perl-5.8.1-RC3/pod/pod2usage.PL 2003-08-01 09:42:56.421029000 -0400
@@ -15,9 +15,8 @@
# This is so that make depend always knows where to find PL derivatives.
$origdir = cwd;
chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$// if ($^O eq 'os2' or $^O eq 'dos'); # "case-forgiving"
-$file =~ s/\.pl$/.com/ if ($^O eq 'VMS'); # "case-forgiving"
+($file = basename($0)) =~ s/\.PL$//i;
+$file .= '.COM' if ($^O eq 'VMS');
open OUT,">$file" or die "Can't create $file: $!";
diff -ru perl-5.8.1-RC3.orig/pod/podselect.PL perl-5.8.1-RC3/pod/podselect.PL
--- perl-5.8.1-RC3.orig/pod/podselect.PL 2003-07-10 02:12:48.000000000 -0400
+++ perl-5.8.1-RC3/pod/podselect.PL 2003-08-01 09:42:04.578003000 -0400
@@ -15,9 +15,8 @@
# This is so that make depend always knows where to find PL derivatives.
$origdir = cwd;
chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$// if ($^O eq 'os2' or $^O eq 'dos'); # "case-forgiving"
-$file =~ s/\.pl$/.com/ if ($^O eq 'VMS'); # "case-forgiving"
+($file = basename($0)) =~ s/\.PL$//i;
+$file .= '.COM' if ($^O eq 'VMS');
open OUT,">$file" or die "Can't create $file: $!";
End of Patch.
Here it is again as a compressed MIME attachment
(I enclose this since the Email program I am required
to use tends to wrap clear text lines rendering
patches useless):
(See attached file: decc_argv_parse_style.patch)
If that works out to your liking then send it in to [EMAIL PROTECTED]
being sure to specify that there could be an affect on Windows builds.
Thanks very much for testing the DECC$ARGV_PARSE_STYLE
case. I am sure others will appreciate it (I have the impression it
will be heavily used by software shops predominated by Windows
and Unix programmers who request things like ODS-5 etc.).
Peter Prymmer
decc_argv_parse_style.patch
Description: Binary data
