parallel: Cleaned up error() and warning().

This commit is contained in:
Ole Tange 2015-05-14 16:14:42 +02:00
parent d4c347c22b
commit 09de088df9

View file

@ -393,7 +393,7 @@ sub spreadstdin {
my $old_blocksize = $blocksize;
$blocksize = ::min(ceil($blocksize * 1.3 + 1), $two_gb);
::warning("A record was longer than $old_blocksize. " .
"Increasing to --blocksize $blocksize\n");
"Increasing to --blocksize $blocksize.");
}
}
}
@ -930,7 +930,7 @@ sub parse_options {
$opt::memfree = multiply_binary_prefix($opt::memfree);
if(defined $opt::controlmaster) { $opt::noctrlc = 1; }
if(defined $opt::timeout and $opt::timeout !~ /^\d+(\.\d+)?%?$/) {
::error("--timeout must be seconds or percentage\n");
::error("--timeout must be seconds or percentage.");
wait_and_exit(255);
}
if(defined $opt::minversion) {
@ -1014,8 +1014,8 @@ sub parse_options {
if(defined $opt::pipepart and
(defined $opt::L or defined $opt::max_lines
or defined $opt::max_replace_args)) {
::error("--pipepart is incompatible with --max-replace-args, ",
"--max-lines, and -L.\n");
::error("--pipepart is incompatible with --max-replace-args, ".
"--max-lines, and -L.");
wait_and_exit(255);
}
if(grep /^$Global::arg_sep$|^$Global::arg_file_sep$/o, @ARGV) {
@ -1031,14 +1031,14 @@ sub parse_options {
$opt::progress = $opt::bar;
}
if(defined $opt::retired) {
::error("-g has been retired. Use --group.\n");
::error("-B has been retired. Use --bf.\n");
::error("-T has been retired. Use --tty.\n");
::error("-U has been retired. Use --er.\n");
::error("-W has been retired. Use --wd.\n");
::error("-Y has been retired. Use --shebang.\n");
::error("-H has been retired. Use --halt.\n");
::error("--tollef has been retired. Use -u -q --arg-sep -- and --load for -l.\n");
::error("-g has been retired. Use --group.",
"-B has been retired. Use --bf.",
"-T has been retired. Use --tty.",
"-U has been retired. Use --er.",
"-W has been retired. Use --wd.",
"-Y has been retired. Use --shebang.",
"-H has been retired. Use --halt.",
"--tollef has been retired. Use -u -q --arg-sep -- and --load for -l.");
::wait_and_exit(255);
}
citation_notice();
@ -1051,7 +1051,7 @@ sub parse_options {
# As we do not know the max line length on the remote machine
# long commands generated by xargs may fail
# If $opt::max_replace_args is set, it is probably safe
::warning("Using -X or -m with --sshlogin may fail.\n");
::warning("Using -X or -m with --sshlogin may fail.");
}
if(not defined $opt::jobs) {
@ -1110,7 +1110,7 @@ sub init_globals {
$ENV{'TMPDIR'} ||= "/tmp";
if(not $ENV{HOME}) {
# $ENV{HOME} is sometimes not set if called from PHP
::warning("\$HOME not set. Using /tmp\n");
::warning("\$HOME not set. Using /tmp.");
$ENV{HOME} = "/tmp";
}
}
@ -1266,7 +1266,7 @@ sub parse_semaphore {
}
if($Global::interactive and $opt::bg) {
::error("Jobs running in the ".
"background cannot be interactive.\n");
"background cannot be interactive.");
::wait_and_exit(255);
}
}
@ -1279,7 +1279,7 @@ sub record_env {
if(open(my $vars_fh, ">", $ignore_filename)) {
print $vars_fh map { $_,"\n" } keys %ENV;
} else {
::error("Cannot write to $ignore_filename.\n");
::error("Cannot write to $ignore_filename.");
::wait_and_exit(255);
}
}
@ -1321,7 +1321,7 @@ sub open_joblog {
if(($opt::resume or $opt::resume_failed)
and
not ($opt::joblog or $opt::results)) {
::error("--resume and --resume-failed require --joblog or --results.\n");
::error("--resume and --resume-failed require --joblog or --results.");
::wait_and_exit(255);
}
if($opt::joblog) {
@ -1343,6 +1343,7 @@ sub open_joblog {
# This is 30% faster than set_job_already_run($1);
vec($Global::job_already_run,($1||0),1) = 1;
} elsif(not /\d+\s+[^\s]+\s+([-0-9.]+\s+){6}/) {
chomp;
::error("Format of '$opt::joblog' is wrong: $_");
::wait_and_exit(255);
}
@ -1353,7 +1354,7 @@ sub open_joblog {
if($append) {
# Append to joblog
if(not open($Global::joblog, ">>", $opt::joblog)) {
::error("Cannot append to --joblog $opt::joblog.\n");
::error("Cannot append to --joblog $opt::joblog.");
::wait_and_exit(255);
}
} else {
@ -1362,7 +1363,7 @@ sub open_joblog {
$Global::joblog = $Global::fd{1};
} elsif(not open($Global::joblog, ">", $opt::joblog)) {
# Overwrite the joblog
::error("Cannot write to --joblog $opt::joblog.\n");
::error("Cannot write to --joblog $opt::joblog.");
::wait_and_exit(255);
}
print $Global::joblog
@ -1484,7 +1485,7 @@ sub read_options {
if(grep /^$profile$/, @config_profiles) {
# config file is not required to exist
} else {
::error("$profile not readable.\n");
::error("$profile not readable.");
wait_and_exit(255);
}
}
@ -1758,7 +1759,7 @@ sub open_or_exit {
}
my $fh = gensym;
if(not open($fh, "<", $file)) {
::error("Cannot open input file `$file': No such file or directory.\n");
::error("Cannot open input file `$file': No such file or directory.");
wait_and_exit(255);
}
return $fh;
@ -2011,15 +2012,15 @@ sub init_run_jobs {
# Count down the number of jobs to run for this SSHLogin.
my $max = $sshlogin->max_jobs_running();
if($max > 1) { $max--; } else {
::error("No more processes: cannot run a single job. Something is wrong.\n");
::error("No more processes: cannot run a single job. Something is wrong.");
::wait_and_exit(255);
}
$sshlogin->set_max_jobs_running($max);
# Sleep up to 300 ms to give other processes time to die
::usleep(rand()*300);
::warning("No more processes: ",
"Decreasing number of running jobs to $max. ",
"Raising ulimit -u or /etc/security/limits.conf may help.\n");
::warning("No more processes: ".
"Decreasing number of running jobs to $max.",
"Raising ulimit -u or /etc/security/limits.conf may help.");
return 0;
}
}
@ -2027,7 +2028,7 @@ sub init_run_jobs {
# No more file handles
$no_more_file_handles_warned++ or
::warning("No more file handles. ",
"Raising ulimit -n or /etc/security/limits.conf may help.\n");
"Raising ulimit -n or /etc/security/limits.conf may help.");
return 0;
}
}
@ -2096,7 +2097,7 @@ sub drain_job_queue {
# These jobs may not be started:
# * because there the --filter-hosts has removed all
if(not %Global::host) {
::error("There are no hosts left to run on.\n");
::error("There are no hosts left to run on.");
::wait_and_exit(255);
}
# * because of loadavg
@ -2104,7 +2105,7 @@ sub drain_job_queue {
start_more_jobs();
$sleep = ::reap_usleep($sleep);
if($Global::max_jobs_running == 0) {
::warning("There are no job slots available. Increase --jobs.\n");
::warning("There are no job slots available. Increase --jobs.");
}
}
} while ($Global::total_running > 0
@ -2473,7 +2474,7 @@ sub expand_slf_shorthand {
} elsif(not -r $file) {
if(not -r $ENV{'HOME'}."/.parallel/".$file) {
# Try prepending ~/.parallel
::error("Cannot open $file.\n");
::error("Cannot open $file.");
::wait_and_exit(255);
} else {
$file = $ENV{'HOME'}."/.parallel/".$file;
@ -2499,7 +2500,7 @@ sub read_sshloginfile {
} else {
if(not open($in_fh, "<", $file)) {
# Try the filename
::error("Cannot open $file.\n");
::error("Cannot open $file.");
::wait_and_exit(255);
}
}
@ -2587,15 +2588,15 @@ sub parse_sshlogin {
if(not remote_hosts()) {
# There are no remote hosts
if(@opt::trc) {
::warning("--trc ignored as there are no remote --sshlogin.\n");
::warning("--trc ignored as there are no remote --sshlogin.");
} elsif (defined $opt::transfer) {
::warning("--transfer ignored as there are no remote --sshlogin.\n");
::warning("--transfer ignored as there are no remote --sshlogin.");
} elsif (@opt::return) {
::warning("--return ignored as there are no remote --sshlogin.\n");
::warning("--return ignored as there are no remote --sshlogin.");
} elsif (defined $opt::cleanup) {
::warning("--cleanup ignored as there are no remote --sshlogin.\n");
::warning("--cleanup ignored as there are no remote --sshlogin.");
} elsif (@opt::basefile) {
::warning("--basefile ignored as there are no remote --sshlogin.\n");
::warning("--basefile ignored as there are no remote --sshlogin.");
}
}
}
@ -2624,7 +2625,7 @@ sub setup_basefile {
if($sshlogin->string() eq ":") { next }
for my $file (@opt::basefile) {
if($file !~ m:^/: and $opt::workdir eq "...") {
::error("Work dir '...' will not work with relative basefiles.\n");
::error("Work dir '...' will not work with relative basefiles.");
::wait_and_exit(255);
}
$workdir ||= Job->new("")->workdir();
@ -2669,7 +2670,7 @@ sub filter_hosts {
parse_host_filtering(parallelized_host_filtering());
delete @Global::host{@$down_hosts_ref};
@$down_hosts_ref and ::warning("Removed @$down_hosts_ref\n");
@$down_hosts_ref and ::warning("Removed @$down_hosts_ref.");
$Global::minimal_command_line_length = 8_000_000;
while (my ($sshlogin, $obj) = each %Global::host) {
@ -2734,7 +2735,7 @@ sub parse_host_filtering {
# signal == 127: parallel not installed remote
# Set ncpus and ncores = 1
::warning("Could not figure out ",
"number of cpus on $host. Using 1.\n");
"number of cpus on $host. Using 1.");
$ncores{$host} = 1;
$ncpus{$host} = 1;
$maxlen{$host} = Limits::Command::max_length();
@ -3282,16 +3283,14 @@ sub status {
sub warning {
my @w = @_;
my $fh = $Global::status_fd || *STDERR;
my $prog = $Global::progname || "parallel";
print $fh $prog, ": Warning: ", @w;
status(map { ($prog, ": Warning: ", $_, "\n"); } @w);
}
sub error {
my @w = @_;
my $fh = $Global::status_fd || *STDERR;
my $prog = $Global::progname || "parallel";
print $fh $prog, ": Error: ", @w;
status(map { ($prog, ": Error: ", $_, "\n"); } @w);
}
sub die_bug {
@ -3401,6 +3400,14 @@ sub tmpname {
# if you ssh to localhost (or a shared file system) under a different name
my $name = shift;
my($tmpname);
if(not -w $ENV{'TMPDIR'}) {
if(not -e $ENV{'TMPDIR'}) {
::error("Tmpdir '$ENV{'TMPDIR'}' does not exist.","Try 'mkdir $ENV{'TMPDIR'}'");
} else {
::error("Tmpdir '$ENV{'TMPDIR'}' is not writable.","Try 'chmod +w $ENV{'TMPDIR'}'");
}
::wait_and_exit(255);
}
do {
$tmpname = $ENV{'TMPDIR'}."/".$name.
join"", map { (0..9,"a".."z","A".."Z")[rand(62)] } (1..5);
@ -3555,8 +3562,8 @@ sub multiply_binary_prefix {
tell $disk_full_fh != 8193) {
# On raspbian the disk can be full except for 10 chars.
if(not $error_printed) {
::error("Output is incomplete. Cannot append to buffer file in $ENV{'TMPDIR'}. Is the disk full?\n");
::error("Change \$TMPDIR with --tmpdir or use --compress.\n");
::error("Output is incomplete. Cannot append to buffer file in $ENV{'TMPDIR'}. Is the disk full?",
"Change \$TMPDIR with --tmpdir or use --compress.");
$error_printed = 1;
}
::wait_and_exit(255);
@ -4524,11 +4531,11 @@ sub compute_max_loadavg {
close $in_fh;
$load = $self->compute_max_loadavg($opt_load_file);
} else {
::error("Cannot open $loadspec.\n");
::error("Cannot open $loadspec.");
::wait_and_exit(255);
}
} else {
::error("Parsing of --load failed.\n");
::error("Parsing of --load failed.");
::die_usage();
}
if($load < 0.01) {
@ -4730,8 +4737,8 @@ sub compute_number_of_processes {
# It took more than 0.01 second to fork a processes on avg.
# Give the user a warning. He can press Ctrl-C if this
# sucks.
::warning("Starting $system_limit processes took > $forktime sec.\n",
"Consider adjusting -j. Press CTRL-C to stop.\n");
::warning("Starting $system_limit processes took > $forktime sec.",
"Consider adjusting -j. Press CTRL-C to stop.");
$slow_spawining_warning_printed = 1;
}
}
@ -4740,19 +4747,20 @@ sub compute_number_of_processes {
if($system_limit < $wanted_processes) {
# The system_limit is less than the wanted_processes
if($system_limit < 1 and not $Global::JobQueue->empty()) {
::warning("Cannot spawn any jobs. Raising ulimit -u or /etc/security/limits.conf\n",
"or /proc/sys/kernel/pid_max may help.\n");
::warning("Cannot spawn any jobs. Raising ulimit -u or /etc/security/limits.conf",
"or /proc/sys/kernel/pid_max may help.");
::wait_and_exit(255);
}
if(not $more_filehandles) {
::warning("Only enough file handles to run ", $system_limit, " jobs in parallel.\n",
"Running 'parallel -j0 -N", $system_limit, " --pipe parallel -j0' or ",
"raising ulimit -n or /etc/security/limits.conf may help.\n");
::warning("Only enough file handles to run ", $system_limit, " jobs in parallel.",
"Running 'parallel -j0 -N $system_limit --pipe parallel -j0' or ".
"raising ulimit -n or /etc/security/limits.conf may help.");
}
if($max_system_proc_reached) {
::warning("Only enough available processes to run ", $system_limit,
" jobs in parallel. Raising ulimit -u or /etc/security/limits.conf\n",
"or /proc/sys/kernel/pid_max may help.\n");
::warning("Only enough available processes to run ". $system_limit.
" jobs in parallel.",
"Raising ulimit -u or /etc/security/limits.conf ",
"or /proc/sys/kernel/pid_max may help.");
}
}
if($] == 5.008008 and $system_limit > 1000) {
@ -4788,12 +4796,12 @@ sub simultaneous_sshlogin_limit {
$self->simultaneous_sshlogin($wanted_processes));
if($ssh_limit < $wanted_processes) {
my $serverlogin = $self->serverlogin();
::warning("ssh to $serverlogin only allows ",
"for $ssh_limit simultaneous logins.\n",
"You may raise this by changing ",
"/etc/ssh/sshd_config:MaxStartups and MaxSessions on $serverlogin.\n",
"Using only ",$ssh_limit-1," connections ",
"to avoid race conditions.\n");
::warning("ssh to $serverlogin only allows ".
"for $ssh_limit simultaneous logins.",
"You may raise this by changing ".
"/etc/ssh/sshd_config:MaxStartups and MaxSessions on $serverlogin.",
"Using only ".($ssh_limit-1)." connections ".
"to avoid race conditions.");
}
# Race condition can cause problem if using all sshs.
if($ssh_limit > 1) { $ssh_limit -= 1; }
@ -4863,11 +4871,11 @@ sub user_requested_processes {
close $in_fh;
$processes = $self->user_requested_processes($opt_P_file);
} else {
::error("Cannot open $opt_P.\n");
::error("Cannot open $opt_P.");
::wait_and_exit(255);
}
} else {
::error("Parsing of --jobs/-j/--max-procs/-P failed.\n");
::error("Parsing of --jobs/-j/--max-procs/-P failed.");
::die_usage();
}
$processes = ::ceil($processes);
@ -4899,8 +4907,8 @@ sub ncpus {
if($ncpu =~ /^\s*[0-9]+\s*$/s) {
$self->{'ncpus'} = $ncpu;
} else {
::warning("Could not figure out ",
"number of cpus on $serverlogin ($ncpu). Using 1.\n");
::warning("Could not figure out ".
"number of cpus on $serverlogin ($ncpu). Using 1.");
$self->{'ncpus'} = 1;
}
}
@ -4961,7 +4969,7 @@ sub no_of_cpus {
chomp $no_of_cpus;
return $no_of_cpus;
} else {
::warning("Cannot figure out number of cpus. Using 1.\n");
::warning("Cannot figure out number of cpus. Using 1.");
return 1;
}
}
@ -5018,7 +5026,7 @@ sub no_of_cores {
chomp $no_of_cores;
return $no_of_cores;
} else {
::warning("Cannot figure out number of CPU cores. Using 1.\n");
::warning("Cannot figure out number of CPU cores. Using 1.");
return 1;
}
}
@ -5460,7 +5468,7 @@ sub rsync_transfer_cmd {
my $file = shift;
my $workdir = shift;
if(not -r $file) {
::warning($file, " is not readable and will not be transferred.\n");
::warning($file. " is not readable and will not be transferred.");
return "true";
}
my $rsync_destdir;
@ -5599,10 +5607,10 @@ sub total_jobs {
my $start = time;
while($job = $self->get()) {
if(time - $start > 10) {
::warning("Reading ".scalar(@queue)." arguments took longer than 10 seconds.\n");
$opt::eta && ::warning("Consider removing --eta.\n");
$opt::bar && ::warning("Consider removing --bar.\n");
$opt::shuf && ::warning("Consider removing --shuf.\n");
::warning("Reading ".scalar(@queue)." arguments took longer than 10 seconds.");
$opt::eta && ::warning("Consider removing --eta.");
$opt::bar && ::warning("Consider removing --bar.");
$opt::shuf && ::warning("Consider removing --shuf.");
last;
}
push @queue, $job;
@ -5792,13 +5800,13 @@ sub openoutputfiles {
# prefix/name1/val1/name2/val2/stdout
$outname = "$dir/stdout";
if(not open($outfhw, "+>", $outname)) {
::error("Cannot write to `$outname'.\n");
::error("Cannot write to `$outname'.");
::wait_and_exit(255);
}
# prefix/name1/val1/name2/val2/stderr
$errname = "$dir/stderr";
if(not open($errfhw, "+>", $errname)) {
::error("Cannot write to `$errname'.\n");
::error("Cannot write to `$errname'.");
::wait_and_exit(255);
}
$self->set_fh(1,"unlink","");
@ -6517,7 +6525,7 @@ sub sshlogin_wrap {
push @vars, grep { not defined $ignore{$_} } keys %ENV;
@vars = grep { not /^_$/ } @vars;
} else {
::error("Run '$Global::progname --record-env' in a clean environment first.\n");
::error("Run '$Global::progname --record-env' in a clean environment first.");
::wait_and_exit(255);
}
}
@ -6548,7 +6556,7 @@ sub sshlogin_wrap {
if(@bashfunc) {
# Functions are not supported for all shells
if($Global::shell !~ m:/(bash|rbash|zsh|rzsh|dash|ksh):) {
::warning("Shell functions may not be supported in $Global::shell\n");
::warning("Shell functions may not be supported in $Global::shell.");
}
$bashfuncset =
'@bash_functions=qw('."@bash_functions".");".
@ -7006,13 +7014,13 @@ sub print_dryrun_and_verbose {
# # FIFO for communicating exit val
# my $tmpfifo = ::tmpfifo();
if(length($tmpfifo) >=100) {
::error("tmux does not support sockets with path > 100\n");
::error("tmux does not support sockets with path > 100.");
::wait_and_exit(255);
}
my $visual_command = $self->replaced();
my $title = $visual_command;
if($visual_command =~ /\0/) {
::error("Command line contains NUL. tmux is confused by NUL.\n");
::error("Command line contains NUL. tmux is confused by NUL.");
::wait_and_exit(255);
}
# ; causes problems
@ -7229,7 +7237,7 @@ sub files_print {
# If the job is dead: close printing fh. Needed for --compress
close $self->fh($fdno,"w");
if($? and $opt::compress) {
::error($opt::compress_program." failed.\n");
::error($opt::compress_program." failed.");
$self->set_exitstatus(255);
}
if($opt::compress) {
@ -7260,7 +7268,7 @@ sub linebuffer_print {
# If the job is dead: close printing fh. Needed for --compress
close $self->fh($fdno,"w");
if($? and $opt::compress) {
::error($opt::compress_program." failed.\n");
::error($opt::compress_program." failed.");
$self->set_exitstatus(255);
}
if($opt::compress) {
@ -7330,7 +7338,7 @@ sub linebuffer_print {
# decompress done: close fh
close $in_fh;
if($? and $opt::compress) {
::error($opt::decompress_program." failed.\n");
::error($opt::decompress_program." failed.");
$self->set_exitstatus(255);
}
}
@ -7343,7 +7351,7 @@ sub tag_print {
my $buf;
close $self->fh($fdno,"w");
if($? and $opt::compress) {
::error($opt::compress_program." failed.\n");
::error($opt::compress_program." failed.");
$self->set_exitstatus(255);
}
seek $in_fh, 0, 0;
@ -7373,7 +7381,7 @@ sub tag_print {
}
close $in_fh;
if($? and $opt::compress) {
::error($opt::decompress_program." failed.\n");
::error($opt::decompress_program." failed.");
$self->set_exitstatus(255);
}
}
@ -7384,7 +7392,7 @@ sub normal_print {
my $buf;
close $self->fh($fdno,"w");
if($? and $opt::compress) {
::error($opt::compress_program." failed.\n");
::error($opt::compress_program." failed.");
$self->set_exitstatus(255);
}
seek $in_fh, 0, 0;
@ -7407,7 +7415,7 @@ sub normal_print {
}
close $in_fh;
if($? and $opt::compress) {
::error($opt::decompress_program." failed.\n");
::error($opt::decompress_program." failed.");
$self->set_exitstatus(255);
}
}
@ -7672,15 +7680,15 @@ sub populate {
last;
} else {
my $args = join(" ", map { $_->orig() } @$next_arg);
::error("Command line too long (",
$self->len(), " >= ",
$max_len,
") at input ",
$self->{'arg_queue'}->arg_number(),
::error("Command line too long (".
$self->len(). " >= ".
$max_len.
") at input ".
$self->{'arg_queue'}->arg_number().
": ".
((length $args > 50) ?
(substr($args,0,50))."...\n" :
$args."\n"));
(substr($args,0,50))."..." :
$args));
$self->{'arg_queue'}->unget($self->pop());
::wait_and_exit(255);
}
@ -8126,7 +8134,7 @@ sub new {
# Is this really a command in $PATH starting with '-'?
my $cmd = $1;
if(not ::which($cmd)) {
::error("Command ($cmd) starts with '-'. Is this a wrong option?\n");
::error("Command ($cmd) starts with '-'. Is this a wrong option?");
::wait_and_exit(255);
}
}
@ -8140,7 +8148,7 @@ sub new {
(defined $opt::tagstring ? $opt::tagstring : $dummy)) {
# Disallow \257 to avoid nested {= {= =} =}
if(/\257/) {
::error("Command cannot contain the character \257. Use a function for that.\n");
::error("Command cannot contain the character \257. Use a function for that.");
::wait_and_exit(255);
}
# Needs to match rightmost left parens (Perl defaults to leftmost)
@ -8337,7 +8345,7 @@ sub get {
if($opt::pipe or $opt::pipepart) {
if($cmd_line->replaced() eq "") {
# Empty command - pipe requires a command
::error("--pipe must have a command to pipe into (e.g. 'cat').\n");
::error("--pipe must have a command to pipe into (e.g. 'cat').");
::wait_and_exit(255);
}
} else {
@ -8412,8 +8420,7 @@ sub max_length {
if($opt::max_chars <= $cached_limit) {
$Limits::Command::line_max_len = $opt::max_chars;
} else {
::warning("Value for -s option ",
"should be < $cached_limit.\n");
::warning("Value for -s option should be < $cached_limit.");
}
}
}
@ -8477,7 +8484,7 @@ sub tmux_length {
if($opt::tmux) {
$ENV{'TMUX'} ||= "tmux";
if(not ::which($ENV{'TMUX'})) {
::error($ENV{'TMUX'}." not found in \$PATH.\n");
::error($ENV{'TMUX'}." not found in \$PATH.");
::wait_and_exit(255);
}
my @out;
@ -8630,9 +8637,9 @@ sub new {
my $fhs = shift;
for my $fh (@$fhs) {
if(-t $fh) {
::warning("Input is read from the terminal.\n");
::warning("Only experts do this on purpose. ".
"Press CTRL-D to exit.\n");
::warning("Input is read from the terminal.",
"Only experts do this on purpose. ".
"Press CTRL-D to exit.");
}
}
return bless {
@ -8865,7 +8872,7 @@ sub new {
# We found hostgroups on the arg
@hostgroups = split(/\+/, $1);
if(not grep { defined $Global::hostgroups{$_} } @hostgroups) {
::warning("No such hostgroup (@hostgroups)\n");
::warning("No such hostgroup (@hostgroups).");
@hostgroups = (keys %Global::hostgroups);
}
} else {
@ -8908,7 +8915,7 @@ sub new {
# All is good
} else {
# The eval failed. Maybe $perlexpr is invalid perl?
::error("Cannot use $perlexpr: $@\n");
::error("Cannot use $perlexpr: $@");
::wait_and_exit(255);
}
}
@ -8942,7 +8949,7 @@ sub trim_of {
} elsif($Global::trim eq "rl" or $Global::trim eq "lr") {
for my $arg (@strings) { $arg =~ s/^\s+//; $arg =~ s/\s+$//; }
} else {
::error("--trim must be one of: r l rl lr.\n");
::error("--trim must be one of: r l rl lr.");
::wait_and_exit(255);
}
return wantarray ? @strings : "@strings";
@ -9114,7 +9121,7 @@ sub acquire {
and
time - $start_time > $opt::semaphoretimeout) {
# Timeout: Take the semaphore anyway
::warning("Semaphore timed out. Stealing the semaphore.\n");
::warning("Semaphore timed out. Stealing the semaphore.");
if(not -e $self->{'idfile'}) {
open (my $fh, ">", $self->{'idfile'}) or
::die_bug("timeout_write_idfile: $self->{'idfile'}");
@ -9127,7 +9134,7 @@ sub acquire {
and
time - $start_time > -$opt::semaphoretimeout) {
# Timeout: Exit
::warning("Semaphore timed out. Exiting.\n");
::warning("Semaphore timed out. Exiting.");
exit(1);
last;
}
@ -9216,8 +9223,8 @@ sub lock {
last;
} else {
if ($! =~ m/Function not implemented/) {
::warning("flock: $!");
::warning("Will wait for a random while\n");
::warning("flock: $!",
"Will wait for a random while.");
::usleep(rand(5000));
# File cannot be locked: No need to retry
$locked = 2;
@ -9276,7 +9283,7 @@ sub mkdir_or_die {
mkdir $ddir;
}
if(not -w $dir) {
::error("Cannot write to $dir: $!\n");
::error("Cannot write to $dir: $!");
::wait_and_exit(255);
}
}