From e25d594defcf06e13fa864e77fff308fcfd03fbb Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Fri, 7 Jan 2022 18:14:41 +0100 Subject: [PATCH] bin/heat: heat.schedule is now optional --- bin/heat | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/bin/heat b/bin/heat index 4748edc..9227df5 100755 --- a/bin/heat +++ b/bin/heat @@ -46,18 +46,23 @@ if (($ARGV[0]||"")=~/^[@]0?(\d+):0?(\d+)$/) { $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)) { @@ -104,7 +109,11 @@ if (defined $reset) { } 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; @@ -120,7 +129,7 @@ sub printminutes($) { 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; -- 1.8.3.1