From 1c46ae01296274cfa9c3693fea46b28efe6f138b Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Thu, 21 May 2009 09:58:09 +0000 Subject: [PATCH] Bugfix: close FH, override initial setstate git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@374 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/95_holiday.pm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/FHEM/95_holiday.pm b/FHEM/95_holiday.pm index d459dbacd..df0f8b7ff 100755 --- a/FHEM/95_holiday.pm +++ b/FHEM/95_holiday.pm @@ -1,4 +1,4 @@ -############################################## + package main; use strict; @@ -25,7 +25,9 @@ holiday_Define($$) { my ($hash, $def) = @_; - return holiday_refresh($hash->{NAME}, undef); + return holiday_refresh($hash->{NAME}, undef) if($init_done); + InternalTimer(gettimeofday()+1, "holiday_refresh", $hash->{NAME}, 0); + return undef; } sub @@ -75,7 +77,6 @@ holiday_refresh($$) } elsif($l =~ m/^2/) { # Easter date: 2 +1 Ostermontag eval { require DateTime::Event::Easter } ; - if( $@) { Log 1, "$@"; @@ -93,6 +94,7 @@ holiday_refresh($$) my %wd = ("Sun"=>0, "Mon"=>1, "Tue"=>2, "Wed"=>3, "Thu"=>4, "Fri"=>5, "Sat"=>6); my @md = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); + $md[1]=29 if(schaltjahr($fd[5]+1900) && $fd[4] == 1); my $wd = $wd{$a[2]}; if(!defined($wd)) { Log 1, "Wrong timespec: $l"; @@ -120,7 +122,9 @@ holiday_refresh($$) last; } } + } + close(FH); RemoveInternalTimer($name); $nt -= ($lt[2]*3600+$lt[1]*60+$lt[0]); # Midnight @@ -143,7 +147,7 @@ holiday_Get($@) my ($hash, @a) = @_; return "argument is missing" if(int(@a) != 2); - return "wrong argument: need MM-DD" if($a[1] !~ m/[01]\d-[0-3]\d/); + return "wrong argument: need MM-DD" if($a[1] !~ m/^[01]\d-[0-3]\d$/); return holiday_refresh($hash->{NAME}, $a[1]); }