mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-26 07:57:58 +00:00
Code reformatting to make it more outline-mode friendly
This commit is contained in:
parent
7dd8543a71
commit
0d1711afbf
452
src/parallel
452
src/parallel
|
@ -2058,7 +2058,7 @@ sub parse_options {
|
||||||
my @args = ();
|
my @args = ();
|
||||||
while(more_arguments()) {
|
while(more_arguments()) {
|
||||||
# This will read all arguments and compute $Global::total_jobs
|
# This will read all arguments and compute $Global::total_jobs
|
||||||
push @args, get_next_arg();
|
push @args, get_arg();
|
||||||
}
|
}
|
||||||
unget_arg(@args);
|
unget_arg(@args);
|
||||||
}
|
}
|
||||||
|
@ -2158,7 +2158,7 @@ sub argfiles_xapply_style {
|
||||||
for (my $fileno = 0; $fileno <= $#::opt_a; $fileno++) {
|
for (my $fileno = 0; $fileno <= $#::opt_a; $fileno++) {
|
||||||
$in_fh = open_or_exit($::opt_a[$fileno]);
|
$in_fh = open_or_exit($::opt_a[$fileno]);
|
||||||
for (my $lineno=0;
|
for (my $lineno=0;
|
||||||
$content[$fileno][$lineno] = get_next_arg_from_fh($in_fh);
|
$content[$fileno][$lineno] = get_arg_from_fh($in_fh);
|
||||||
$lineno++) {
|
$lineno++) {
|
||||||
$max_lineno = max($max_lineno,$lineno);
|
$max_lineno = max($max_lineno,$lineno);
|
||||||
}
|
}
|
||||||
|
@ -2214,6 +2214,32 @@ sub no_extension {
|
||||||
return $no_ext;
|
return $no_ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub trim {
|
||||||
|
# Removes white space as specifed by --trim:
|
||||||
|
# n = nothing
|
||||||
|
# l = start
|
||||||
|
# r = end
|
||||||
|
# lr|rl = both
|
||||||
|
# Returns:
|
||||||
|
# string with white space removed as needed
|
||||||
|
my (@strings) = (@_);
|
||||||
|
my $arg;
|
||||||
|
if($Global::trim eq "n") {
|
||||||
|
# skip
|
||||||
|
} elsif($Global::trim eq "l") {
|
||||||
|
for $arg (@strings) { $arg =~ s/^\s+//; }
|
||||||
|
} elsif($Global::trim eq "r") {
|
||||||
|
for $arg (@strings) { $arg =~ s/\s+$//; }
|
||||||
|
} elsif($Global::trim eq "rl" or $Global::trim eq "lr") {
|
||||||
|
for $arg (@strings) { $arg =~ s/^\s+//; $arg =~ s/\s+$//; }
|
||||||
|
} else {
|
||||||
|
print STDERR "$Global::progname: --trim must be one of: r l rl lr\n";
|
||||||
|
wait_and_exit(255);
|
||||||
|
}
|
||||||
|
return wantarray ? @strings : "@strings";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sub generate_command_line {
|
sub generate_command_line {
|
||||||
# Returns:
|
# Returns:
|
||||||
# the full job line to run
|
# the full job line to run
|
||||||
|
@ -2295,7 +2321,7 @@ sub get_multiple_args {
|
||||||
$length_of_command_no_args,$length_of_context) =
|
$length_of_command_no_args,$length_of_context) =
|
||||||
xargs_computations($command);
|
xargs_computations($command);
|
||||||
my $number_of_args = 0;
|
my $number_of_args = 0;
|
||||||
while (defined($next_arg = get_next_arg())) {
|
while (defined($next_arg = get_arg())) {
|
||||||
my $next_arg_no_ext = no_extension($next_arg);
|
my $next_arg_no_ext = no_extension($next_arg);
|
||||||
push (@quoted_args, $next_arg);
|
push (@quoted_args, $next_arg);
|
||||||
push (@quoted_args_no_ext, $next_arg_no_ext);
|
push (@quoted_args_no_ext, $next_arg_no_ext);
|
||||||
|
@ -2401,32 +2427,6 @@ sub xargs_computations {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub trim {
|
|
||||||
# Removes white space as specifed by --trim:
|
|
||||||
# n = nothing
|
|
||||||
# l = start
|
|
||||||
# r = end
|
|
||||||
# lr|rl = both
|
|
||||||
# Returns:
|
|
||||||
# string with white space removed as needed
|
|
||||||
my (@strings) = (@_);
|
|
||||||
my $arg;
|
|
||||||
if($Global::trim eq "n") {
|
|
||||||
# skip
|
|
||||||
} elsif($Global::trim eq "l") {
|
|
||||||
for $arg (@strings) { $arg =~ s/^\s+//; }
|
|
||||||
} elsif($Global::trim eq "r") {
|
|
||||||
for $arg (@strings) { $arg =~ s/\s+$//; }
|
|
||||||
} elsif($Global::trim eq "rl" or $Global::trim eq "lr") {
|
|
||||||
for $arg (@strings) { $arg =~ s/^\s+//; $arg =~ s/\s+$//; }
|
|
||||||
} else {
|
|
||||||
print STDERR "$Global::progname: --trim must be one of: r l rl lr\n";
|
|
||||||
wait_and_exit(255);
|
|
||||||
}
|
|
||||||
return wantarray ? @strings : "@strings";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub shell_quote {
|
sub shell_quote {
|
||||||
# Quote the string so shell will not expand any special chars
|
# Quote the string so shell will not expand any special chars
|
||||||
# Returns:
|
# Returns:
|
||||||
|
@ -2484,9 +2484,7 @@ sub context_replace {
|
||||||
return $job_line;
|
return $job_line;
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
sub __NUMBER_OF_PROCESSES_FILEHANDLES_MAX_LENGTH_OF_COMMAND_LINE__ {}
|
||||||
# Number of processes, filehandles, max length of command line
|
|
||||||
#
|
|
||||||
|
|
||||||
# Maximal command line length (for -m and -X)
|
# Maximal command line length (for -m and -X)
|
||||||
sub max_length_of_command_line {
|
sub max_length_of_command_line {
|
||||||
|
@ -2620,7 +2618,7 @@ sub processes_available_by_system_limit {
|
||||||
|
|
||||||
# If there are no more command lines, then we have a process
|
# If there are no more command lines, then we have a process
|
||||||
# per command line, so no need to go further
|
# per command line, so no need to go further
|
||||||
($next_command_line, $args_ref) = next_command_line();
|
($next_command_line, $args_ref) = get_command_line();
|
||||||
if(defined $next_command_line) {
|
if(defined $next_command_line) {
|
||||||
push(@command_lines, $next_command_line, $args_ref);
|
push(@command_lines, $next_command_line, $args_ref);
|
||||||
}
|
}
|
||||||
|
@ -2989,9 +2987,7 @@ sub max {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
sub __RUNNING_AND_PRINTING_THE_JOBS__ {}
|
||||||
# Running and printing the jobs
|
|
||||||
#
|
|
||||||
|
|
||||||
# Variable structure:
|
# Variable structure:
|
||||||
# $Global::running{$pid}{'seq'} = printsequence
|
# $Global::running{$pid}{'seq'} = printsequence
|
||||||
|
@ -3045,187 +3041,6 @@ sub login_and_host {
|
||||||
return $1;
|
return $1;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub next_command_line_with_sshlogin {
|
|
||||||
# Returns:
|
|
||||||
# next command to run with ssh command wrapping if remote
|
|
||||||
my $sshlogin = shift;
|
|
||||||
my ($next_command_line, $args_ref) = next_command_line();
|
|
||||||
my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin);
|
|
||||||
my ($pre,$post)=("","");
|
|
||||||
if($next_command_line and $serverlogin ne ":") {
|
|
||||||
for my $file (@$args_ref) {
|
|
||||||
if($::opt_transfer) {
|
|
||||||
# --transfer
|
|
||||||
$pre .= sshtransfer($sshlogin,$file).";";
|
|
||||||
}
|
|
||||||
if(@Global::ret_files) {
|
|
||||||
# --return or --trc
|
|
||||||
$post .= sshreturn($sshlogin,$file).";";
|
|
||||||
}
|
|
||||||
if($::opt_cleanup) {
|
|
||||||
# --cleanup
|
|
||||||
$post .= sshcleanup($sshlogin,$file).";";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($post) {
|
|
||||||
# We need to save the exit status of the job
|
|
||||||
$post = '_EXIT_status=$?; '.$post.' exit $_EXIT_status;';
|
|
||||||
}
|
|
||||||
return ($pre . "$sshcmd $serverlogin "
|
|
||||||
.shell_quote($next_command_line).";".$post);
|
|
||||||
} else {
|
|
||||||
return $next_command_line;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub next_command_line {
|
|
||||||
# Returns:
|
|
||||||
# next command line
|
|
||||||
# list of arguments for the line
|
|
||||||
my ($cmd_line,$args_ref);
|
|
||||||
if(@Global::unget_next_command_line) {
|
|
||||||
$cmd_line = shift @Global::unget_next_command_line;
|
|
||||||
$args_ref = shift @Global::unget_next_command_line;
|
|
||||||
} else {
|
|
||||||
do {
|
|
||||||
($cmd_line,$args_ref) = generate_command_line($Global::command);
|
|
||||||
} while (defined $cmd_line and $cmd_line =~ /^\s*$/); # Skip empty lines
|
|
||||||
}
|
|
||||||
return ($cmd_line,$args_ref);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub unget_command_line {
|
|
||||||
# Returns: N/A
|
|
||||||
push @Global::unget_next_command_line, @_;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub more_arguments {
|
|
||||||
# Returns:
|
|
||||||
# whether there are more arguments to be processed or not
|
|
||||||
my $fh = shift || $Global::argfile;
|
|
||||||
return (@Global::unget_arg or @Global::unget_lines or not eof $fh);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub get_next_arg_from_fh {
|
|
||||||
# Returns:
|
|
||||||
# next argument from file handle - quoted if needed
|
|
||||||
# undef if end of file
|
|
||||||
my $fh = shift;
|
|
||||||
my $arg;
|
|
||||||
if(not $Private::unget{$fh}) {
|
|
||||||
@{$Private::unget{$fh}} = ();
|
|
||||||
}
|
|
||||||
my $unget_ref = $Private::unget{$fh};
|
|
||||||
if(@$unget_ref) {
|
|
||||||
# Ungotten arg exists
|
|
||||||
$arg = shift @$unget_ref;
|
|
||||||
} else {
|
|
||||||
if(not more_arguments($fh)) {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
$arg = <$fh>;
|
|
||||||
# Remove delimiter
|
|
||||||
$arg =~ s:$/$::;
|
|
||||||
}
|
|
||||||
if($Global::end_of_file_string and
|
|
||||||
$arg eq $Global::end_of_file_string) {
|
|
||||||
# Ignore the rest of input file
|
|
||||||
while (<$fh>) {}
|
|
||||||
@$unget_ref = ();
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
if($Global::ignore_empty) {
|
|
||||||
if($arg =~ /^\s*$/) {
|
|
||||||
return get_next_arg_from_fh($fh);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($Global::max_lines and more_arguments()) {
|
|
||||||
if($arg =~ /\s$/) {
|
|
||||||
# Trailing space => continued on next line
|
|
||||||
$arg .= get_next_arg_from_fh($fh);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(not @$unget_ref and $::opt_colsep) {
|
|
||||||
# split this into columns
|
|
||||||
if($Global::trim ne 'n') {
|
|
||||||
push @$unget_ref, split /$::opt_colsep/o, $arg;
|
|
||||||
} else {
|
|
||||||
push @$unget_ref, trim(split /$::opt_colsep/o, $arg);
|
|
||||||
}
|
|
||||||
$::opt_N = $#$unget_ref+1;
|
|
||||||
$Global::max_number_of_args = $::opt_N;
|
|
||||||
debug("unget_ref: @$unget_ref\n");
|
|
||||||
$arg = shift @$unget_ref;
|
|
||||||
}
|
|
||||||
if($Global::input_is_filename) {
|
|
||||||
$arg = shell_quote($arg);
|
|
||||||
}
|
|
||||||
debug($arg);
|
|
||||||
return $arg;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub get_next_arg {
|
|
||||||
# Returns:
|
|
||||||
# next argument from input quoted and trimmed as needed
|
|
||||||
# undef if end of file
|
|
||||||
my $arg;
|
|
||||||
if(@Global::unget_arg) {
|
|
||||||
return shift @Global::unget_arg;
|
|
||||||
} elsif(@Global::unget_lines) {
|
|
||||||
$arg = shift @Global::unget_lines;
|
|
||||||
if($Global::end_of_file_string and
|
|
||||||
$arg eq $Global::end_of_file_string) {
|
|
||||||
# Ignore the rest of input file
|
|
||||||
@Global::unget_lines = ();
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
if($Global::ignore_empty) {
|
|
||||||
if($arg =~ /^\s*$/) {
|
|
||||||
return get_next_arg();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($Global::max_lines and more_arguments()) {
|
|
||||||
if($arg =~ /\s$/) {
|
|
||||||
# Trailing space => continued on next line
|
|
||||||
$arg .= get_next_arg();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($::opt_colsep) {
|
|
||||||
# split this into columns
|
|
||||||
my @columns = split /$::opt_colsep/o, $arg;
|
|
||||||
$::opt_N = $#columns+1;
|
|
||||||
$Global::max_number_of_args = $::opt_N;
|
|
||||||
if($Global::trim ne 'n') {
|
|
||||||
@columns = trim(@columns);
|
|
||||||
}
|
|
||||||
if($Global::input_is_filename) {
|
|
||||||
unget_arg(shell_quote(@columns));
|
|
||||||
} else {
|
|
||||||
unget_arg(@columns);
|
|
||||||
}
|
|
||||||
return get_next_arg();
|
|
||||||
} else {
|
|
||||||
if($Global::trim ne 'n') {
|
|
||||||
$arg = trim($arg);
|
|
||||||
}
|
|
||||||
if($Global::input_is_filename) {
|
|
||||||
$arg = shell_quote($arg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$arg = get_next_arg_from_fh($Global::argfile);
|
|
||||||
if(defined $arg) {
|
|
||||||
$Global::total_jobs++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $arg;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub unget_arg {
|
|
||||||
# Returns: N/A
|
|
||||||
push @Global::unget_arg, @_;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub drain_job_queue {
|
sub drain_job_queue {
|
||||||
# Returns: N/A
|
# Returns: N/A
|
||||||
if($::opt_progress) {
|
if($::opt_progress) {
|
||||||
|
@ -3277,7 +3092,7 @@ sub progress {
|
||||||
# list of workers
|
# list of workers
|
||||||
# header that will fit on the screen
|
# header that will fit on the screen
|
||||||
# status message that will fit on the screen
|
# status message that will fit on the screen
|
||||||
my $termcols = columns();
|
my $termcols = terminal_columns();
|
||||||
my ($status, $header)=("x"x($termcols+1),"");
|
my ($status, $header)=("x"x($termcols+1),"");
|
||||||
my @workers = sort keys %Global::host;
|
my @workers = sort keys %Global::host;
|
||||||
my %sshlogin = map { $_ eq ":" ? ($_=>"local") : ($_=>$_) } @workers;
|
my %sshlogin = map { $_ eq ":" ? ($_=>"local") : ($_=>$_) } @workers;
|
||||||
|
@ -3412,7 +3227,7 @@ sub progress {
|
||||||
return ("workerlist" => $workerlist, "header" => $header, "status" => $status);
|
return ("workerlist" => $workerlist, "header" => $header, "status" => $status);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub columns {
|
sub terminal_columns {
|
||||||
# Get the number of columns of the display
|
# Get the number of columns of the display
|
||||||
# Returns:
|
# Returns:
|
||||||
# number of columns of the screen
|
# number of columns of the screen
|
||||||
|
@ -3458,7 +3273,7 @@ sub start_another_job {
|
||||||
my $sshlogin = shift;
|
my $sshlogin = shift;
|
||||||
# Do we have enough file handles to start another job?
|
# Do we have enough file handles to start another job?
|
||||||
if(enough_file_handles()) {
|
if(enough_file_handles()) {
|
||||||
my $command = next_command_line_with_sshlogin($sshlogin);
|
my $command = get_command_line_with_sshlogin($sshlogin);
|
||||||
if(defined $command) {
|
if(defined $command) {
|
||||||
debug("Command to run on '$sshlogin': $command\n");
|
debug("Command to run on '$sshlogin': $command\n");
|
||||||
my %jobinfo = start_job($command,$sshlogin);
|
my %jobinfo = start_job($command,$sshlogin);
|
||||||
|
@ -3602,11 +3417,190 @@ sub print_job {
|
||||||
close $out;
|
close $out;
|
||||||
close $err;
|
close $err;
|
||||||
}
|
}
|
||||||
|
sub __READING_AND_QUOTING_ARGUMENTS__ {}
|
||||||
|
|
||||||
#
|
sub get_command_line_with_sshlogin {
|
||||||
# Remote ssh
|
# Returns:
|
||||||
#
|
# next command to run with ssh command wrapping if remote
|
||||||
|
my $sshlogin = shift;
|
||||||
|
my ($next_command_line, $args_ref) = get_command_line();
|
||||||
|
my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin);
|
||||||
|
my ($pre,$post)=("","");
|
||||||
|
if($next_command_line and $serverlogin ne ":") {
|
||||||
|
for my $file (@$args_ref) {
|
||||||
|
if($::opt_transfer) {
|
||||||
|
# --transfer
|
||||||
|
$pre .= sshtransfer($sshlogin,$file).";";
|
||||||
|
}
|
||||||
|
if(@Global::ret_files) {
|
||||||
|
# --return or --trc
|
||||||
|
$post .= sshreturn($sshlogin,$file).";";
|
||||||
|
}
|
||||||
|
if($::opt_cleanup) {
|
||||||
|
# --cleanup
|
||||||
|
$post .= sshcleanup($sshlogin,$file).";";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($post) {
|
||||||
|
# We need to save the exit status of the job
|
||||||
|
$post = '_EXIT_status=$?; '.$post.' exit $_EXIT_status;';
|
||||||
|
}
|
||||||
|
return ($pre . "$sshcmd $serverlogin "
|
||||||
|
.shell_quote($next_command_line).";".$post);
|
||||||
|
} else {
|
||||||
|
return $next_command_line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_command_line {
|
||||||
|
# Returns:
|
||||||
|
# next command line
|
||||||
|
# list of arguments for the line
|
||||||
|
my ($cmd_line,$args_ref);
|
||||||
|
if(@Global::unget_next_command_line) {
|
||||||
|
$cmd_line = shift @Global::unget_next_command_line;
|
||||||
|
$args_ref = shift @Global::unget_next_command_line;
|
||||||
|
} else {
|
||||||
|
do {
|
||||||
|
($cmd_line,$args_ref) = generate_command_line($Global::command);
|
||||||
|
} while (defined $cmd_line and $cmd_line =~ /^\s*$/); # Skip empty lines
|
||||||
|
}
|
||||||
|
return ($cmd_line,$args_ref);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub unget_command_line {
|
||||||
|
# Returns: N/A
|
||||||
|
push @Global::unget_next_command_line, @_;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub more_arguments {
|
||||||
|
# Returns:
|
||||||
|
# whether there are more arguments to be processed or not
|
||||||
|
my $fh = shift || $Global::argfile;
|
||||||
|
return (@Global::unget_arg or @Global::unget_lines or not eof $fh);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_arg_from_fh {
|
||||||
|
# Returns:
|
||||||
|
# next argument from file handle - quoted if needed
|
||||||
|
# undef if end of file
|
||||||
|
my $fh = shift;
|
||||||
|
my $arg;
|
||||||
|
if(not $Private::unget{$fh}) {
|
||||||
|
@{$Private::unget{$fh}} = ();
|
||||||
|
}
|
||||||
|
my $unget_ref = $Private::unget{$fh};
|
||||||
|
if(@$unget_ref) {
|
||||||
|
# Ungotten arg exists
|
||||||
|
$arg = shift @$unget_ref;
|
||||||
|
} else {
|
||||||
|
if(not more_arguments($fh)) {
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
$arg = <$fh>;
|
||||||
|
# Remove delimiter
|
||||||
|
$arg =~ s:$/$::;
|
||||||
|
}
|
||||||
|
if($Global::end_of_file_string and
|
||||||
|
$arg eq $Global::end_of_file_string) {
|
||||||
|
# Ignore the rest of input file
|
||||||
|
while (<$fh>) {}
|
||||||
|
@$unget_ref = ();
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
if($Global::ignore_empty) {
|
||||||
|
if($arg =~ /^\s*$/) {
|
||||||
|
return get_arg_from_fh($fh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($Global::max_lines and more_arguments()) {
|
||||||
|
if($arg =~ /\s$/) {
|
||||||
|
# Trailing space => continued on next line
|
||||||
|
$arg .= get_arg_from_fh($fh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(not @$unget_ref and $::opt_colsep) {
|
||||||
|
# split this into columns
|
||||||
|
if($Global::trim ne 'n') {
|
||||||
|
push @$unget_ref, split /$::opt_colsep/o, $arg;
|
||||||
|
} else {
|
||||||
|
push @$unget_ref, trim(split /$::opt_colsep/o, $arg);
|
||||||
|
}
|
||||||
|
$::opt_N = $#$unget_ref+1;
|
||||||
|
$Global::max_number_of_args = $::opt_N;
|
||||||
|
debug("unget_ref: @$unget_ref\n");
|
||||||
|
$arg = shift @$unget_ref;
|
||||||
|
}
|
||||||
|
if($Global::input_is_filename) {
|
||||||
|
$arg = shell_quote($arg);
|
||||||
|
}
|
||||||
|
debug($arg);
|
||||||
|
return $arg;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_arg {
|
||||||
|
# Returns:
|
||||||
|
# next argument from input quoted and trimmed as needed
|
||||||
|
# undef if end of file
|
||||||
|
my $arg;
|
||||||
|
if(@Global::unget_arg) {
|
||||||
|
return shift @Global::unget_arg;
|
||||||
|
} elsif(@Global::unget_lines) {
|
||||||
|
$arg = shift @Global::unget_lines;
|
||||||
|
if($Global::end_of_file_string and
|
||||||
|
$arg eq $Global::end_of_file_string) {
|
||||||
|
# Ignore the rest of input file
|
||||||
|
@Global::unget_lines = ();
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
if($Global::ignore_empty) {
|
||||||
|
if($arg =~ /^\s*$/) {
|
||||||
|
return get_arg();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($Global::max_lines and more_arguments()) {
|
||||||
|
if($arg =~ /\s$/) {
|
||||||
|
# Trailing space => continued on next line
|
||||||
|
$arg .= get_arg();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($::opt_colsep) {
|
||||||
|
# split this into columns
|
||||||
|
my @columns = split /$::opt_colsep/o, $arg;
|
||||||
|
$::opt_N = $#columns+1;
|
||||||
|
$Global::max_number_of_args = $::opt_N;
|
||||||
|
if($Global::trim ne 'n') {
|
||||||
|
@columns = trim(@columns);
|
||||||
|
}
|
||||||
|
if($Global::input_is_filename) {
|
||||||
|
unget_arg(shell_quote(@columns));
|
||||||
|
} else {
|
||||||
|
unget_arg(@columns);
|
||||||
|
}
|
||||||
|
return get_arg();
|
||||||
|
} else {
|
||||||
|
if($Global::trim ne 'n') {
|
||||||
|
$arg = trim($arg);
|
||||||
|
}
|
||||||
|
if($Global::input_is_filename) {
|
||||||
|
$arg = shell_quote($arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$arg = get_arg_from_fh($Global::argfile);
|
||||||
|
if(defined $arg) {
|
||||||
|
$Global::total_jobs++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $arg;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub unget_arg {
|
||||||
|
# Returns: N/A
|
||||||
|
push @Global::unget_arg, @_;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub __REMOTE_SSH__ {}
|
||||||
sub read_sshloginfile {
|
sub read_sshloginfile {
|
||||||
# Returns: N/A
|
# Returns: N/A
|
||||||
my $file = shift;
|
my $file = shift;
|
||||||
|
@ -3818,9 +3812,7 @@ sub cleanup_basefile {
|
||||||
print `$cmd`;
|
print `$cmd`;
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
sub __SIGNAL_HANDLING__ {}
|
||||||
# Signal handling
|
|
||||||
#
|
|
||||||
|
|
||||||
sub list_running_jobs {
|
sub list_running_jobs {
|
||||||
# Returns: N/A
|
# Returns: N/A
|
||||||
|
@ -3930,9 +3922,7 @@ sub reaper {
|
||||||
$Private::reaperlevel--;
|
$Private::reaperlevel--;
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
sub __USAGE__ {}
|
||||||
# Usage
|
|
||||||
#
|
|
||||||
|
|
||||||
sub wait_and_exit {
|
sub wait_and_exit {
|
||||||
# If we do not wait, we sometimes get segfault
|
# If we do not wait, we sometimes get segfault
|
||||||
|
@ -3981,9 +3971,7 @@ sub show_limits {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
sub __DEBUGGING__ {}
|
||||||
# Debugging
|
|
||||||
#
|
|
||||||
|
|
||||||
sub debug {
|
sub debug {
|
||||||
# Returns: N/A
|
# Returns: N/A
|
||||||
|
|
Loading…
Reference in a new issue