die "No bestnext" if !defined $bestnext;
return [$prev,$next];
}
-$finishline=[schedulenext($minutes)->[1]];
+$finishline=schedulenext($minutes);
+$finishline=[$finishline->[1]] if $finishline;
my $silent=shift if ($ARGV[0]||"") eq "-s";
logmsg "command: ".join(" ",@ARGV) if !$silent&&@ARGV;
sub info($) {
}
if ($silent) {
if (!defined $newstate&&!defined $reset&&%schedule) {
- my $prev=schedulenext($minutes)->[0];
- if ($prev=~m{^@{[ printminutes $minutes ]} (.)\n$}) {
- $newstate=$1;
- logmsg "scheduled: $prev";
+ my $prev=schedulenext($minutes);
+ if ($prev) {
+ my $prev=$prev->[0];
+ if ($prev=~m{ (.)\n$}) {
+ $newstate=$1;
+ logmsg "scheduled: $prev";
+ }
}
}
$newstate=$state if !defined $newstate;
info "->$newstate";
writefile $statefile,"$newstate\n" if $state ne $newstate;
logmsg "$state->$newstate" if $state ne $newstate;
+ if ($newstate ne "s") {
+ my $pid=readfile "pidof -x dnf;true|";
+ die "\n".printminutes($minutes)." change $state".($state eq $newstate?"":"->$newstate")." refused: dnf running: $pid" if $pid;
+ }
my $both={"s"=>[0,0],"0"=>[1,0],"1"=>[1,1]}->{$newstate};
spawn "$usbrelay 1 ".$both->[0];
spawn "$usbrelay 2 ".$both->[1];
setstate;
if (!$silent&&defined $reset) {
unlink_resetfile;
- $finishline=[schedulenext($minutes)->[1]];
+ $finishline=schedulenext($minutes);
+ $finishline=[$finishline->[1]] if $finishline;
}
finish;
}
$reset=$newreset;
if ($reset=~/^\d+$/) {
- $resetminutes=$reset+$minutes;
+ $resetminutes=($reset+$minutes)%(24*60);
$reset=printminutes($resetminutes)." reset\n";
setstate;
} else {