if ($field[0] eq 'LastLine' || $field[0] eq "${xmlrb}LastLine") { if (! $LastLine || $LastLine < int($field[1])) { $LastLine=int($field[1]); }; if ($field[2]) { $LastLineNumber=int($field[2]); } if ($field[3]) { $LastLineOffset=int($field[3]); } if ($field[4]) { $LastLineChecksum=int($field[4]); } next; } if ($field[0] eq 'FirstTime' || $field[0] eq "${xmlrb}FirstTime") { if (! $FirstTime{$date} || $FirstTime{$date} > int($field[1])) { $FirstTime{$date}=int($field[1]); }; next; } if ($field[0] eq 'LastTime' || $field[0] eq "${xmlrb}LastTime") { if (! $LastTime{$date} || $LastTime{$date} < int($field[1])) { $LastTime{$date}=int($field[1]); }; next; } if ($field[0] eq 'LastUpdate' || $field[0] eq "${xmlrb}LastUpdate") { if ($LastUpdate < $field[1]) { $LastUpdate=int($field[1]); #$LastUpdateLinesRead=int($field[2]); #$LastUpdateNewLinesRead=int($field[3]); #$LastUpdateLinesCorrupted=int($field[4]); }; next; } if ($field[0] eq 'TotalVisits' || $field[0] eq "${xmlrb}TotalVisits") { if (! $withupdate) { $MonthVisits{$year.$month}+=int($field[1]); } next; } if ($field[0] eq 'TotalUnique' || $field[0] eq "${xmlrb}TotalUnique") { if (! $withupdate) { $MonthUnique{$year.$month}+=int($field[1]); } next; } if ($field[0] eq 'MonthHostsKnown' || $field[0] eq "${xmlrb}MonthHostsKnown") { if (! $withupdate) { $MonthHostsKnown{$year.$month}+=int($field[1]); } next; } if ($field[0] eq 'MonthHostsUnknown' || $field[0] eq "${xmlrb}MonthHostsUnknown") { if (! $withupdate) { $MonthHostsUnknown{$year.$month}+=int($field[1]); } next; } if (($field[0] eq 'END_GENERAL' || $field[0] eq "${xmleb}END_GENERAL")) { if ($Debug) { debug(" End of GENERAL section"); } if ($MigrateStats && ! $BadFormatWarning{$year.$month}) { $BadFormatWarning{$year.$month}=1; warning("Warning: You are migrating a file that is already a recent version (migrate not required for files version $versionnum).","","",1); } delete $SectionsToLoad{'general'}; if ($SectionsToSave{'general'}) { Save_History('general',$year,$month,$date,$lastlinenb,$lastlineoffset,$lastlinechecksum); delete $SectionsToSave{'general'}; } if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_MISC if ($field[0] eq 'BEGIN_MISC') { if ($Debug) { debug(" Begin of MISC section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'misc'}) { $countloaded++; if ($field[1]) { $_misc_p{$field[0]}+=int($field[1]); } if ($field[2]) { $_misc_h{$field[0]}+=int($field[2]); } if ($field[3]) { $_misc_k{$field[0]}+=int($field[3]); } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_MISC' || $field[0] eq "${xmleb}END_MISC" || ! $_); if ($field[0] ne 'END_MISC' && $field[0] ne "${xmleb}END_MISC") { error("History file \"$filetoread\" is corrupted (End of section MISC not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of MISC section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'misc'}; if ($SectionsToSave{'misc'}) { Save_History('misc',$year,$month,$date); delete $SectionsToSave{'misc'}; if ($withpurge) { %_misc_p=(); %_misc_h=(); %_misc_k=(); } } if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_CLUSTER if ($field[0] eq 'BEGIN_CLUSTER') { if ($Debug) { debug(" Begin of CLUSTER section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'cluster'}) { $countloaded++; if ($field[1]) { $_cluster_p{$field[0]}+=int($field[1]); } if ($field[2]) { $_cluster_h{$field[0]}+=int($field[2]); } if ($field[3]) { $_cluster_k{$field[0]}+=int($field[3]); } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_CLUSTER' || $field[0] eq "${xmleb}END_CLUSTER" || ! $_); if ($field[0] ne 'END_CLUSTER' && $field[0] ne "${xmleb}END_CLUSTER") { error("History file \"$filetoread\" is corrupted (End of section CLUSTER not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of CLUSTER section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'cluster'}; if ($SectionsToSave{'cluster'}) { Save_History('cluster',$year,$month,$date); delete $SectionsToSave{'cluster'}; if ($withpurge) { %_cluster_p=(); %_cluster_h=(); %_cluster_k=(); } } if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_TIME if ($field[0] eq 'BEGIN_TIME') { my $monthpages=0;my $monthhits=0;my $monthbytes=0; my $monthnotviewedpages=0;my $monthnotviewedhits=0;my $monthnotviewedbytes=0; if ($Debug) { debug(" Begin of TIME section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0] ne '') { # Test on ne '' because field[0] is '0' for hour 0) $count++; if ($SectionsToLoad{'time'}) { if ($withupdate || $MonthRequired eq 'all' || $MonthRequired eq "$month") { # Still required $countloaded++; if ($field[1]) { $_time_p[$field[0]]+=int($field[1]); } if ($field[2]) { $_time_h[$field[0]]+=int($field[2]); } if ($field[3]) { $_time_k[$field[0]]+=int($field[3]); } if ($field[4]) { $_time_nv_p[$field[0]]+=int($field[4]); } if ($field[5]) { $_time_nv_h[$field[0]]+=int($field[5]); } if ($field[6]) { $_time_nv_k[$field[0]]+=int($field[6]); } } $monthpages+=int($field[1]); $monthhits+=int($field[2]); $monthbytes+=int($field[3]); $monthnotviewedpages+=int($field[4]||0); $monthnotviewedhits+=int($field[5]||0); $monthnotviewedbytes+=int($field[6]||0); } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_TIME' || $field[0] eq "${xmleb}END_TIME" || ! $_); if ($field[0] ne 'END_TIME' && $field[0] ne "${xmleb}END_TIME") { error("History file \"$filetoread\" is corrupted (End of section TIME not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of TIME section ($count entries, $countloaded loaded)"); } $MonthPages{$year.$month}+=$monthpages; $MonthHits{$year.$month}+=$monthhits; $MonthBytes{$year.$month}+=$monthbytes; $MonthNotViewedPages{$year.$month}+=$monthnotviewedpages; $MonthNotViewedHits{$year.$month}+=$monthnotviewedhits; $MonthNotViewedBytes{$year.$month}+=$monthnotviewedbytes; delete $SectionsToLoad{'time'}; if ($SectionsToSave{'time'}) { Save_History('time',$year,$month,$date); delete $SectionsToSave{'time'}; if ($withpurge) { @_time_p=(); @_time_h=(); @_time_k=(); @_time_nv_p=(); @_time_nv_h=(); @_time_nv_k=(); } } if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_ORIGIN if ($field[0] eq 'BEGIN_ORIGIN') { if ($Debug) { debug(" Begin of ORIGIN section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'origin'}) { if ($field[0] eq 'From0') { $_from_p[0]+=$field[1]; $_from_h[0]+=$field[2]; } elsif ($field[0] eq 'From1') { $_from_p[1]+=$field[1]; $_from_h[1]+=$field[2]; } elsif ($field[0] eq 'From2') { $_from_p[2]+=$field[1]; $_from_h[2]+=$field[2]; } elsif ($field[0] eq 'From3') { $_from_p[3]+=$field[1]; $_from_h[3]+=$field[2]; } elsif ($field[0] eq 'From4') { $_from_p[4]+=$field[1]; $_from_h[4]+=$field[2]; } elsif ($field[0] eq 'From5') { $_from_p[5]+=$field[1]; $_from_h[5]+=$field[2]; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_ORIGIN' || $field[0] eq "${xmleb}END_ORIGIN" || ! $_); if ($field[0] ne 'END_ORIGIN' && $field[0] ne "${xmleb}END_ORIGIN") { error("History file \"$filetoread\" is corrupted (End of section ORIGIN not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of ORIGIN section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'origin'}; if ($SectionsToSave{'origin'}) { Save_History('origin',$year,$month,$date); delete $SectionsToSave{'origin'}; if ($withpurge) { @_from_p=(); @_from_h=(); } } if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_DAY if ($field[0] eq 'BEGIN_DAY') { if ($Debug) { debug(" Begin of DAY section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'day'}) { $countloaded++; if ($field[1]) { $DayPages{$field[0]}+=int($field[1]); } $DayHits{$field[0]}+=int($field[2]); # DayHits always load (should be >0 and if not it's a day YYYYMM00 resulting of an old file migration) if ($field[3]) { $DayBytes{$field[0]}+=int($field[3]); } if ($field[4]) { $DayVisits{$field[0]}+=int($field[4]); } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_DAY' || $field[0] eq "${xmleb}END_DAY" || ! $_); if ($field[0] ne 'END_DAY' && $field[0] ne "${xmleb}END_DAY") { error("History file \"$filetoread\" is corrupted (End of section DAY not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of DAY section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'day'}; # WE DO NOT SAVE SECTION NOW BECAUSE VALUES CAN BE CHANGED AFTER READING VISITOR #if ($SectionsToSave{'day'}) { # Must be made after read of visitor # Save_History('day',$year,$month,$date); delete $SectionsToSave{'day'}; # if ($withpurge) { %DayPages=(); %DayHits=(); %DayBytes=(); %DayVisits=(); } #} if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_VISITOR if ($field[0] eq 'BEGIN_VISITOR') { if ($Debug) { debug(" Begin of VISITOR section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; # For backward compatibility if ($readvisitorforbackward) { if ($field[1]) { $MonthUnique{$year.$month}++; } if ($MonthRequired ne 'all') { if ($field[0] !~ /^\d+\.\d+\.\d+\.\d+$/ && $field[0] !~ /^[0-9A-F]*:/i) { $MonthHostsKnown{$year.$month}++; } else { $MonthHostsUnknown{$year.$month}++; } } } # Process data saved in 'wait' arrays if ($withupdate && $_waithost_e{$field[0]}){ my $timehostl=int($field[4]||0); my $timehosts=int($field[5]||0); my $newtimehosts=($_waithost_s{$field[0]}?$_waithost_s{$field[0]}:$_host_s{$field[0]}); my $newtimehostl=($_waithost_l{$field[0]}?$_waithost_l{$field[0]}:$_host_l{$field[0]}); if ($newtimehosts > $timehostl + $VISITTIMEOUT ) { if ($Debug) { debug(" Visit for $field[0] in 'wait' arrays is a new visit different than last in history",4); } if ($field[6]) { $_url_x{$field[6]}++; } $_url_e{$_waithost_e{$field[0]}}++; $newtimehosts =~ /^(\d\d\d\d\d\d\d\d)/; $DayVisits{$1}++; if ($timehosts && $timehostl) { $_session{GetSessionRange($timehosts,$timehostl)}++; } if ($_waithost_s{$field[0]}) { # First session found in log was followed by another one so it's finished $_session{GetSessionRange($newtimehosts,$newtimehostl)}++; } # Here $_host_l $_host_s and $_host_u are correctly defined } else { if ($Debug) { debug(" Visit for $field[0] in 'wait' arrays is following of last visit in history",4); } if ($_waithost_s{$field[0]}) { # First session found in log was followed by another one so it's finished $_session{GetSessionRange(MinimumButNoZero($timehosts,$newtimehosts),$timehostl>$newtimehostl?$timehostl:$newtimehostl)}++; # Here $_host_l $_host_s and $_host_u are correctly defined } else { # We correct $_host_l $_host_s and $_host_u if ($timehostl > $newtimehostl) { $_host_l{$field[0]}=$timehostl; $_host_u{$field[0]}=$field[6]; } if ($timehosts < $newtimehosts) { $_host_s{$field[0]}=$timehosts; } } } delete $_waithost_e{$field[0]}; delete $_waithost_l{$field[0]}; delete $_waithost_s{$field[0]}; delete $_waithost_u{$field[0]}; } # Load records if ($readvisitorforbackward!=2 && $SectionsToLoad{'visitor'}) { # if readvisitorforbackward==2 we do not load my $loadrecord=0; if ($withupdate) { $loadrecord=1; } else { if ($HTMLOutput{'allhosts'} || $HTMLOutput{'lasthosts'}) { if ((!$FilterIn{'host'} || $field[0] =~ /$FilterIn{'host'}/i) && (!$FilterEx{'host'} || $field[0] !~ /$FilterEx{'host'}/i)) { $loadrecord=1; } } elsif ($MonthRequired eq 'all' || $field[2] >= $MinHit{'Host'}) { if ($HTMLOutput{'unknownip'} && ($field[0] =~ /^\d+\.\d+\.\d+\.\d+$/ || $field[0] =~ /^[0-9A-F]*:/i)) { $loadrecord=1; } elsif ($HTMLOutput{'main'} && ($MonthRequired eq 'all' || $countloaded < $MaxNbOf{'HostsShown'})) { $loadrecord=1; } } } if ($loadrecord) { if ($field[1]) { $_host_p{$field[0]}+=$field[1]; } if ($field[2]) { $_host_h{$field[0]}+=$field[2]; } if ($field[3]) { $_host_k{$field[0]}+=$field[3]; } if ($field[4] && ! $_host_l{$field[0]}) { # We save last connexion params if not previously defined $_host_l{$field[0]}=int($field[4]); if ($withupdate) { # field[5] field[6] are used only for update if ($field[5] && ! $_host_s{$field[0]}) { $_host_s{$field[0]}=int($field[5]); } if ($field[6] && ! $_host_u{$field[0]}) { $_host_u{$field[0]}=$field[6]; } } } $countloaded++; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_VISITOR' || $field[0] eq "${xmleb}END_VISITOR" || ! $_); if ($field[0] ne 'END_VISITOR' && $field[0] ne "${xmleb}END_VISITOR") { error("History file \"$filetoread\" is corrupted (End of section VISITOR not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of VISITOR section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'visitor'}; # WE DO NOT SAVE SECTION NOW TO BE SURE TO HAVE THIS LARGE SECTION NOT AT THE BEGINNING OF FILE #if ($SectionsToSave{'visitor'}) { # Save_History('visitor',$year,$month,$date); delete $SectionsToSave{'visitor'}; # if ($withpurge) { %_host_p=(); %_host_h=(); %_host_k=(); %_host_l=(); %_host_s=(); %_host_u=(); } #} if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_UNKNOWNIP for backward compatibility if ($field[0] eq 'BEGIN_UNKNOWNIP') { my %iptomigrate=(); if ($Debug) { debug(" Begin of UNKNOWNIP section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'unknownip'}) { $iptomigrate{$field[0]}=$field[1]||0; $countloaded++; } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_UNKNOWNIP' || $field[0] eq "${xmleb}END_UNKNOWNIP" || ! $_); if ($field[0] ne 'END_UNKNOWNIP' && $field[0] ne "${xmleb}END_UNKNOWNIP") { error("History file \"$filetoread\" is corrupted (End of section UNKOWNIP not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of UNKOWNIP section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'visitor'}; # THIS SECTION IS NEVER SAVED. ONLY READ FOR MIGRATE AND CONVERTED INTO VISITOR SECTION foreach (keys %iptomigrate) { $_host_p{$_}+=int($_host_p{'Unknown'}/$countloaded); $_host_h{$_}+=int($_host_h{'Unknown'}/$countloaded); $_host_k{$_}+=int($_host_k{'Unknown'}/$countloaded); if ($iptomigrate{$_} > 0) { $_host_l{$_}=$iptomigrate{$_} }; } delete $_host_p{'Unknown'}; delete $_host_h{'Unknown'}; delete $_host_k{'Unknown'}; delete $_host_l{'Unknown'}; if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_LOGIN if ($field[0] eq 'BEGIN_LOGIN') { if ($Debug) { debug(" Begin of LOGIN section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'login'}) { $countloaded++; if ($field[1]) { $_login_p{$field[0]}+=$field[1]; } if ($field[2]) { $_login_h{$field[0]}+=$field[2]; } if ($field[3]) { $_login_k{$field[0]}+=$field[3]; } if (! $_login_l{$field[0]} && $field[4]) { $_login_l{$field[0]}=int($field[4]); } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_LOGIN' || $field[0] eq "${xmleb}END_LOGIN" || ! $_); if ($field[0] ne 'END_LOGIN' && $field[0] ne "${xmleb}END_LOGIN") { error("History file \"$filetoread\" is corrupted (End of section LOGIN not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of LOGIN section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'login'}; if ($SectionsToSave{'login'}) { Save_History('login',$year,$month,$date); delete $SectionsToSave{'login'}; if ($withpurge) { %_login_p=(); %_login_h=(); %_login_k=(); %_login_l=(); } } if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_DOMAIN if ($field[0] eq 'BEGIN_DOMAIN') { if ($Debug) { debug(" Begin of DOMAIN section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'domain'}) { $countloaded++; if ($field[1]) { $_domener_p{$field[0]}+=$field[1]; } if ($field[2]) { $_domener_h{$field[0]}+=$field[2]; } if ($field[3]) { $_domener_k{$field[0]}+=$field[3]; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_DOMAIN' || $field[0] eq "${xmleb}END_DOMAIN" || ! $_); if ($field[0] ne 'END_DOMAIN' && $field[0] ne "${xmleb}END_DOMAIN") { error("History file \"$filetoread\" is corrupted (End of section DOMAIN not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of DOMAIN section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'domain'}; if ($SectionsToSave{'domain'}) { Save_History('domain',$year,$month,$date); delete $SectionsToSave{'domain'}; if ($withpurge) { %_domener_p=(); %_domener_h=(); %_domener_k=(); } } if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_SESSION if ($field[0] eq 'BEGIN_SESSION') { if ($Debug) { debug(" Begin of SESSION section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'session'}) { $countloaded++; if ($field[1]) { $_session{$field[0]}+=$field[1]; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_SESSION' || $field[0] eq "${xmleb}END_SESSION" || ! $_); if ($field[0] ne 'END_SESSION' && $field[0] ne "${xmleb}END_SESSION") { error("History file \"$filetoread\" is corrupted (End of section SESSION not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of SESSION section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'session'}; # WE DO NOT SAVE SECTION NOW BECAUSE VALUES CAN BE CHANGED AFTER READING VISITOR #if ($SectionsToSave{'session'}) { # Save_History('session',$year,$month,$date); delete $SectionsToSave{'session'}; } # if ($withpurge) { %_session=(); } #} if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_OS if ($field[0] eq 'BEGIN_OS') { if ($Debug) { debug(" Begin of OS section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'os'}) { $countloaded++; if ($field[1]) { $_os_h{$field[0]}+=$field[1]; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++; } until ($field[0] eq 'END_OS' || $field[0] eq "${xmleb}END_OS" || ! $_); if ($field[0] ne 'END_OS' && $field[0] ne "${xmleb}END_OS") { error("History file \"$filetoread\" is corrupted (End of section OS not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" End of OS section ($count entries, $countloaded loaded)"); } delete $SectionsToLoad{'os'}; if ($SectionsToSave{'os'}) { Save_History('os',$year,$month,$date); delete $SectionsToSave{'os'}; if ($withpurge) { %_os_h=(); } } if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } next; } # BEGIN_BROWSER if ($field[0] eq 'BEGIN_BROWSER') { if ($Debug) { debug(" Begin of BROWSER section"); } $field[0]=''; my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($SectionsToLoad{'browser'}) { $countloaded++; TITLE
Willy-Brandt-Allee 66
45891 Gelsenkirchen
Öffnungszeiten:
Montag bis Freitag von 14:00 Uhr-19:00 Uhr
Samstag von 10:00 Uhr-15:00 Uhr.


So finden Sie uns:
zum Routenplaner
Parse Time: 0.093s