mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-24 23:17:55 +00:00
Fixed bug #54878: tab should split context groups in -X
This commit is contained in:
parent
8286e771ec
commit
7cc920e738
22
src/parallel
22
src/parallel
|
@ -2163,6 +2163,8 @@ sub arrayindex {
|
||||||
# Input:
|
# Input:
|
||||||
# $arr_ref1 = ref to @array1 to search in
|
# $arr_ref1 = ref to @array1 to search in
|
||||||
# $arr_ref2 = ref to @array2 to search for
|
# $arr_ref2 = ref to @array2 to search for
|
||||||
|
# Returns:
|
||||||
|
# $pos = position of @array1 in @array2, -1 if not found
|
||||||
my ($arr_ref1,$arr_ref2) = @_;
|
my ($arr_ref1,$arr_ref2) = @_;
|
||||||
my $array1_as_string = join "", map { "\0".$_ } @$arr_ref1;
|
my $array1_as_string = join "", map { "\0".$_ } @$arr_ref1;
|
||||||
my $array2_as_string = join "", map { "\0".$_ } @$arr_ref2;
|
my $array2_as_string = join "", map { "\0".$_ } @$arr_ref2;
|
||||||
|
@ -2282,8 +2284,8 @@ sub __QUOTING_ARGUMENTS_FOR_SHELL__ {}
|
||||||
sub shell_quote {
|
sub shell_quote {
|
||||||
# Input:
|
# Input:
|
||||||
# @strings = strings to be quoted
|
# @strings = strings to be quoted
|
||||||
# Output:
|
# Returns:
|
||||||
# @shell_quoted_strings = string quoted with \ as needed by the shell
|
# @shell_quoted_strings = string quoted as needed by the shell
|
||||||
return wantarray ?
|
return wantarray ?
|
||||||
(map { Q($_) } @_)
|
(map { Q($_) } @_)
|
||||||
: (join" ",map { Q($_) } @_);
|
: (join" ",map { Q($_) } @_);
|
||||||
|
@ -2330,7 +2332,11 @@ sub shell_quote_scalar_csh {
|
||||||
|
|
||||||
sub shell_quote_scalar_default {
|
sub shell_quote_scalar_default {
|
||||||
# Quote for other shells (Bourne compatibles)
|
# Quote for other shells (Bourne compatibles)
|
||||||
my ($par) = $_[0];
|
# Inputs:
|
||||||
|
# $string = string to be quoted
|
||||||
|
# Returns:
|
||||||
|
# $shell_quoted = string quoted as needed by the shell
|
||||||
|
my $par = $_[0];
|
||||||
if($par =~ /[^-_.+a-z0-9\/]/i) {
|
if($par =~ /[^-_.+a-z0-9\/]/i) {
|
||||||
$par =~ s/'/'"'"'/g; # "-quote single quotes
|
$par =~ s/'/'"'"'/g; # "-quote single quotes
|
||||||
$par = "'$par'"; # '-quote entire string
|
$par = "'$par'"; # '-quote entire string
|
||||||
|
@ -2424,6 +2430,10 @@ sub pQ {
|
||||||
|
|
||||||
sub unquote_printf {
|
sub unquote_printf {
|
||||||
# Convert \t \n \r \000 \0
|
# Convert \t \n \r \000 \0
|
||||||
|
# Inputs:
|
||||||
|
# $string = string with \t \n \r \num \0
|
||||||
|
# Returns:
|
||||||
|
# $replaced = string with TAB NEWLINE CR <ascii-num> NUL
|
||||||
$_ = shift;
|
$_ = shift;
|
||||||
s/\\t/\t/g;
|
s/\\t/\t/g;
|
||||||
s/\\n/\n/g;
|
s/\\n/\n/g;
|
||||||
|
@ -10053,8 +10063,8 @@ sub replace_placeholders {
|
||||||
# \257<...\257> or space
|
# \257<...\257> or space
|
||||||
$_
|
$_
|
||||||
} else {
|
} else {
|
||||||
# Split each space into a token
|
# Split each space/tab into a token
|
||||||
split /(?= )|(?<= )/
|
split /(?=\s)|(?<=\s)/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Split \257< ... \257> into own token
|
# Split \257< ... \257> into own token
|
||||||
|
@ -10091,7 +10101,7 @@ sub replace_placeholders {
|
||||||
my @ctxgroup;
|
my @ctxgroup;
|
||||||
for my $t (@tokens,"\0end") {
|
for my $t (@tokens,"\0end") {
|
||||||
# \0end = last token was end of tokens.
|
# \0end = last token was end of tokens.
|
||||||
if($t eq " " or $t eq "\0end" or $t eq "\0spc") {
|
if($t eq "\t" or $t eq " " or $t eq "\0end" or $t eq "\0spc") {
|
||||||
# Context group complete: Replace in it
|
# Context group complete: Replace in it
|
||||||
if(grep { /^\257</ } @ctxgroup) {
|
if(grep { /^\257</ } @ctxgroup) {
|
||||||
# Context group contains a replacement string:
|
# Context group contains a replacement string:
|
||||||
|
|
Loading…
Reference in a new issue