From: minima Date: Fri, 7 Mar 2003 21:02:16 +0000 (+0000) Subject: make it restart from where it left off X-Git-Tag: PRE-1-52~39 X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=commitdiff_plain;h=144ae11b65a1425f6557d4670fcd303dabd180b4;p=spider.git make it restart from where it left off --- diff --git a/perl/create_localqsl.pl b/perl/create_localqsl.pl index 14693d63..713abe7f 100755 --- a/perl/create_localqsl.pl +++ b/perl/create_localqsl.pl @@ -27,10 +27,14 @@ use DXUtil; use Spot; use DXDb; -my $end = 0; +use vars qw($end $lastyear $lastday); + +$end = 0; $SIG{TERM} = $SIG{INT} = sub { $end++ }; my $qslfn = "localqsl"; +$lastyear = 0; +$lastday = 0; $main::systime = time; @@ -41,18 +45,27 @@ unless ($db) { DXDb::load(); $db = DXDb::getdesc($qslfn); } - die "cannot load $qslfn $!" unless $db; +# find start point (if any) +my $statefn = "$root/data/$qslfn.state"; +my $s = readfilestr($statefn); +eval $s if $s; + my $base = "$root/data/spots"; opendir YEAR, $base or die "$base $!"; foreach my $year (sort readdir YEAR) { next if $year =~ /^\./; + next unless $year ge $lastyear; + my $baseyear = "$base/$year"; opendir DAY, $baseyear or die "$baseyear $!"; foreach my $day (sort readdir DAY) { - next unless $day =~ /dat$/; + next unless $day =~ /(\d+)\.dat$/; + my $dayno = $1 + 0; + next unless $dayno >= $lastday; + my $fn = "$baseyear/$day"; my $f = new IO::File $fn or die "$fn ($!)"; print "doing: $fn\n"; @@ -67,6 +80,9 @@ foreach my $year (sort readdir YEAR) { } } $f->close; + $f = new IO::File ">$statefn" or die "cannot open $statefn $!"; + print $f "\$lastyear = $year; \$lastday = $dayno;\n"; + $f->close; } } @@ -96,8 +112,8 @@ sub update if (@in && $in[0]->[0] < $t) { @in = grep {$_->[1] ne $by} @in; } - unshift @in, [$t, $by, $comment]; - pop @in, if @in > 5; + unshift @in, [$t, $by, $comment] if grep is_callsign($1), split(/\s+/, $comment); + pop @in, if @in > 10; return join "\n", (map {(cldatetime($_->[0]) . " by $_->[1]: $_->[2]")} @in); }