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:
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
($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';
sub PushXSStack
{
+ my %args = @_;
# Save the current file context.
push(@XSStack, {
type => 'file',
Filename => $filename,
Filepathname => $filepathname,
Handle => $FH,
+ IsPipe => scalar($filename =~ /\|\s*$/),
+ %args,
}) ;
}
EOF
$filename = $_ ;
- $filepathname = "$dir/$filename";
+ $filepathname = File::Spec->catfile($dir, $filename);
# Prime the pump by reading the first
# non-blank line
$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();
EOF
$filename = $_ ;
- $filepathname = "$dir/$filename";
+ $filepathname = $filename;
+ $filepathname =~ s/\"/\\"/g;
# Prime the pump by reading the first
# non-blank line
my $data = pop @XSStack ;
my $ThisFile = $filename ;
- my $isPipe = ($filename =~ /\|\s*$/) ;
+ my $isPipe = $data->{IsPipe};
-- $IncludedFiles{$filename}
unless $isPipe ;