Subject: | shell_split doesn't shell split |
on HPUX the env LDOPTS setting has two words in it.
that ends up being
env LDOPTS="+s +b /usr/local/...." /usr/bin/ld ...
shell_split splits on single whitespace, and this messes up xs builds.
Specifically, Pod::Coverage doesn't fly. I haven't tried anything else,
but I suspect any xs stuff using ld will die.
anyways, I've submitted a patch takes care of it.
shell_split does proper shell splitting after the patch is applied.
*** lib/Module/Build/Base.pm.orig 2004-10-05 16:00:50.000000000 -0400
--- lib/Module/Build/Base.pm 2004-10-05 16:45:06.000000000 -0400
***************
*** 2430,2437 ****
return $self->shell_split($string);
}
! sub shell_split {
! return split ' ', $_[1]; # XXX This is naive - needs a fix
}
sub stdout_to_file {
--- 2430,2498 ----
return $self->shell_split($string);
}
! #sub shell_split {
! #return split ' ', $_[1]; # XXX This is naive - needs a fix
! #}
!
! sub tbx_k_tokenize($) {
! my $line = shift;
! return () if !defined($line);
!
! my @words=();
!
! while ($line =~ / \G (^|\s+) ( (?: ' # ' ## keep mmm happy (it doesn't seem to know about regexp)'
! (?: [^\\'] | \\. )* # ' ] )
! ' # ')
! |
! " # "
! (?: [^\\"] | \\. )* # " ] )
! " # ")
! |
! (?: [^"'\s\\] | \\ . )* # " ] )
! )+ )
! /gx ) {
!
! my ($punctuation, $token) = ($1, $2);
! push @words, $punctuation if $punctuation =~ /\S/;
! push @words, $token if $token ne '';
! }
!
! return @words;
! }
!
! sub tbx_k_dequote($) {
! my $word = shift;
! return '' if !defined($word);
!
! my @pieces=();
!
! while ($word =~ / \G ( ' # ' ## keep mmm happy (it doesn't seem to know about regexp)'
! (?: [^\\'] | \\. )* # ' ] )
! ' # ')
! |
! " # "
! (?: [^\\"] | \\. )* # " ] )
! " # ")
! |
! (?: [^"'\s\\] | \\ . )+ # " ] )
! )
! /gx ) {
!
! my $token = $1;
!
! $token = substr($token,0,1) eq substr($token,-1,1) ? substr($token,1,-1) : substr($token,1)
! if length($token)>1 && (substr($token,0,1) eq "'" || substr($token,0,1) eq '"');
! $token =~ s/\\(.)/$1/g;
!
! push @pieces, $token if $token ne '';
! }
!
! return join('', @pieces);
! }
!
! sub shell_split($$) {
! my @w = tbx_k_tokenize( $_[1] );
! return map { tbx_k_dequote( $_ ) } @w;
}
sub stdout_to_file {