mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 14:07:55 +00:00
parallel: --compress now works with --files and --results.
This commit is contained in:
parent
56be1f38c3
commit
2852939aa5
51
src/parallel
51
src/parallel
|
@ -798,7 +798,7 @@ sub get_options_from_array {
|
|||
sub parse_options {
|
||||
# Returns: N/A
|
||||
# Defaults:
|
||||
$Global::version = 20131022;
|
||||
$Global::version = 20131102;
|
||||
$Global::progname = 'parallel';
|
||||
$Global::infinity = 2**31;
|
||||
$Global::debug = 0;
|
||||
|
@ -2811,12 +2811,13 @@ sub loadavg {
|
|||
# If the currently know loadavg is too old:
|
||||
# Recompute a new one in the background
|
||||
# Returns:
|
||||
# last load average computed
|
||||
# $last_loadavg = last load average computed (undef if none)
|
||||
my $self = shift;
|
||||
# Should we update the loadavg file?
|
||||
my $update_loadavg_file = 0;
|
||||
if(-r $self->{'loadavg_file'}) {
|
||||
open(my $load_fh, "<", $self->{'loadavg_file'}) || ::die_bug("loadavg_file-r");
|
||||
open(my $load_fh, "<", $self->{'loadavg_file'}) ||
|
||||
::die_bug("loadavg_file-r: ".$self->{'loadavg_file'});
|
||||
local $/ = undef;
|
||||
my $load_out = <$load_fh>;
|
||||
close $load_fh;
|
||||
|
@ -3919,7 +3920,7 @@ sub openoutputfiles {
|
|||
# Open files for STDOUT and STDERR
|
||||
# Set file handles in $self->fd and possibly $self->fd_input
|
||||
my $self = shift;
|
||||
my ($outfh, $errfh, $outname, $errname);
|
||||
my ($outfh, $errfh, $outname, $errname, $unlink_out, $unlink_err);
|
||||
if($opt::results) {
|
||||
my $args_as_dirname = $self->{'commandline'}->args_as_dirname();
|
||||
# prefix/name1/val1/name2/val2/
|
||||
|
@ -3940,29 +3941,18 @@ sub openoutputfiles {
|
|||
} elsif($Global::grouped) {
|
||||
# To group we create temporary files for STDOUT and STDERR
|
||||
# To avoid the cleanup unlink the files immediately (but keep them open)
|
||||
if($opt::compress) {
|
||||
my($i_outfh,$i_errfh);
|
||||
($i_outfh, $outname) = ::tempfile(SUFFIX => ".par");
|
||||
($i_errfh, $errname) = ::tempfile(SUFFIX => ".par");
|
||||
$self->set_fd_input(1, $i_outfh);
|
||||
$self->set_fd_input(2, $i_errfh);
|
||||
my $rm = $Global::debug ? "true" : "rm";
|
||||
::debug("| ($rm $outname; $opt::compress_program) > $outname\n");
|
||||
open($outfh,"|-","($rm $outname; $opt::compress_program) > $outname") || die $?;
|
||||
::debug("| ($rm $errname; $opt::compress_program) > $errname\n");
|
||||
open($errfh,"|-","($rm $errname; $opt::compress_program) > $errname") || die $?;
|
||||
} elsif(@Global::tee_jobs) {
|
||||
if(@Global::tee_jobs) {
|
||||
# files must be removed when the tee is done
|
||||
} elsif($opt::files) {
|
||||
($outfh, $outname) = ::tempfile(SUFFIX => ".par");
|
||||
($errfh, $errname) = ::tempfile(SUFFIX => ".par");
|
||||
# --files => only remove stderr
|
||||
unlink $errname;
|
||||
$unlink_err = 1;
|
||||
} else {
|
||||
($outfh, $outname) = ::tempfile(SUFFIX => ".par");
|
||||
($errfh, $errname) = ::tempfile(SUFFIX => ".par");
|
||||
unlink $outname;
|
||||
unlink $errname;
|
||||
$unlink_out = 1;
|
||||
$unlink_err = 1;
|
||||
}
|
||||
} else {
|
||||
# --ungroup
|
||||
|
@ -3971,11 +3961,28 @@ sub openoutputfiles {
|
|||
# File name must be empty as it will otherwise be printed
|
||||
$outname = "";
|
||||
$errname = "";
|
||||
$unlink_out = 1;
|
||||
$unlink_err = 1;
|
||||
}
|
||||
$self->set_fd_file_name(1,$outname);
|
||||
$self->set_fd_file_name(2,$errname);
|
||||
$self->set_fd(1,$outfh);
|
||||
$self->set_fd(2,$errfh);
|
||||
if($opt::compress) {
|
||||
$self->set_fd_input(1, $outfh);
|
||||
$self->set_fd_input(2, $errfh);
|
||||
my $rm = $unlink_out ? "rm" : "true";
|
||||
::debug("| ($rm $outname; $opt::compress_program) > $outname\n");
|
||||
open(my $coutfh,"|-","($rm $outname; $opt::compress_program) > $outname") || die $?;
|
||||
$rm = $unlink_err ? "rm" : "true";
|
||||
::debug("| ($rm $errname; $opt::compress_program) > $errname\n");
|
||||
open(my $cerrfh,"|-","($rm $errname; $opt::compress_program) > $errname") || die $?;
|
||||
$self->set_fd(1,$coutfh);
|
||||
$self->set_fd(2,$cerrfh);
|
||||
} else {
|
||||
$self->set_fd(1,$outfh);
|
||||
$self->set_fd(2,$errfh);
|
||||
$unlink_out && unlink($outname);
|
||||
$unlink_err && unlink($errname);
|
||||
}
|
||||
}
|
||||
|
||||
sub set_fd {
|
||||
|
@ -4754,6 +4761,8 @@ sub print {
|
|||
}
|
||||
::debug("File descriptor $fdno:");
|
||||
if($opt::files) {
|
||||
# If --compress: $in_fd must be closed first.
|
||||
close($in_fd);
|
||||
if($fdno == 1 and $self->fd_file_name($fdno)) {
|
||||
print $out_fd $self->fd_file_name($fdno),"\n";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue