diff --git a/Makefile.am b/Makefile.am index f71628d9..ce3e0d5b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,11 +15,11 @@ tortest: make torresults torresults: - torsocks rsync -Hazv --progress --exclude authorized_keys --exclude .vagrant/ tortest:privat/parallel/testsuite/actual-results/ testsuite/actual-results/ + torsocks rsync -Hazv --progress tortest:privat/parallel/testsuite/actual-results/ testsuite/actual-results/ torsync: - torsocks rsync -Hazv --inplace --progress --exclude authorized_keys --exclude .vagrant/ --exclude actual-results --delete ./ tortest:privat/parallel/ + torsocks rsync -Hazv --exclude='*.{pdf,gz,bz2,html,deb}' --exclude authorized_keys --exclude .vagrant/ --exclude actual-results --delete ./ tortest:privat/parallel/ make tortest web: diff --git a/Makefile.in b/Makefile.in index 09a2b704..a679b393 100644 --- a/Makefile.in +++ b/Makefile.in @@ -784,10 +784,10 @@ tortest: make torresults torresults: - torsocks rsync -Hazv --progress --exclude authorized_keys --exclude .vagrant/ tortest:privat/parallel/testsuite/actual-results/ testsuite/actual-results/ + torsocks rsync -Hazv --progress tortest:privat/parallel/testsuite/actual-results/ testsuite/actual-results/ torsync: - torsocks rsync -Hazv --inplace --progress --exclude authorized_keys --exclude .vagrant/ --exclude actual-results --delete ./ tortest:privat/parallel/ + torsocks rsync -Hazv --exclude='*.{pdf,gz,bz2,html,deb}' --exclude authorized_keys --exclude .vagrant/ --exclude actual-results --delete ./ tortest:privat/parallel/ make tortest web: diff --git a/src/parallel b/src/parallel index ea93c793..b0757ef6 100755 --- a/src/parallel +++ b/src/parallel @@ -2768,7 +2768,7 @@ sub check_invalid_option_combinations() { } sub test_safe_chars { my $var = shift; - if($ENV{$var} =~ m{^[-a-z0-9_+,.%:/= ]*$}i) { + if($ENV{$var} =~ m{^[-a-z0-9_+,.%:/= ]*$}is) { # OK } else { unsafe_warn("\$$var can only contain [-a-z0-9_+,.%:/= ]."); @@ -2783,8 +2783,8 @@ sub check_invalid_option_combinations() { ::warning("--cat/--fifo fails under csh ". "if \$TMPDIR contains newline."); } - } elsif($ENV{'TMPDIR'} =~ /\257/) { - unsafe_warn("\$TMPDIR with \\257 (\257) is not supported."); + } elsif($ENV{'TMPDIR'} =~ /\177/) { + unsafe_warn("\$TMPDIR with \\177 (\177) is not supported."); } else{ test_safe_chars('TMPDIR'); } @@ -4583,7 +4583,7 @@ sub toggle_progress() { if($Global::all_jobs_done) { $eta = now()-$Global::start_time; } my $arg = $Global::newest_job ? $Global::newest_job->{'commandline'}-> - replace_placeholders(["\257<\257>"],0,0) : ""; + replace_placeholders(["\177<\177>"],0,0) : ""; $arg = decode_utf8($arg); my $eta_dhms = ::seconds_to_time_units($eta); my $bar_text = @@ -12024,7 +12024,7 @@ sub print_parset($) { # End: (done in wait_and_exit()) # )'`" print '[',::Q($self->{'commandline'}-> - replace_placeholders(["\257<\257>"],0,0)),']='; + replace_placeholders(["\177<\177>"],0,0)),']='; } elsif($Global::parset eq "array") { # Start: (done in parse_parset()) # eval "`echo 'myassoc=( @@ -13096,21 +13096,21 @@ sub replace_placeholders($$$$) { # \0spc = unquoted space # \0end = last token element # \0ign = dummy token to be ignored - # \257<...\257> = replacement expression + # \177<...\177> = replacement expression # " " = quoted space, that splits -X group # text = normal text - possibly part of -X group my $spacer = 0; my @tokens = grep { length $_ > 0 } map { - if(/^\257<|^ $/) { - # \257<...\257> or space + if(/^\177<|^ $/) { + # \177<...\177> or space $_ } else { # Split each space/tab into a token split /(?=\s)|(?<=\s)/ } } - # Split \257< ... \257> into own token - map { split /(?=\257<)|(?<=\257>)/ } + # Split \177< ... \177> into own token + map { split /(?=\177<)|(?<=\177>)/ } # Insert "\0spc" between every element # This space should never be quoted map { $spacer++ ? ("\0spc",$_) : $_ } @@ -13137,7 +13137,7 @@ sub replace_placeholders($$$$) { # $self is actually a CommandLine-object, # but it looks nice to be able to say {= $job->slot() =} my $job = $self; - # @replaced = tokens with \257< \257> replaced + # @replaced = tokens with \177< \177> replaced my @replaced; if($self->{'context_replace'}) { my @ctxgroup; @@ -13145,7 +13145,7 @@ sub replace_placeholders($$$$) { # \0end = last token was end of tokens. if($t eq "\t" or $t eq " " or $t eq "\0end" or $t eq "\0spc") { # Context group complete: Replace in it - if(grep { /^\257} + s{\177<(-?\d+)?(.*)\177>} { if($1) { # Positional replace @@ -13172,12 +13172,12 @@ sub replace_placeholders($$$$) { ($arg ? $arg->replace($2,$quote_arg,$self) : ""); } }sgxe) { - # Token is \257<..\257> + # Token is \177<..\177> } else { if($Global::escape_string_present) { - # Command line contains \257: - # Unescape it \257\256 => \257 - $a =~ s/\257\256/\257/g; + # Command line contains \177: + # Unescape it \177\256 => \177 + $a =~ s/\177\176/\177/g; } } $a @@ -13188,7 +13188,12 @@ sub replace_placeholders($$$$) { } else { # Context group has no a replacement string: Copy it once CORE::push @replaced, map { - $Global::escape_string_present and s/\257\256/\257/g; $_; + if($Global::escape_string_present) { + # Command line contains \177: + # Unescape it \177\176 => \177 + $a =~ s/\177\176/\177/g; + } + $_; } @ctxgroup; } # New context group @@ -13206,13 +13211,13 @@ sub replace_placeholders($$$$) { # Push output # repquote = no if {} first on line, no if $quote, yes otherwise for my $t (@tokens) { - if($t =~ /^\257} + s{\177<(-?\d+)?(.*)\177>} { if($1) { # Positional replace @@ -13235,7 +13240,7 @@ sub replace_placeholders($$$$) { } else { # No replacement CORE::push @replaced, map { - $Global::escape_string_present and s/\257\256/\257/g; $_; + $Global::escape_string_present and s/\177\176/\177/g; $_; } $t; } } @@ -13296,7 +13301,7 @@ sub new($) { @command = merge_rpl_parts(@command); # Protect matching inside {= perl expr =} - # by replacing {= and =} with \257< and \257> + # by replacing {= and =} with \177< and \177> # in options that can contain replacement strings: # @command, --transferfile, --return, # --tagstring, --workdir, --results @@ -13306,21 +13311,21 @@ sub new($) { @opt::filter) { # Skip if undefined defined($_) or next; - # Escape \257 => \257\256 - $Global::escape_string_present += s/\257/\257\256/g; + # Escape \177 => \177\176 + $Global::escape_string_present += s/\177/\177\176/g; # Needs to match rightmost left parens (Perl defaults to leftmost) # to deal with: {={==} and {={==}=} - # Replace {= -> \257< and =} -> \257> + # Replace {= -> \177< and =} -> \177> # # Complex way to do: - # s/{=(.*)=}/\257<$1\257>/g + # s/{=(.*)=}/\177<$1\177>/g # which would not work s[\Q$Global::parensleft\E # Match {= # Match . unless the next string is {= or =} # needed to force matching the shortest {= =} ((?:(?! \Q$Global::parensleft\E|\Q$Global::parensright\E ).)*?) \Q$Global::parensright\E ] # Match =} - {\257<$1\257>}gxs; + {\177<$1\177>}gxs; for my $rpl (sort { length $b <=> length $a } keys %Global::rpl) { # Replace long --rpl's before short ones, as a short may be a # substring of a long: @@ -13342,8 +13347,8 @@ sub new($) { /xs; $grp_regexp ||= ''; my $rplval = $Global::rpl{$rpl}; - while(s{( (?: ^|\257> ) (?: [^\257]*|[\257][^<>] )*? ) - # Don't replace after \257 unless \257> + while(s{( (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*? ) + # Don't replace after \177 unless \177> \Q$prefix\E $grp_regexp \Q$postfix\E} { # The start remains the same @@ -13366,7 +13371,7 @@ sub new($) { $set_args .= "\$_pAr_gRp$i = \"" . ::perl_quote_scalar($grp[$i]) . "\";"; } - $unchanged . "\257<" . $set_args . $rv . "\257>" + $unchanged . "\177<" . $set_args . $rv . "\177>" }gxes) { } # Do the same for the positional replacement strings @@ -13374,8 +13379,8 @@ sub new($) { if($posrpl =~ s/^\{//) { # Only do this if the shorthand start with { $prefix=~s/^\{//; - # Don't replace after \257 unless \257> - while(s{( (?: ^|\257> ) (?: [^\257]*|[\257][^<>] )*? ) + # Don't replace after \177 unless \177> + while(s{( (?: ^|\177> ) (?: [^\177]*|[\177][^<>] )*? ) \{(-?\d+) \s* \Q$prefix\E $grp_regexp \Q$postfix\E} { # The start remains the same @@ -13399,7 +13404,7 @@ sub new($) { $set_args .= "\$_pAr_gRp$i = \"" . ::perl_quote_scalar($grp[$i]) . "\";"; } - $unchanged . "\257<" . $position . $set_args . $rv . "\257>" + $unchanged . "\177<" . $position . $set_args . $rv . "\177>" }gxes) { } } @@ -13410,7 +13415,7 @@ sub new($) { replacement_counts_and_lengths($transfer_files, $return_files, $template_names, $template_contents, @command); - if("@command" =~ /^[^ \t\n=]*\257] )*?)\257> /\000/xs) { + while($c =~ s/ \177<( (?: [^\177]*|[\177][^<>] )*?)\177> /\000/xs) { # %replacecount = { "perlexpr" => number of times seen } # e.g { "s/a/b/" => 2 } $replacecount{$1}++; @@ -13511,7 +13516,7 @@ sub replacement_counts_and_lengths($$@) { } # Measure the length of the context around the {= perl expr =} # Use that {=...=} has been replaced with \000 above - # So there is no need to deal with \257< + # So there is no need to deal with \177< while($c =~ s/ (\S*\000\S*) //xs) { my $w = $1; $w =~ tr/\000//d; # Remove all \000's @@ -13528,7 +13533,7 @@ sub replacement_counts_and_lengths($$@) { # Options that can contain replacement strings defined($_) or next; my $t = $_; - while($t =~ s/ \257<( (?: [^\257]*|[\257][^<>] )* )\257> //xs) { + while($t =~ s/ \177<( (?: [^\177]*|[\177][^<>] )* )\177> //xs) { # %replacecount = { "perlexpr" => number of times seen } # e.g { "$_++" => 2 } # But for tagstring we just need to mark it as seen @@ -13551,14 +13556,14 @@ sub replacement_counts_and_lengths($$@) { if($sum == 0) { if(not @command) { # Default command = {} - @command = ("\257<\257>"); + @command = ("\177<\177>"); } elsif(($opt::pipe or $opt::pipepart) and not $opt::fifo and not $opt::cat) { # With --pipe / --pipe-part you can have no replacement last; } else { # Append {} to the command if there are no {...}'s and no {=...=} - push @command, ("\257<\257>"); + push @command, ("\177<\177>"); } } } @@ -13585,7 +13590,7 @@ sub get($) { $self->{'template_name'}, $self->{'template_contents'}, @$SQL::command_ref); - if("@command" =~ /^[^ \t\n=]*\257table(); - # For SQL encode the command with \257 space as split points - my $command = join("\257 ",@$command_ref); + # For SQL encode the command with \177 space as split points + my $command = join("\177 ",@$command_ref); my @v_cols = map { ", V$_" } (1..$self->max_number_of_args()); # Two extra value due to $seq, Exitval, Send my $v_vals = join ",", map { "?" } (1..$self->max_number_of_args()+4); @@ -15083,8 +15088,21 @@ sub get_record($) { # Save the sequence number to use when running the job $SQL::next_seq = $seq; $self->update("SET Exitval = ? WHERE Seq = ".$seq, -1220); - # Command is encoded with '\257 space' as splitting char - my @command = split /\257 /, shift @$val_ref; + # Command is encoded with '\177 space' as delimiter + my @command; + my $encoded_cmd = shift @$val_ref; + if($encoded_cmd =~ /\177 /) { + @command = split /\177 /, $encoded_cmd; + } else { + # (\257 space for backward compatability) + @command = split /\257 /, $encoded_cmd; + # Recode \257 => \177 + for (@command,@$val_ref) { + s/\257/\177>/g; + s/\257\256/\257/g; + } + } $SQL::command_ref = \@command; for (@$val_ref) { push @retval, Arg->new($_); diff --git a/testsuite/REQUIREMENTS b/testsuite/REQUIREMENTS index 3112a5e9..65aa5ae7 100644 --- a/testsuite/REQUIREMENTS +++ b/testsuite/REQUIREMENTS @@ -285,8 +285,10 @@ add_key_to_auth_key() { parallel --tag sshaddvagrant ::: centos8 freebsd13 freebsd14 rhel8 centos3 parallel --tag ssh -o StrictHostKeyChecking=accept-new vagrant@{} ::: parallel-server{1..4} centos3 cat ~/.ssh/*pub >> ~/.ssh/authorized_keys - # TODO find ipv6 - ipv6= + ipv6() { + ifconfig | perl -nE '/inet6 ([0-9a-f:]+) .*(host|global)/ and say $1' + } + ipv6=$(ipv6) parallel --tag ssh -o StrictHostKeyChecking=accept-new {} ::: lo localhost 172.27.27.1 127.0.0.1 ::1 $ipv6 # parallel sshpass -p vagrant ssh-copy-id vagrant@{} ::: parallel-server{1..4} centos3 @@ -640,7 +642,9 @@ misc() { echo Ciphers +3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com echo MaxStartups 100:30:1000 echo - echo freepl + echo strlncopy -> rsync + echo sqlite2 + echo echo 'set $withpassword' echo 'set $mysqlrootpassword in .passwords' echo '/usr/local/bin/parallel-20120822' diff --git a/testsuite/tests-to-run/niceload01.sh b/testsuite/tests-to-run/niceload01.sh index baeee5c5..e3903907 100755 --- a/testsuite/tests-to-run/niceload01.sh +++ b/testsuite/tests-to-run/niceload01.sh @@ -4,26 +4,72 @@ # # SPDX-License-Identifier: GPL-3.0-or-later +forceswap() { + perl -e ' + my $sleep_after = shift; + + # Only output if output is terminal + my $output = -t STDOUT; + + sub freekb { + my $free = `free|grep buffers/cache`; + my @a=split / +/,$free; + if($a[3] > 0) { + return $a[3]; + } + my $free = `free|grep Mem:`; + my @a=split / +/,$free; + if($a[6] > 0) { + return $a[6]; + } + die; + } + + sub swapkb { + my $swap = `free|grep Swap:`; + my @a=split / +/,$swap; + return $a[2]; + } + + my $swap = swapkb(); + my $lastswap = $swap; + my $free = freekb(); + my @children; + while($lastswap >= $swap) { + $output and print "Swap: $swap Free: $free"; + $lastswap = $swap; + $swap = swapkb(); + $free = freekb(); + my $pct10 = $free * 1024 * 10/100; + my $use = ($pct10 > 2_000_000_000 ? 2_000_000_000 : $pct10); + my $used_mem_single = "x"x($use/1000); + # Faster for large values + my $used_mem = "$used_mem_single"x1000; + my $child = fork(); + if($child) { + push @children, $child; + } else { + sleep 120; + exit(); + } + } + + $output and print "Swap increased $lastswap -> $swap\n"; + if($sleep_after) { + $output and print "Sleep $sleep_after\n"; + sleep $sleep_after; + } + kill "INT", @children; + ' $@ +} + echo '### Test niceload -q' niceload -q perl -e '$a = "works";$b="This $a\n"; print($b);' echo -freepl >/dev/null -freepl >/dev/null & -## # Force swapping -## MEMAVAIL=$(free | perl -ane '/buffers.cache:/ and print $F[3]') -## while [ $MEMAVAIL -gt 1000000 ] ; do -## BS=$(echo $MEMAVAIL/20 | bc) -## (seq 1 10 | parallel -j0 -N0 --timeout 15 nice nice dd if=/dev/zero bs=${BS}k '|' wc -c >/dev/null &) -## sleep 2 -## MEMAVAIL=$(free | perl -ane '/buffers.cache:/ and print $F[3]') -## echo $MEMAVAIL -## done - -#echo 1 | parallel --timeout 20 'seq 10000{} | gzip -1 | perl -e '\'\$a=join\"\",\<\>\;\ while\(1\)\{push\ @a,\$a\}\' - - -# niceload -q -l 5 perl -e '$a=join"",<>; while(1){push @a,$a}' & +# Force swapping +forceswap >/dev/null +forceswap >/dev/null & cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 -r echo '### --rm and --runmem' @@ -36,7 +82,7 @@ echo '### -N and --noswap. Must give 0' EOF # force load > 10 -while uptime | grep -v age:.[1-9][0-9].[0-9][0-9] >/dev/null ; do +while uptime | grep -Ev age:.[1-9][0-9]+.[0-9][0-9] >/dev/null ; do (timeout 5 nice perl -e 'while(1){}' 2>/dev/null &) done @@ -55,6 +101,3 @@ EOF #echo '### Test niceload -p' #sleep 3 & #nice-load -v -p $! - -killall freepl 2>/dev/null - diff --git a/testsuite/tests-to-run/parallel-local-0.3s.sh b/testsuite/tests-to-run/parallel-local-0.3s.sh index ba6a9057..61366dfb 100644 --- a/testsuite/tests-to-run/parallel-local-0.3s.sh +++ b/testsuite/tests-to-run/parallel-local-0.3s.sh @@ -897,9 +897,14 @@ par_results_json() { par_locale_quoting() { echo "### quoting in different locales" printf '\243`/tmp/test\243`\n' - printf '\243`/tmp/test\243`\n' | LC_ALL=zh_HK.big5hkscs xargs echo '$LC_ALL' + printf '\243`/tmp/test\243`\n' | + LC_ALL=zh_HK.big5hkscs xargs echo '$LC_ALL' # LC_ALL should be zh_HK.big5hkscs, but that makes quoting hard. - printf '\243`/tmp/test\243`\n' | LC_ALL=zh_HK.big5hkscs parallel -v echo '$LC_ALL' + ( + printf '\243`/tmp/test\243`\n' | + LC_ALL=zh_HK.big5hkscs parallel -v echo '$LC_ALL' 2>&1 + # Locale 'zh_HK.big5hkscs' is unsupported, and may crash the interpreter. + ) | G -av is.unsupported,.and.may.crash.the.interpreter. } par_PARALLEL_ENV() { diff --git a/testsuite/tests-to-run/parallel-local-10s.sh b/testsuite/tests-to-run/parallel-local-10s.sh index 66ec54cb..f594ba41 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -84,15 +84,23 @@ par_quote_special_results() { mkfs.fat mkfs.vfat mkfs.msdos mkfs.f2fs | perl -pe 's:(/dev/loop|par-test-loop)\S+:$1:g;s/ +/ /g' | G -v MB/s -v GB/s -v UUID -v Binutils -v 150000 -v exfatprogs | + G -v ID.SIZE.PATH | + # mkfs.xfs -f = crc=1 finobt=1, sparse=1, rmapbt=0 + # mkfs.xfs -f = reflink=1 bigtime=0 inobtcount=0 + G -v crc=..finobt=...sparse=...rmapbt= -v reflink=..bigtime=..inobtcount= | + # mkfs.xfs -f log =internal log bsize=4096 blocks=16384, version=2 + G -v log.=internal.log.bsize= | # mkfs.btrfs Incompat features: extref, skinny-metadata, no-holes # mke2fs 1.46.5 (30-Dec-2021) # btrfs-progs v6.6.3 - G -vP Incompat.features -v mke2fs.[.0-9]{5} -v btrfs-progs.v[.0-9]{5} | + G -vP Incompat.features -vP mke2fs.[.0-9]{5} -vP btrfs-progs.v[.0-9]{5} | + # F2FS-tools: mkfs.f2fs Ver: 1.14.0 (2020-08-24) + G -vP mkfs.f2fs.Ver:.[.0-9]{5} | # See https://btrfs.readthedocs.io for more # mkfs.f2fs Info: Overprovision segments = 27 (GC reserved = 18) G -v 'See http' -v Overprovision | # mkfs.f2fs /dev/loop 147952 70136 77816 48% /tmp/par-test-loop - perl -pe 's:/dev/loop \d+ \d+ \d+:/dev/loop 999999 99999 99999:' + perl -pe 's:/dev/loop \d+ \d+ \d+ \d+:/dev/loop 999999 99999 99999 9:' # Skip: # mkfs.bfs - ro # mkfs.cramfs - ro diff --git a/testsuite/tests-to-run/parallel-local-30s.sh b/testsuite/tests-to-run/parallel-local-30s.sh index 485d7388..ff1ec912 100755 --- a/testsuite/tests-to-run/parallel-local-30s.sh +++ b/testsuite/tests-to-run/parallel-local-30s.sh @@ -299,8 +299,9 @@ par_exit_code() { parallel -uj0 --halt now,done=1 ::: runit killsleep } -par_macron() { +par_internal_quote_char() { echo '### See if \257\256 \257<\257> is replaced correctly' + echo '### See if \177\176 \177<\177> is replaced correctly' print_it() { parallel $2 ::: "echo $1" parallel $2 echo ::: "$1" @@ -310,11 +311,27 @@ par_macron() { parallel $2 echo \""$1"\"{} ::: "$1" } export -f print_it - parallel --tag -k print_it \ - ::: "$(perl -e 'print "\257"')" "$(perl -e 'print "\257\256"')" \ - "$(perl -e 'print "\257\257\256"')" \ - "$(perl -e 'print "\257<\257<\257>\257>"')" \ - ::: -X -q -Xq -k + a257="$(printf "\257")" + a256="$(printf "\256")" + a177="$(printf "\177")" + a176="$(printf "\176")" + stdout parallel --tag -k print_it \ + ::: "$a257" "$a177" "$a257$a256" "$a177$a176" \ + "$a257$a257$a256" "$a177$a177$a176" \ + "$a257<$a257<$a257>$a257" "$a177<$a177<$a177>$a177" \ + ::: -X -q -Xq -k | + # Upgrade old bash error to new bash error + perl -pe 's/No such file or directory/Invalid or incomplete multibyte or wide character/g' + cd "$TMPDIR" + echo "Compare old quote char csv" + parallel-20231222 --sqlmaster csv:///./oldformat.csv echo "$(printf "\257\257 \177\177")" ::: 1 2 3 + stdout parallel -k --sqlworker csv:///./oldformat.csv echo "$(printf "\257\257 \177\177")" ::: 1 2 3 | + od -t x1z > old.out + echo "with new quote char csv (must be the same)" + parallel --sqlmaster csv:///./newformat.csv echo "$(printf "\257\257 \177\177")" ::: 1 2 3 + stdout parallel -k --sqlworker csv:///./newformat.csv echo "$(printf "\257\257 \177\177")" ::: 1 2 3 | + od -t x1z > new.out + diff old.out new.out && echo OK } par_groupby() { @@ -688,18 +705,26 @@ par__plus_dyn_repl() { } par_test_ipv6_format() { + ipv4() { + ifconfig | perl -nE '/inet (\S+) / and say $1' + } + ipv6() { + ifconfig | perl -nE '/inet6 ([0-9a-f:]+) .*(host|global)/ and say $1' + } + (ipv4; ipv6) | + parallel ssh -oStrictHostKeyChecking=accept-new {} true 2>/dev/null echo '### Host as IPv6 address' ( - ifconfig | + ipv6 | # Get IPv6 addresses of local server - perl -nE '/inet6 ([0-9a-f:]+) .*(host|global)/ and + perl -nE '/([0-9a-f:]+)/ and map {say $1,$_,22; say $1,$_,"ssh"} qw(: . # p q)' | # 9999::9999:9999:22 => [9999::9999:9999]:22 # 9999::9999:9999q22 => 9999::9999:9999 perl -pe 's/(.*):(22|ssh)$/[$1]:$2/;s/q.*//;' - ifconfig | + ipv4 | # Get IPv4 addresses - perl -nE '/inet (\S+) / and + perl -nE '/(\S+)/ and map {say $1,$_,22; say $1,$_,"ssh"} qw(: q)' | # 9.9.9.9q22 => 9.9.9.9 perl -pe 's/q.*//;' diff --git a/testsuite/tests-to-run/parallel-local-ssh1.sh b/testsuite/tests-to-run/parallel-local-ssh1.sh index d122561e..616e7705 100644 --- a/testsuite/tests-to-run/parallel-local-ssh1.sh +++ b/testsuite/tests-to-run/parallel-local-ssh1.sh @@ -41,7 +41,7 @@ par__sshpass_with_password() { ( stdout parallel --onall -S5/user:'`date>>/tmp/trap`;'@host echo ::: A stdout parallel --onall -S5/user:'`date>>/tmp/trap`;(|<*&)'"'"@host echo ::: A - ) | perl -pe 's/([a-f0-9]{100,} )+[a-f0-9]{1,}/HEX/g' + ) | perl -pe 's/([a-f0-9]{100,} )+[a-f0-9]{1,}/HEX/g; s/\r/\n/g;' echo This must stay empty cat /tmp/trap } diff --git a/testsuite/tests-to-run/parallel-local-ssh4.sh b/testsuite/tests-to-run/parallel-local-ssh4.sh index 9facb6f0..8b076402 100644 --- a/testsuite/tests-to-run/parallel-local-ssh4.sh +++ b/testsuite/tests-to-run/parallel-local-ssh4.sh @@ -25,22 +25,24 @@ par__test_different_rsync_versions() { echo '### different versions of rsync need fixups' echo '### no output is good' doit() { - rm -f 'a`b`c\ "$tmp"/rsync chmod +x "$tmp"/rsync PATH="$tmp":"$PATH" # Test basic rsync - if stdout rsync "$tmp"/rsync sh@lo:rsync.$2 >/dev/null ; then + if stdout rsync "$tmp"/rsync sh@lo:rsync.$short >/dev/null ; then echo Basic use works: $2 - stdout parallel --trc {}.out -S sh@lo cp {} {}.out ::: 'a`b`c\&1' | + parallel --timeout 200 -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' | perl -pe 's:/usr/bin:/bin:g;' diff --git a/testsuite/tests-to-run/parallel-local-ssh5.sh b/testsuite/tests-to-run/parallel-local-ssh5.sh index c2960848..81e5d947 100644 --- a/testsuite/tests-to-run/parallel-local-ssh5.sh +++ b/testsuite/tests-to-run/parallel-local-ssh5.sh @@ -153,4 +153,4 @@ par__--shellquote_command_len() { export -f $(compgen -A function | grep par_) compgen -A function | G par_ "$@" | sort | # 2019-07-14 100% slowed down 4 threads/16GB - parallel -j75% --joblog /tmp/jl-`basename $0` -j3 --tag -k --delay 0.1 --retries 3 '{} 2>&1' + parallel --timeout 100 -j75% --joblog /tmp/jl-`basename $0` -j3 --tag -k --delay 0.1 --retries 3 '{} 2>&1' diff --git a/testsuite/tests-to-run/parallel-local-ssh7.sh b/testsuite/tests-to-run/parallel-local-ssh7.sh index d6eec86b..e1348409 100755 --- a/testsuite/tests-to-run/parallel-local-ssh7.sh +++ b/testsuite/tests-to-run/parallel-local-ssh7.sh @@ -846,7 +846,7 @@ _EOF # Old versions of fish sometimes throw up bugs all over, # but seem to work OK otherwise. So ignore these errors. ssh fish@lo "$myscript" 2>&1 | - perl -ne '/fish:|fish\(/ and next; print' + perl -ne '/^\^|fish:|fish\(/ and next; print' } par_--env_underscore_ksh() { @@ -942,7 +942,8 @@ par_--env_underscore_mksh() { echo "OK if no myfunc ^^^^^^^^^^^^^^^^^" >&2; _EOF ) - ssh mksh@lo "$myscript" + ssh mksh@lo "$myscript" | + perl -pe 's/^[EŴ]:/EW:/g' } par_--env_underscore_sh() { @@ -2942,7 +2943,8 @@ par_env_parallel_--session_mksh() { unset PARALLEL_IGNORED_NAMES _EOF ) - ssh mksh@lo "$myscript" + ssh mksh@lo "$myscript" | + perl -pe 's/^[EŴ]:/EW:/g' } par_env_parallel_--session_sh() { diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index 896d1c93..3d65d80b 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -92,7 +92,7 @@ par_compress_prg_fails --tag --files parallel: Error: false failed. par_compress_prg_fails --line-buffer 1 par_compress_prg_fails --line-buffer parallel: Error: false failed. par_compress_prg_fails --line-buffer parallel: Error: false failed. -par_compress_prg_fails --line-buffer --files 1 +par_compress_prg_fails --line-buffer --files 9 par_compress_prg_fails --line-buffer --files parallel: Warning: Use --files0 when $TMPDIR contains newline. par_compress_prg_fails --line-buffer --files parallel: Error: false failed. par_compress_prg_fails --line-buffer --files parallel: Error: false failed. @@ -709,7 +709,6 @@ par_pipepart_tee bug #45479: --pipe/--pipepart --tee par_pipepart_tee --pipepart --tee par_pipepart_tee 314572800 par_quote_special_results ### Test --results on file systems with limited UTF8 support -par_quote_special_results mkfs.btrfs btrfs-progs v5.16.2 par_quote_special_results mkfs.btrfs par_quote_special_results mkfs.btrfs NOTE: several default settings have changed in version 5.15, please make sure par_quote_special_results mkfs.btrfs this does not affect your deployments: @@ -731,11 +730,10 @@ par_quote_special_results mkfs.btrfs Runtime features: free-space-tree par_quote_special_results mkfs.btrfs Checksum: crc32c par_quote_special_results mkfs.btrfs Number of devices: 1 par_quote_special_results mkfs.btrfs Devices: -par_quote_special_results mkfs.btrfs ID SIZE PATH par_quote_special_results mkfs.btrfs 1 301.00MiB /dev/shm/par-test-loop par_quote_special_results mkfs.btrfs par_quote_special_results mkfs.btrfs Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.btrfs /dev/loop 999999 99999 99999 2% /tmp/par-test-loop +par_quote_special_results mkfs.btrfs /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.btrfs . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,.. par_quote_special_results mkfs.btrfs par_quote_special_results mkfs.btrfs . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.btrfs ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./ @@ -754,7 +752,7 @@ par_quote_special_results mkfs.exfat Synchronizing... par_quote_special_results mkfs.exfat par_quote_special_results mkfs.exfat exFAT format complete! par_quote_special_results mkfs.exfat Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.exfat /dev/loop 999999 99999 99999 1% /tmp/par-test-loop +par_quote_special_results mkfs.exfat /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.exfat . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./, par_quote_special_results mkfs.exfat . ./ ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+80 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ par_quote_special_results mkfs.exfat . ./+80 ./+81 ./+82 ./+83 ./+84 ./+85 ./+86 ./+87 ./+88 ./+89 ./+8a ./+8b ./+8c ./+8d ./+8e ./+8f ./+90 ./+91 ./+92 ./+93 ./+94 ./+95 ./+96 ./+97 ./+98 ./+99 ./+9a ./+9b ./+9c ./+9d ./+9e ./+9f ./+a0 ./+a1 ./+a2 ./+a3 ./+a4 ./+a5 ./+a6 ./+a7 ./+a8 ./+a9 ./+aa ./+ab ./+ac ./+ad ./+ae ./+af ./+b0 ./+b1 ./+b2 ./+b3 ./+b4 ./+b5 ./+b6 ./+b7 ./+b8 ./+b9 ./+ba ./+bb ./+bc ./+bd ./+be ./+bf ./+c0 ./+c1 ./+c2 ./+c3 ./+c4 ./+c5 ./+c6 ./+c7 ./+c8 ./+c9 ./+ca ./+cb ./+cc ./+cd ./+ce ./+cf ./+d0 ./+d1 ./+d2 ./+d3 ./+d4 ./+d5 ./+d6 ./+d7 ./+d8 ./+d9 ./+da ./+db ./+dc ./+dd ./+de ./+df ./+e0 ./+e1 ./+e2 ./+e3 ./+e4 ./+e5 ./+e6 ./+e7 ./+e8 ./+e9 ./+ea ./+eb ./+ec ./+ed ./+ee ./+ef ./+f0 ./+f1 ./+f2 ./+f3 ./+f4 ./+f5 ./+f6 ./+f7 ./+f8 ./+f9 ./+fa ./+fb ./+fc ./+fd ./+fe ./+ff @@ -770,14 +768,13 @@ par_quote_special_results mkfs.ext2 Writing inode tables: 0/3 done par_quote_special_results mkfs.ext2 Writing superblocks and filesystem accounting information: 0/3 done par_quote_special_results mkfs.ext2 par_quote_special_results mkfs.ext2 Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.ext2 /dev/loop 999999 99999 99999 1% /tmp/par-test-loop +par_quote_special_results mkfs.ext2 /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.ext2 . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,.. par_quote_special_results mkfs.ext2 par_quote_special_results mkfs.ext2 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ext2 ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./ par_quote_special_results mkfs.ext2 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ext2 301+0 records in par_quote_special_results mkfs.ext2 301+0 records out -par_quote_special_results mkfs.ext2 mke2fs 1.46.5 (30-Dec-2021) par_quote_special_results mkfs.ext3 Discarding device blocks: 0/77056 done par_quote_special_results mkfs.ext3 Creating filesystem with 77056 4k blocks and 77088 inodes par_quote_special_results mkfs.ext3 Superblock backups stored on blocks: @@ -789,14 +786,13 @@ par_quote_special_results mkfs.ext3 Creating journal (4096 blocks): done par_quote_special_results mkfs.ext3 Writing superblocks and filesystem accounting information: 0/3 done par_quote_special_results mkfs.ext3 par_quote_special_results mkfs.ext3 Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.ext3 /dev/loop 999999 99999 99999 1% /tmp/par-test-loop +par_quote_special_results mkfs.ext3 /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.ext3 . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,.. par_quote_special_results mkfs.ext3 par_quote_special_results mkfs.ext3 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ext3 ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./ par_quote_special_results mkfs.ext3 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ext3 301+0 records in par_quote_special_results mkfs.ext3 301+0 records out -par_quote_special_results mkfs.ext3 mke2fs 1.46.5 (30-Dec-2021) par_quote_special_results mkfs.ext4 Discarding device blocks: 0/77056 done par_quote_special_results mkfs.ext4 Creating filesystem with 77056 4k blocks and 77088 inodes par_quote_special_results mkfs.ext4 Superblock backups stored on blocks: @@ -808,16 +804,15 @@ par_quote_special_results mkfs.ext4 Creating journal (4096 blocks): done par_quote_special_results mkfs.ext4 Writing superblocks and filesystem accounting information: 0/3 done par_quote_special_results mkfs.ext4 par_quote_special_results mkfs.ext4 Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.ext4 /dev/loop 999999 99999 99999 1% /tmp/par-test-loop +par_quote_special_results mkfs.ext4 /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.ext4 . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,.. par_quote_special_results mkfs.ext4 par_quote_special_results mkfs.ext4 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ext4 ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./ par_quote_special_results mkfs.ext4 . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ext4 301+0 records in par_quote_special_results mkfs.ext4 301+0 records out -par_quote_special_results mkfs.ext4 mke2fs 1.46.5 (30-Dec-2021) par_quote_special_results mkfs.reiserfs -fq Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.reiserfs -fq /dev/loop 999999 99999 99999 11% /tmp/par-test-loop +par_quote_special_results mkfs.reiserfs -fq /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.reiserfs -fq . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,.. par_quote_special_results mkfs.reiserfs -fq par_quote_special_results mkfs.reiserfs -fq . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.reiserfs -fq ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./ @@ -831,7 +826,7 @@ par_quote_special_results mkfs.ntfs -F Initializing device with zeroes: 0% 0 par_quote_special_results mkfs.ntfs -F Creating NTFS volume structures. par_quote_special_results mkfs.ntfs -F mkntfs completed successfully. Have a nice day. par_quote_special_results mkfs.ntfs -F Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.ntfs -F /dev/loop 999999 99999 99999 1% /tmp/par-test-loop +par_quote_special_results mkfs.ntfs -F /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.ntfs -F . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,.. par_quote_special_results mkfs.ntfs -F par_quote_special_results mkfs.ntfs -F . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.ntfs -F ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+80 ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ @@ -848,16 +843,13 @@ par_quote_special_results mkfs.ntfs -F To boot from a device, Windows needs the par_quote_special_results mkfs.ntfs -F Windows will not be able to boot from this device. par_quote_special_results mkfs.xfs -f meta-data=/dev/shm/par-test-loop isize=512 agcount=4, agsize=19264 blks par_quote_special_results mkfs.xfs -f = sectsz=512 attr=2, projid32bit=1 -par_quote_special_results mkfs.xfs -f = crc=1 finobt=1, sparse=1, rmapbt=0 -par_quote_special_results mkfs.xfs -f = reflink=1 bigtime=0 inobtcount=0 par_quote_special_results mkfs.xfs -f data = bsize=4096 blocks=77056, imaxpct=25 par_quote_special_results mkfs.xfs -f = sunit=0 swidth=0 blks par_quote_special_results mkfs.xfs -f naming =version 2 bsize=4096 ascii-ci=0, ftype=1 -par_quote_special_results mkfs.xfs -f log =internal log bsize=4096 blocks=1368, version=2 par_quote_special_results mkfs.xfs -f = sectsz=512 sunit=0 blks, lazy-count=1 par_quote_special_results mkfs.xfs -f realtime =none extsz=4096 blocks=0, rtextents=0 par_quote_special_results mkfs.xfs -f Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.xfs -f /dev/loop 999999 99999 99999 6% /tmp/par-test-loop +par_quote_special_results mkfs.xfs -f /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.xfs -f . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,.. par_quote_special_results mkfs.xfs -f par_quote_special_results mkfs.xfs -f . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.xfs -f ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./ @@ -871,7 +863,7 @@ par_quote_special_results mkfs.minix Zonesize=1024 par_quote_special_results mkfs.minix Maxsize=268966912 par_quote_special_results mkfs.minix par_quote_special_results mkfs.minix Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.minix /dev/loop 999999 99999 99999 1% /tmp/par-test-loop +par_quote_special_results mkfs.minix /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.minix . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,.. par_quote_special_results mkfs.minix par_quote_special_results mkfs.minix . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.minix ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./ @@ -880,7 +872,7 @@ par_quote_special_results mkfs.minix 301+0 records in par_quote_special_results mkfs.minix 301+0 records out par_quote_special_results mkfs.fat mkfs.fat 4.2 (2021-01-31) par_quote_special_results mkfs.fat Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.fat /dev/loop 999999 99999 99999 0% /tmp/par-test-loop +par_quote_special_results mkfs.fat /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.fat . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./, par_quote_special_results mkfs.fat . ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+20 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ ./ par_quote_special_results mkfs.fat . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ @@ -888,7 +880,7 @@ par_quote_special_results mkfs.fat 301+0 records in par_quote_special_results mkfs.fat 301+0 records out par_quote_special_results mkfs.vfat mkfs.fat 4.2 (2021-01-31) par_quote_special_results mkfs.vfat Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.vfat /dev/loop 999999 99999 99999 0% /tmp/par-test-loop +par_quote_special_results mkfs.vfat /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.vfat . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./, par_quote_special_results mkfs.vfat . ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+20 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ ./ par_quote_special_results mkfs.vfat . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ @@ -896,14 +888,13 @@ par_quote_special_results mkfs.vfat 301+0 records in par_quote_special_results mkfs.vfat 301+0 records out par_quote_special_results mkfs.msdos mkfs.fat 4.2 (2021-01-31) par_quote_special_results mkfs.msdos Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.msdos /dev/loop 999999 99999 99999 0% /tmp/par-test-loop +par_quote_special_results mkfs.msdos /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.msdos . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./, par_quote_special_results mkfs.msdos . ./! ./# ./$ ./% ./& ./' ./( ./) ./++ ./+01 ./+02 ./+03 ./+04 ./+05 ./+06 ./+07 ./+08 ./+09 ./+0a ./+0b ./+0c ./+0d ./+0e ./+0f ./+10 ./+11 ./+12 ./+13 ./+14 ./+15 ./+16 ./+17 ./+18 ./+19 ./+1a ./+1b ./+1c ./+1d ./+1e ./+1f ./+20 ./+_ ./+a ./+b ./+d ./+g ./+k ./+l ./+p ./+y ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./; ./= ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./] ./^ ./_ ./` ./{ ./} ./~ ./ ./ par_quote_special_results mkfs.msdos . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.msdos 301+0 records in par_quote_special_results mkfs.msdos 301+0 records out par_quote_special_results mkfs.f2fs -par_quote_special_results mkfs.f2fs F2FS-tools: mkfs.f2fs Ver: 1.14.0 (2020-08-24) par_quote_special_results mkfs.f2fs par_quote_special_results mkfs.f2fs Info: Disable heap-based policy par_quote_special_results mkfs.f2fs Info: Debug level = 0 @@ -917,7 +908,7 @@ par_quote_special_results mkfs.f2fs Info: format version with par_quote_special_results mkfs.f2fs Info: [/dev/shm/par-test-loop Discarding device par_quote_special_results mkfs.f2fs Info: format successful par_quote_special_results mkfs.f2fs Filesystem 1K-blocks Used Available Use% Mounted on -par_quote_special_results mkfs.f2fs /dev/loop 999999 99999 99999 32% /tmp/par-test-loop +par_quote_special_results mkfs.f2fs /dev/loop 999999 99999 99999 9% /tmp/par-test-loop par_quote_special_results mkfs.f2fs . ./++ ./++++ ./++_ ./++__ ./++m ./++z ./+_ ./+__ ./+m ./+z ./,. ./,.. par_quote_special_results mkfs.f2fs par_quote_special_results mkfs.f2fs . ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ par_quote_special_results mkfs.f2fs ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./! ./" ./# ./$ ./% ./& ./' ./( ./) ./* ./++ ./+_ ./+z ./, ./- ./0 ./1 ./2 ./3 ./4 ./5 ./6 ./7 ./8 ./9 ./: ./; ./< ./= ./> ./? ./@ ./A ./B ./C ./D ./E ./F ./G ./H ./I ./J ./K ./L ./M ./N ./O ./P ./Q ./R ./S ./T ./U ./V ./W ./X ./Y ./Z ./[ ./\ ./] ./^ ./_ ./` ./a ./b ./c ./d ./e ./f ./g ./h ./i ./j ./k ./l ./m ./n ./o ./p ./q ./r ./s ./t ./u ./v ./w ./x ./y ./z ./{ ./| ./} ./~ ./ ./ diff --git a/testsuite/wanted-results/parallel-local-30s b/testsuite/wanted-results/parallel-local-30s index 40e04242..5ad8200f 100644 --- a/testsuite/wanted-results/parallel-local-30s +++ b/testsuite/wanted-results/parallel-local-30s @@ -2652,105 +2652,200 @@ par_groupby --block 20 C1 $_%=2 csv , parallel: Warning: A record was longer tha par_groupby --block 20 C1 $_%=2 csv , parallel: Warning: A record was longer than 37. Increasing to --blocksize 50. par_groupby --block 20 C1 $_%=2 csv , parallel: Warning: A record was longer than 50. Increasing to --blocksize 66. par_groupby --block 20 C1 $_%=2 csv , parallel: Warning: A record was longer than 66. Increasing to --blocksize 87. -par_macron ### See if \257\256 \257<\257> is replaced correctly -par_macron -X -par_macron -X -par_macron -X -par_macron -X -par_macron -X -par_macron -X -par_macron -q -par_macron -q -par_macron -q "" -par_macron -q -par_macron -q "" -par_macron -q /usr/bin/bash: line 1: $'echo \257': command not found -par_macron -Xq -par_macron -Xq -par_macron -Xq "" -par_macron -Xq -par_macron -Xq "" -par_macron -Xq /usr/bin/bash: line 1: $'echo \257': command not found -par_macron -k -par_macron -k -par_macron -k -par_macron -k -par_macron -k -par_macron -k -par_macron -X -par_macron -X -par_macron -X -par_macron -X -par_macron -X -par_macron -X -par_macron -q -par_macron -q -par_macron -q "" -par_macron -q -par_macron -q "" -par_macron -q /usr/bin/bash: line 1: $'echo \257\256': command not found -par_macron -Xq -par_macron -Xq -par_macron -Xq "" -par_macron -Xq -par_macron -Xq "" -par_macron -Xq /usr/bin/bash: line 1: $'echo \257\256': command not found -par_macron -k -par_macron -k -par_macron -k -par_macron -k -par_macron -k -par_macron -k -par_macron -X -par_macron -X -par_macron -X -par_macron -X -par_macron -X -par_macron -X -par_macron -q -par_macron -q -par_macron -q "" -par_macron -q -par_macron -q "" -par_macron -q /usr/bin/bash: line 1: $'echo \257\257\256': command not found -par_macron -Xq -par_macron -Xq -par_macron -Xq "" -par_macron -Xq -par_macron -Xq "" -par_macron -Xq /usr/bin/bash: line 1: $'echo \257\257\256': command not found -par_macron -k -par_macron -k -par_macron -k -par_macron -k -par_macron -k -par_macron -k -par_macron <<>> -X <<>> -par_macron <<>> -X <<>> <<>> -par_macron <<>> -X <<>><<>> -par_macron <<>> -X /usr/bin/bash: -c: line 1: syntax error near unexpected token `newline' -par_macron <<>> -X /usr/bin/bash: -c: line 1: `echo <<>>' -par_macron <<>> -X /usr/bin/bash: line 1: : No such file or directory -par_macron <<>> -X /usr/bin/bash: line 1: : No such file or directory -par_macron <<>> -q <<>> -par_macron <<>> -q <<>> <<>> -par_macron <<>> -q "<<>>" <<>> -par_macron <<>> -q <<>><<>> -par_macron <<>> -q "<<>>"<<>> -par_macron <<>> -q /usr/bin/bash: line 1: $'echo \257<\257<\257>\257>': command not found -par_macron <<>> -Xq <<>> -par_macron <<>> -Xq <<>> <<>> -par_macron <<>> -Xq "<<>>" <<>> -par_macron <<>> -Xq <<>><<>> -par_macron <<>> -Xq "<<>>"<<>> -par_macron <<>> -Xq /usr/bin/bash: line 1: $'echo \257<\257<\257>\257>': command not found -par_macron <<>> -k <<>> -par_macron <<>> -k <<>> <<>> -par_macron <<>> -k <<>><<>> -par_macron <<>> -k /usr/bin/bash: -c: line 1: syntax error near unexpected token `newline' -par_macron <<>> -k /usr/bin/bash: -c: line 1: `echo <<>>' -par_macron <<>> -k /usr/bin/bash: line 1: : No such file or directory -par_macron <<>> -k /usr/bin/bash: line 1: : No such file or directory +par_internal_quote_char ### See if \257\256 \257<\257> is replaced correctly +par_internal_quote_char ### See if \177\176 \177<\177> is replaced correctly +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -q +par_internal_quote_char -q +par_internal_quote_char -q "" +par_internal_quote_char -q +par_internal_quote_char -q "" +par_internal_quote_char -q /usr/bin/bash: line 1: $'echo \257': command not found +par_internal_quote_char -Xq +par_internal_quote_char -Xq +par_internal_quote_char -Xq "" +par_internal_quote_char -Xq +par_internal_quote_char -Xq "" +par_internal_quote_char -Xq /usr/bin/bash: line 1: $'echo \257': command not found +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char  -X  +par_internal_quote_char  -X  +par_internal_quote_char  -X ~  +par_internal_quote_char  -X ~  +par_internal_quote_char  -X  +par_internal_quote_char  -X  +par_internal_quote_char  -q  +par_internal_quote_char  -q   +par_internal_quote_char  -q ""  +par_internal_quote_char  -q  +par_internal_quote_char  -q "" +par_internal_quote_char  -q /usr/bin/bash: line 1: $'echo \177': command not found +par_internal_quote_char  -Xq  +par_internal_quote_char  -Xq ~  +par_internal_quote_char  -Xq "~"  +par_internal_quote_char  -Xq  +par_internal_quote_char  -Xq "" +par_internal_quote_char  -Xq /usr/bin/bash: line 1: $'echo \177': command not found +par_internal_quote_char  -k  +par_internal_quote_char  -k  +par_internal_quote_char  -k   +par_internal_quote_char  -k   +par_internal_quote_char  -k  +par_internal_quote_char  -k  +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -q +par_internal_quote_char -q +par_internal_quote_char -q "" +par_internal_quote_char -q +par_internal_quote_char -q "" +par_internal_quote_char -q /usr/bin/bash: line 1: $'echo \257\256': command not found +par_internal_quote_char -Xq +par_internal_quote_char -Xq +par_internal_quote_char -Xq "" +par_internal_quote_char -Xq +par_internal_quote_char -Xq "" +par_internal_quote_char -Xq /usr/bin/bash: line 1: $'echo \257\256': command not found +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char ~ -X ~ +par_internal_quote_char ~ -X ~ +par_internal_quote_char ~ -X ~~ ~ +par_internal_quote_char ~ -X ~~ ~ +par_internal_quote_char ~ -X ~~ +par_internal_quote_char ~ -X ~~ +par_internal_quote_char ~ -q ~ +par_internal_quote_char ~ -q ~ ~ +par_internal_quote_char ~ -q "~" ~ +par_internal_quote_char ~ -q ~~ +par_internal_quote_char ~ -q "~"~ +par_internal_quote_char ~ -q /usr/bin/bash: line 1: $'echo \177~': command not found +par_internal_quote_char ~ -Xq ~ +par_internal_quote_char ~ -Xq ~~ ~ +par_internal_quote_char ~ -Xq "~~" ~ +par_internal_quote_char ~ -Xq ~~ +par_internal_quote_char ~ -Xq "~"~ +par_internal_quote_char ~ -Xq /usr/bin/bash: line 1: $'echo \177~': command not found +par_internal_quote_char ~ -k ~ +par_internal_quote_char ~ -k ~ +par_internal_quote_char ~ -k ~ ~ +par_internal_quote_char ~ -k ~ ~ +par_internal_quote_char ~ -k ~~ +par_internal_quote_char ~ -k ~~ +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -X +par_internal_quote_char -q +par_internal_quote_char -q +par_internal_quote_char -q "" +par_internal_quote_char -q +par_internal_quote_char -q "" +par_internal_quote_char -q /usr/bin/bash: line 1: $'echo \257\257\256': command not found +par_internal_quote_char -Xq +par_internal_quote_char -Xq +par_internal_quote_char -Xq "" +par_internal_quote_char -Xq +par_internal_quote_char -Xq "" +par_internal_quote_char -Xq /usr/bin/bash: line 1: $'echo \257\257\256': command not found +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char -k +par_internal_quote_char ~ -X ~ +par_internal_quote_char ~ -X ~ +par_internal_quote_char ~ -X ~~~ ~ +par_internal_quote_char ~ -X ~~~ ~ +par_internal_quote_char ~ -X ~~ +par_internal_quote_char ~ -X ~~ +par_internal_quote_char ~ -q ~ +par_internal_quote_char ~ -q ~ ~ +par_internal_quote_char ~ -q "~" ~ +par_internal_quote_char ~ -q ~~ +par_internal_quote_char ~ -q "~"~ +par_internal_quote_char ~ -q /usr/bin/bash: line 1: $'echo \177\177~': command not found +par_internal_quote_char ~ -Xq ~ +par_internal_quote_char ~ -Xq ~~~ ~ +par_internal_quote_char ~ -Xq "~~~" ~ +par_internal_quote_char ~ -Xq ~~ +par_internal_quote_char ~ -Xq "~"~ +par_internal_quote_char ~ -Xq /usr/bin/bash: line 1: $'echo \177\177~': command not found +par_internal_quote_char ~ -k ~ +par_internal_quote_char ~ -k ~ +par_internal_quote_char ~ -k ~ ~ +par_internal_quote_char ~ -k ~ ~ +par_internal_quote_char ~ -k ~~ +par_internal_quote_char ~ -k ~~ +par_internal_quote_char <<> -X <<> +par_internal_quote_char <<> -X <<> <<> +par_internal_quote_char <<> -X <<><<> +par_internal_quote_char <<> -X /usr/bin/bash: line 1: : Invalid or incomplete multibyte or wide character +par_internal_quote_char <<> -X /usr/bin/bash: line 1: : Invalid or incomplete multibyte or wide character +par_internal_quote_char <<> -X /usr/bin/bash: line 1: : Invalid or incomplete multibyte or wide character +par_internal_quote_char <<> -q <<> +par_internal_quote_char <<> -q <<> <<> +par_internal_quote_char <<> -q "<<>" <<> +par_internal_quote_char <<> -q <<><<> +par_internal_quote_char <<> -q "<<>"<<> +par_internal_quote_char <<> -q /usr/bin/bash: line 1: $'echo \257<\257<\257>\257': command not found +par_internal_quote_char <<> -Xq <<> +par_internal_quote_char <<> -Xq <<> <<> +par_internal_quote_char <<> -Xq "<<>" <<> +par_internal_quote_char <<> -Xq <<><<> +par_internal_quote_char <<> -Xq "<<>"<<> +par_internal_quote_char <<> -Xq /usr/bin/bash: line 1: $'echo \257<\257<\257>\257': command not found +par_internal_quote_char <<> -k <<> +par_internal_quote_char <<> -k <<> <<> +par_internal_quote_char <<> -k <<><<> +par_internal_quote_char <<> -k /usr/bin/bash: line 1: : Invalid or incomplete multibyte or wide character +par_internal_quote_char <<> -k /usr/bin/bash: line 1: : Invalid or incomplete multibyte or wide character +par_internal_quote_char <<> -k /usr/bin/bash: line 1: : Invalid or incomplete multibyte or wide character +par_internal_quote_char <<> -X <<> +par_internal_quote_char <<> -X ~<~<~>~ <<> +par_internal_quote_char <<> -X <<><<> +par_internal_quote_char <<> -X /usr/bin/bash: line 1: : Invalid or incomplete multibyte or wide character +par_internal_quote_char <<> -X /usr/bin/bash: line 1: ~: Invalid or incomplete multibyte or wide character +par_internal_quote_char <<> -X /usr/bin/bash: line 1: : Invalid or incomplete multibyte or wide character +par_internal_quote_char <<> -q <<> +par_internal_quote_char <<> -q <<> <<> +par_internal_quote_char <<> -q "<<>" <<> +par_internal_quote_char <<> -q <<><<> +par_internal_quote_char <<> -q "<<>"<<> +par_internal_quote_char <<> -q /usr/bin/bash: line 1: $'echo \177<\177<\177>\177': command not found +par_internal_quote_char <<> -Xq <<> +par_internal_quote_char <<> -Xq ~<~<~>~ <<> +par_internal_quote_char <<> -Xq "~<~<~>~" <<> +par_internal_quote_char <<> -Xq <<><<> +par_internal_quote_char <<> -Xq "<<>"<<> +par_internal_quote_char <<> -Xq /usr/bin/bash: line 1: $'echo \177<\177<\177>\177': command not found +par_internal_quote_char <<> -k <<> +par_internal_quote_char <<> -k <<> <<> +par_internal_quote_char <<> -k <<><<> +par_internal_quote_char <<> -k /usr/bin/bash: line 1: : No such file or directory +par_internal_quote_char <<> -k /usr/bin/bash: line 1: : No such file or directory +par_internal_quote_char <<> -k /usr/bin/bash: line 1: : No such file or directory par_max_length_len_128k ### BUG: The length for -X is not close to max (131072) par_max_length_len_128k 63xxx par_max_length_len_128k 63xxx diff --git a/testsuite/wanted-results/parallel-local-ssh1 b/testsuite/wanted-results/parallel-local-ssh1 index b38f8255..ecd748ed 100644 --- a/testsuite/wanted-results/parallel-local-ssh1 +++ b/testsuite/wanted-results/parallel-local-ssh1 @@ -77,10 +77,12 @@ par__sshpass_with_password OK par__sshpass_with_password ### Crazy passwords: `date>>/tmp/trap`;(|<*&)' par__sshpass_with_password parallel: Warning: Using password or SSHPASS with --(n)onall exposes the password par__sshpass_with_password parallel: Warning: on the command line, making it visible to local users via `ps`. -par__sshpass_with_password ssh: Could not resolve hostname host: No address associated with hostname par__sshpass_with_password +par__sshpass_with_password ssh: Could not resolve hostname host: No address associated with hostname +par__sshpass_with_password par__sshpass_with_password parallel: Warning: Using password or SSHPASS with --(n)onall exposes the password par__sshpass_with_password parallel: Warning: on the command line, making it visible to local users via `ps`. -par__sshpass_with_password ssh: Could not resolve hostname host: No address associated with hostname par__sshpass_with_password +par__sshpass_with_password ssh: Could not resolve hostname host: No address associated with hostname +par__sshpass_with_password par__sshpass_with_password This must stay empty par_csh_variable_newline ### Can csh propagate a variable containing \n par_csh_variable_newline 1 diff --git a/testsuite/wanted-results/parallel-local-ssh4 b/testsuite/wanted-results/parallel-local-ssh4 index 2e119606..f5da08b0 100644 --- a/testsuite/wanted-results/parallel-local-ssh4 +++ b/testsuite/wanted-results/parallel-local-ssh4 @@ -199,6 +199,11 @@ par__test_different_rsync_versions rsync-v1.6.6 Basic use failed - not tested: r par__test_different_rsync_versions rsync-v1.6.7 Basic use failed - not tested: rsync-v1.6.7 par__test_different_rsync_versions rsync-v1.6.8 Basic use failed - not tested: rsync-v1.6.8 par__test_different_rsync_versions rsync-v1.6.9 Basic use failed - not tested: rsync-v1.6.9 +par__test_different_rsync_versions rsync-v1.7.0 Basic use failed - not tested: rsync-v1.7.0 +par__test_different_rsync_versions rsync-v1.7.1 Basic use failed - not tested: rsync-v1.7.1 +par__test_different_rsync_versions rsync-v1.7.2 Basic use failed - not tested: rsync-v1.7.2 +par__test_different_rsync_versions rsync-v1.7.3 Basic use failed - not tested: rsync-v1.7.3 +par__test_different_rsync_versions rsync-v1.7.4 Basic use failed - not tested: rsync-v1.7.4 par__test_different_rsync_versions rsync-v2.0.0 Basic use failed - not tested: rsync-v2.0.0 par__test_different_rsync_versions rsync-v2.0.1 Basic use failed - not tested: rsync-v2.0.1 par__test_different_rsync_versions rsync-v2.0.10 Basic use failed - not tested: rsync-v2.0.10 @@ -221,6 +226,30 @@ par__test_different_rsync_versions rsync-v2.0.8 Basic use failed - not tested: r par__test_different_rsync_versions rsync-v2.0.9 Basic use failed - not tested: rsync-v2.0.9 par__test_different_rsync_versions rsync-v2.1.0 Basic use failed - not tested: rsync-v2.1.0 par__test_different_rsync_versions rsync-v2.1.1 Basic use failed - not tested: rsync-v2.1.1 +par__test_different_rsync_versions rsync-v2.2.0 Basic use failed - not tested: rsync-v2.2.0 +par__test_different_rsync_versions rsync-v2.2.1 Basic use failed - not tested: rsync-v2.2.1 +par__test_different_rsync_versions rsync-v2.3.0 Basic use failed - not tested: rsync-v2.3.0 +par__test_different_rsync_versions rsync-v2.3.1 Basic use failed - not tested: rsync-v2.3.1 +par__test_different_rsync_versions rsync-v2.3.2 Basic use failed - not tested: rsync-v2.3.2 +par__test_different_rsync_versions rsync-v2.4.0 Basic use failed - not tested: rsync-v2.4.0 +par__test_different_rsync_versions rsync-v2.4.1 Basic use failed - not tested: rsync-v2.4.1 +par__test_different_rsync_versions rsync-v2.4.2 Basic use failed - not tested: rsync-v2.4.2 +par__test_different_rsync_versions rsync-v2.4.3 Basic use failed - not tested: rsync-v2.4.3 +par__test_different_rsync_versions rsync-v2.4.4 Basic use failed - not tested: rsync-v2.4.4 +par__test_different_rsync_versions rsync-v2.4.5 Basic use failed - not tested: rsync-v2.4.5 +par__test_different_rsync_versions rsync-v2.4.6 Basic use failed - not tested: rsync-v2.4.6 +par__test_different_rsync_versions rsync-v2.5.1 Basic use failed - not tested: rsync-v2.5.1 +par__test_different_rsync_versions rsync-v2.5.2 Basic use failed - not tested: rsync-v2.5.2 +par__test_different_rsync_versions rsync-v2.5.3 Basic use failed - not tested: rsync-v2.5.3 +par__test_different_rsync_versions rsync-v2.5.4 Basic use failed - not tested: rsync-v2.5.4 +par__test_different_rsync_versions rsync-v2.5.5 Basic use failed - not tested: rsync-v2.5.5 +par__test_different_rsync_versions rsync-v2.5.5.rc1 Basic use failed - not tested: rsync-v2.5.5.rc1 +par__test_different_rsync_versions rsync-v2.5.6 Basic use failed - not tested: rsync-v2.5.6 +par__test_different_rsync_versions rsync-v2.6.0 Basic use works: rsync-v2.6.0 +par__test_different_rsync_versions rsync-v2.6.1 Basic use works: rsync-v2.6.1 +par__test_different_rsync_versions rsync-v2.6.2 Basic use works: rsync-v2.6.2 +par__test_different_rsync_versions rsync-v2.6.3 Basic use works: rsync-v2.6.3 +par__test_different_rsync_versions rsync-v2.6.4 Basic use works: rsync-v2.6.4 par__test_different_rsync_versions rsync-v2.6.5 Basic use works: rsync-v2.6.5 par__test_different_rsync_versions rsync-v2.6.6 Basic use works: rsync-v2.6.6 par__test_different_rsync_versions rsync-v2.6.7 Basic use works: rsync-v2.6.7 @@ -248,6 +277,7 @@ par__test_different_rsync_versions rsync-v3.2.4 Basic use works: rsync-v3.2.4 par__test_different_rsync_versions rsync-v3.2.5 Basic use works: rsync-v3.2.5 par__test_different_rsync_versions rsync-v3.2.6 Basic use works: rsync-v3.2.6 par__test_different_rsync_versions rsync-v3.2.7 Basic use works: rsync-v3.2.7 +par__test_different_rsync_versions rsync-v3.3.0 Basic use works: rsync-v3.3.0 par_bigvar_csh ### csh par_bigvar_csh 3 big vars run remotely - length(base64) > 1000 par_bigvar_csh 1 200 692 diff --git a/testsuite/wanted-results/parallel-local-ssh7 b/testsuite/wanted-results/parallel-local-ssh7 index 4908dc99..282e43a5 100644 --- a/testsuite/wanted-results/parallel-local-ssh7 +++ b/testsuite/wanted-results/parallel-local-ssh7 @@ -82,10 +82,8 @@ par_--env_underscore_fish variables in aliases and arrays in functions work par_--env_underscore_fish Test ignoring par_--env_underscore_fish script (line 99): par_--env_underscore_fish not_copied_alias 'error=OK' -par_--env_underscore_fish ^ par_--env_underscore_fish script (line 99): par_--env_underscore_fish not_copied_func 'error=OK' -par_--env_underscore_fish ^ par_--env_underscore_fish error=OK par_--env_underscore_fish error=OK par_--env_underscore_fish Test single ignoring @@ -104,11 +102,9 @@ par_--env_underscore_fish in function 'myfunc' with arguments 'work' par_--env_underscore_fish called on line 99 of file script par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myecho par_--env_underscore_fish myfunc work -par_--env_underscore_fish ^ par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myfunc par_--env_underscore_fish script (line 6): par_--env_underscore_fish myfunc work -par_--env_underscore_fish ^ par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myfunc par_--env_underscore_ksh ### ksh par_--env_underscore_ksh ### Testing of --env _ @@ -135,6 +131,14 @@ par_--env_underscore_ksh OK if no myfunc ^^^^^^^^^^^^^^^^^ par_--env_underscore_ksh script: line 2: myfunc: not found par_--env_underscore_ksh OK if no myfunc ^^^^^^^^^^^^^^^^^ par_--env_underscore_mksh ### mksh +par_--env_underscore_mksh W: script[9]: not_copied_alias: inaccessible or not found +par_--env_underscore_mksh W: script[9]: not_copied_func: inaccessible or not found +par_--env_underscore_mksh OK if no myecho ^^^^^^^^^^^^^^^^^ +par_--env_underscore_mksh OK if no myecho ^^^^^^^^^^^^^^^^^ +par_--env_underscore_mksh W: /bin/mksh: myfunc: inaccessible or not found +par_--env_underscore_mksh OK if no myfunc ^^^^^^^^^^^^^^^^^ +par_--env_underscore_mksh W: script[9]: myfunc: inaccessible or not found +par_--env_underscore_mksh OK if no myfunc ^^^^^^^^^^^^^^^^^ par_--env_underscore_mksh ### Testing of --env _ par_--env_underscore_mksh variables in aliases in and arrays in functions work par_--env_underscore_mksh variables in aliases in and arrays in functions work @@ -142,8 +146,6 @@ par_--env_underscore_mksh variables in aliases in and arrays in functions work par_--env_underscore_mksh variables in aliases in and arrays in functions work par_--env_underscore_mksh variables in aliases in and arrays in functions work par_--env_underscore_mksh variables in aliases in and arrays in functions work -par_--env_underscore_mksh W: script[9]: not_copied_alias: inaccessible or not found -par_--env_underscore_mksh W: script[9]: not_copied_func: inaccessible or not found par_--env_underscore_mksh error=OK par_--env_underscore_mksh error=OK par_--env_underscore_mksh aliases in and arrays in functions work @@ -151,13 +153,7 @@ par_--env_underscore_mksh aliases in and arrays in functions work par_--env_underscore_mksh aliases in functions work par_--env_underscore_mksh aliases in functions work par_--env_underscore_mksh aliases in functions work -par_--env_underscore_mksh OK if no myecho ^^^^^^^^^^^^^^^^^ par_--env_underscore_mksh aliases in functions work -par_--env_underscore_mksh OK if no myecho ^^^^^^^^^^^^^^^^^ -par_--env_underscore_mksh W: /bin/mksh: myfunc: inaccessible or not found -par_--env_underscore_mksh OK if no myfunc ^^^^^^^^^^^^^^^^^ -par_--env_underscore_mksh W: script[9]: myfunc: inaccessible or not found -par_--env_underscore_mksh OK if no myfunc ^^^^^^^^^^^^^^^^^ par_--env_underscore_sh ### sh par_--env_underscore_sh ### Testing of --env _ par_--env_underscore_sh variables in aliases work @@ -1246,6 +1242,10 @@ par_env_parallel_--session_ksh after varafter_OK par_env_parallel_--session_ksh after varafter_OK par_env_parallel_--session_ksh array after arrayafter_OK par_env_parallel_--session_ksh array after arrayafter_OK +par_env_parallel_--session_mksh W: /bin/mksh: aliasbefore: inaccessible or not found +par_env_parallel_--session_mksh W: script[9]: aliasbefore: inaccessible or not found +par_env_parallel_--session_mksh W: /bin/mksh: funcbefore: inaccessible or not found +par_env_parallel_--session_mksh W: script[9]: funcbefore: inaccessible or not found par_env_parallel_--session_mksh ### Test env_parallel --session par_env_parallel_--session_mksh ### level0 should be hidden, level1 should be transferred par_env_parallel_--session_mksh @@ -1339,10 +1339,6 @@ par_env_parallel_--session_mksh l2var par_env_parallel_--session_mksh l2func par_env_parallel_--session_mksh l2alias par_env_parallel_--session_mksh level2 array OK -par_env_parallel_--session_mksh W: /bin/mksh: aliasbefore: inaccessible or not found -par_env_parallel_--session_mksh W: script[9]: aliasbefore: inaccessible or not found -par_env_parallel_--session_mksh W: /bin/mksh: funcbefore: inaccessible or not found -par_env_parallel_--session_mksh W: script[9]: funcbefore: inaccessible or not found par_env_parallel_--session_mksh no_before par_env_parallel_--session_mksh no_before par_env_parallel_--session_mksh no_before