$minutes=$1*60+$2;
shift;
}
-my $schedule=readfile $schedulefile;
my $finishline;
my %schedule;
-while ($schedule=~s/^(0?(\d+):0?(\d+)) ([01s])\n//) {
- my $tm=$2*60+$3;
- warn "$schedulefile set twice for: $1" if defined $schedule{$tm};
- $schedule{$tm-24*60}="$1 $4\n";
- $schedule{$tm }="$1 $4\n";
- $schedule{$tm+24*60}="$1 $4\n";
-}
-warn "$schedulefile garbage: $schedule" if $schedule ne "";
+my $schedule;
+if (-e $schedulefile) {
+ $schedule=readfile $schedulefile;
+ while ($schedule=~s/^(0?(\d+):0?(\d+)) ([01s])\n//) {
+ my $tm=$2*60+$3;
+ warn "$schedulefile set twice for: $1" if defined $schedule{$tm};
+ $schedule{$tm-24*60}="$1 $4\n";
+ $schedule{$tm }="$1 $4\n";
+ $schedule{$tm+24*60}="$1 $4\n";
+ }
+ warn "$schedulefile garbage: $schedule" if $schedule ne "";
+ warn "Empty $schedulefile" if !%schedule;
+}
sub schedulenext($) {
+ return undef if !%schedule;
my($now)=@_;
my($bestprev,$prev,$bestnext,$next);
for my $found (keys(%schedule)) {
}
sub finishlinereset() {
$finishline=schedulenext $resetminutes;
- splice @$finishline,1,0,$reset;
+ if ($finishline) {
+ splice @$finishline,1,0,$reset;
+ } else {
+ $finishline=[$reset];
+ }
}
finishlinereset if defined $reset;
my $state=readfile $statefile;
return sprintf "%02d:%02d",int($m/60),$m%60;
}
if ($silent) {
- if (!defined $newstate&&!defined $reset) {
+ if (!defined $newstate&&!defined $reset&&%schedule) {
my $prev=schedulenext($minutes)->[0];
if ($prev=~m{^@[ printminutes $minutes ] (.)\n$}) {
$newstate=$1;