--- ../webalizer-2.01.10-orig/webalizer.c 2002-04-17 07:11:31 +0900 +++ webalizer.c 2007-11-25 01:12:11 +0900 @@ -242,7 +242,7 @@ float temp_time; /* temporary time storage */ struct tms mytms; /* bogus tms structure */ - int rec_year,rec_month=1,rec_day,rec_hour,rec_min,rec_sec; + int rec_year,rec_month=1,rec_day,rec_hour,rec_min,rec_sec,rec_ofs; int good_rec =0; /* 1 if we had a good record */ u_long total_rec =0; /* Total Records Processed */ @@ -469,8 +469,8 @@ if (dns_cache && dns_children) /* run-time resolution */ { if (dns_children > MAXCHILD) dns_children=MAXCHILD; - /* DNS Lookup (#children): */ - if (verbose>1) printf("%s (%d): ",msg_dns_rslv,dns_children); + /* DNS Lookup (#children)... */ + if (verbose>1) printf("%s (%d)...\n",msg_dns_rslv,dns_children); fflush(stdout); (gz_log)?dns_resolver(gzlog_fp):dns_resolver(log_fp); (gz_log)?gzrewind(gzlog_fp):(log_fname)?rewind(log_fp):exit(0); @@ -583,6 +583,9 @@ rec_hour=atoi(&log_rec.datetime[13]); /* get hour number */ rec_min =atoi(&log_rec.datetime[16]); /* get minute number */ rec_sec =atoi(&log_rec.datetime[19]); /* get second number */ + rec_ofs =atoi(&log_rec.datetime[23]); /* get GMT offset */ + rec_ofs=(rec_ofs/100)*60+(rec_ofs%100); + if (log_rec.datetime[22]=='-') rec_ofs=-rec_ofs; /* Kludge for Netscape server time (0-24?) error */ if (rec_hour>23) rec_hour=0; @@ -612,6 +615,19 @@ req_tstamp=cur_tstamp; rec_tstamp=((jdate(rec_day,rec_month,rec_year)-epoch)*86400)+ (rec_hour*3600)+(rec_min*60)+rec_sec; + rec_tstamp-=rec_ofs*60; + + /* Now convert the timestamp to local time */ + { + time_t t = rec_tstamp; + struct tm *tm = localtime(&t); + rec_sec = tm->tm_sec; + rec_min = tm->tm_min; + rec_hour = tm->tm_hour; + rec_day = tm->tm_mday; + rec_month = tm->tm_mon+1; + rec_year = tm->tm_year+1900; + } /* Do we need to check for duplicate records? (incremental mode) */ if (check_dup) @@ -647,7 +663,12 @@ if (rec_tstamp/3600 < cur_tstamp/3600) { if (!fold_seq_err && ((rec_tstamp+SLOP_VAL)/3600