Update ExtUtil-ParseXS to CPAN version 2.2206
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 13 Jul 2010 11:08:05 +0000 (12:08 +0100)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 13 Jul 2010 11:08:05 +0000 (12:08 +0100)
  [DELTA]

  2.2206 - Sun Jul  4 15:43:21 EDT 2010

  Bug fixes:

  - Make xsubpp accept the _ prototype (RT#57157) [Rafael Garcia-Suarez]

  - INCLUDE_COMMAND portability fixes for VMS (RT#58181) [Craig Berry]

  - INCLUDE_COMMAND fixes to detect non-zero exit codes (RT#52873)
    [Steffen Mueller]

Porting/Maintainers.pl
cpan/ExtUtils-ParseXS/Changes
cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
cpan/ExtUtils-ParseXS/lib/ExtUtils/xsubpp [changed mode: 0755->0644]

index a1e4458..224d615 100755 (executable)
@@ -592,7 +592,7 @@ use File::Glob qw(:case);
     'ExtUtils::ParseXS' =>
        {
        'MAINTAINER'    => 'kwilliams',
-    'DISTRIBUTION' => 'DAGOLDEN/ExtUtils-ParseXS-2.2205.tar.gz',
+    'DISTRIBUTION' => 'DAGOLDEN/ExtUtils-ParseXS-2.2206.tar.gz',
     'EXCLUDED'  => [ qw{
                        t/bugs/RT48104.xs
                                    t/bugs/typemap
index b7e7b0b..45b30a5 100644 (file)
@@ -1,5 +1,16 @@
 Revision history for Perl extension ExtUtils::ParseXS.
 
+2.2206 - Sun Jul  4 15:43:21 EDT 2010
+
+ Bug fixes:
+
+ - Make xsubpp accept the _ prototype (RT#57157) [Rafael Garcia-Suarez]
+
+ - INCLUDE_COMMAND portability fixes for VMS (RT#58181) [Craig Berry]
+
+ - INCLUDE_COMMAND fixes to detect non-zero exit codes (RT#52873)
+   [Steffen Mueller]
+
 2.2205 - Wed Mar 10 18:15:36 EST 2010
 
  Other:
index 4f9492a..385e2fb 100644 (file)
@@ -18,7 +18,7 @@ my(@XSStack); # Stack of conditionals and INCLUDEs
 my($XSS_work_idx, $cpp_next_tmp);
 
 use vars qw($VERSION);
-$VERSION = '2.2205';
+$VERSION = '2.2206';
 $VERSION = eval $VERSION if $VERSION =~ /_/;
 
 use vars qw(%input_expr %output_expr $ProtoUsed @InitFileCode $FH $proto_re $Overload $errors $Fallback
@@ -74,7 +74,7 @@ sub process_file {
   ($XSS_work_idx, $cpp_next_tmp) = (0, "XSubPPtmpAAAA");
   @InitFileCode = ();
   $FH = Symbol::gensym();
-  $proto_re = "[" . quotemeta('\$%&*@;[]') . "]" ;
+  $proto_re = "[" . quotemeta('\$%&*@;[]_') . "]" ;
   $Overload = 0;
   $errors = 0;
   $Fallback = '&PL_sv_undef';
@@ -1488,6 +1488,7 @@ sub PROTOTYPES_handler ()
 
 sub PushXSStack
   {
+    my %args = @_;
     # Save the current file context.
     push(@XSStack, {
                    type            => 'file',
@@ -1498,6 +1499,8 @@ sub PushXSStack
                    Filename        => $filename,
                    Filepathname    => $filepathname,
                    Handle          => $FH,
+                    IsPipe          => scalar($filename =~ /\|\s*$/),
+                    %args,
                   }) ;
 
   }
@@ -1543,7 +1546,7 @@ sub INCLUDE_handler ()
 EOF
 
     $filename = $_ ;
-    $filepathname = "$dir/$filename";
+    $filepathname = File::Spec->catfile($dir, $filename);
 
     # Prime the pump by reading the first
     # non-blank line
@@ -1557,19 +1560,31 @@ EOF
     $lastline_no = $. ;
   }
 
+sub QuoteArgs {
+    my $cmd = shift;
+    my @args = split /\s+/, $cmd;
+    $cmd = shift @args;
+    for (@args) {
+       $_ = q(").$_.q(") if !/^\"/ && length($_) > 0;
+    }
+    return join (' ', ($cmd, @args));
+  }
+
 sub INCLUDE_COMMAND_handler ()
   {
     # the rest of the current line should contain a valid command
 
     TrimWhitespace($_) ;
 
+    $_ = QuoteArgs($_) if $^O eq 'VMS';
+
     death("INCLUDE_COMMAND: command missing")
       unless $_ ;
 
     death("INCLUDE_COMMAND: pipes are illegal")
       if /^\s*\|/ or /\|\s*$/ ;
 
-    PushXSStack();
+    PushXSStack( IsPipe => 1 );
 
     $FH = Symbol::gensym();
 
@@ -1588,7 +1603,8 @@ sub INCLUDE_COMMAND_handler ()
 EOF
 
     $filename = $_ ;
-    $filepathname = "$dir/$filename";
+    $filepathname = $filename;
+    $filepathname =~ s/\"/\\"/g;
 
     # Prime the pump by reading the first
     # non-blank line
@@ -1608,7 +1624,7 @@ sub PopFile()
 
     my $data     = pop @XSStack ;
     my $ThisFile = $filename ;
-    my $isPipe   = ($filename =~ /\|\s*$/) ;
+    my $isPipe   = $data->{IsPipe};
 
     -- $IncludedFiles{$filename}
       unless $isPipe ;
old mode 100755 (executable)
new mode 100644 (file)