X-Git-Url: https://git.jankratochvil.net/?p=nethome.git;a=blobdiff_plain;f=bin%2Fheat;fp=bin%2Fheat;h=9227df5471b25a99109b08d6522e95f2bf79ef77;hp=4748edcbaebbbdf6f02996ed064862ba11cc07d0;hb=e25d594defcf06e13fa864e77fff308fcfd03fbb;hpb=547aa30e0870b2b9e34c22080ac40e318803c13c 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;