X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/3f6e436ff0889330b44f87823bf8f712a6da6aba..aeb9a3099f47d5e24472ca314b82cf194a0f7862:/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm index fedc494..0213e3b 100644 --- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm +++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm @@ -11,7 +11,7 @@ use Symbol; our $VERSION; BEGIN { - $VERSION = '3.27'; + $VERSION = '3.33'; } use ExtUtils::ParseXS::Constants $VERSION; use ExtUtils::ParseXS::CountLines $VERSION; @@ -579,7 +579,7 @@ EOF } ); } else { - print "\t$class *"; + print "\t" . map_type($self, "$class *"); $self->{var_types}->{"THIS"} = "$class *"; $self->generate_init( { type => "$class *", @@ -686,7 +686,7 @@ EOF var => $_, do_setmagic => $self->{DoSetMagic}, do_push => undef, - } ) for grep $self->{in_out}->{$_} =~ /OUT$/, keys %{ $self->{in_out} }; + } ) for grep $self->{in_out}->{$_} =~ /OUT$/, sort keys %{ $self->{in_out} }; my $prepush_done; # all OUTPUT done, so now push the return value on the stack @@ -1577,6 +1577,25 @@ sub QuoteArgs { return join (' ', ($cmd, @args)); } +# code copied from CPAN::HandleConfig::safe_quote +# - that has doc saying leave if start/finish with same quote, but no code +# given text, will conditionally quote it to protect from shell +{ + my ($quote, $use_quote) = $^O eq 'MSWin32' + ? (q{"}, q{"}) + : (q{"'}, q{'}); + sub _safe_quote { + my ($self, $command) = @_; + # Set up quote/default quote + if (defined($command) + and $command =~ /\s/ + and $command !~ /[$quote]/) { + return qq{$use_quote$command$use_quote} + } + return $command; + } +} + sub INCLUDE_COMMAND_handler { my $self = shift; $_ = shift; @@ -1598,7 +1617,8 @@ sub INCLUDE_COMMAND_handler { # If $^X is used in INCLUDE_COMMAND, we know it's supposed to be # the same perl interpreter as we're currently running - s/^\s*\$\^X/$^X/; + my $X = $self->_safe_quote($^X); # quotes if has spaces + s/^\s*\$\^X/$X/; # open the new file open ($self->{FH}, "-|", $_)