// useragent.c
FILE *UserAgent_Open(void);
-void UserAgent_Write(FILE *fp,const char *Ip,const char *User,const char *Agent);
+void UserAgent_Write(FILE *fp,const struct tm *Time,const char *Ip,const char *User,const char *Agent);
void UserAgent_Readlog(void);
void UserAgent(void);
char *strup(char *string);
int month2num(const char *month);
int builddia(int day, int month, int year);
-int compare_date(struct tm *date1,struct tm *date2);
+int compare_date(const struct tm *date1,const struct tm *date2);
bool IsTreeFileDirName(const char *Name);
bool IsTreeYearFileName(const char *Name);
bool IsTreeMonthFileName(const char *Name);
{
if (!UseragentLog)
UseragentLog=UserAgent_Open();
- UserAgent_Write(UseragentLog,log_entry.Ip,log_entry.User,log_entry.UserAgent);
+ UserAgent_Write(UseragentLog,&log_entry.EntryTime,log_entry.Ip,log_entry.User,log_entry.UserAgent);
}
if (log_line.current_format!=&ReadSargLog) {
* \param User The user name.
* \param Agent The user agent string.
*/
-void UserAgent_Write(FILE *fp,const char *Ip,const char *User,const char *Agent)
+void UserAgent_Write(FILE *fp,const struct tm *Time,const char *Ip,const char *User,const char *Agent)
{
if (fp) {
+ if (useragent_count==0 || compare_date(&UserAgentStartDate,Time)>0)
+ memcpy(&UserAgentStartDate,Time,sizeof(UserAgentStartDate));
+ if (useragent_count==0 || compare_date(&UserAgentEndDate,Time)<0)
+ memcpy(&UserAgentEndDate,Time,sizeof(UserAgentEndDate));
fprintf(fp,"%s\t%s\t%s\n",Ip,Agent,User);
useragent_count++;
}
logtime.tm_year=year-1900;
logtime.tm_mon=month-1;
logtime.tm_mday=day;
- if (totregsl==1 || compare_date(&UserAgentStartDate,&logtime)>0)
- memcpy(&UserAgentStartDate,&logtime,sizeof(logtime));
- if (compare_date(&UserAgentEndDate,&logtime)<0)
- memcpy(&UserAgentEndDate,&logtime,sizeof(logtime));
if (getword_skip(MAXLEN,&gwarea,'"')<0 || getword(agent,sizeof(agent),&gwarea,'"')<0) {
debuga(__FILE__,__LINE__,_("Invalid useragent in file \"%s\"\n"),FileName);
exit(EXIT_FAILURE);
strcpy(user,ip);
}
- UserAgent_Write(fp_ou,ip,user,agent);
+ UserAgent_Write(fp_ou,&logtime,ip,user,agent);
}
if (FileObject_Close(fp_log)==EOF) {
\retval 0 If date1==date2.
\retval 1 if date1>date2.
*/
-int compare_date(struct tm *date1,struct tm *date2)
+int compare_date(const struct tm *date1,const struct tm *date2)
{
if (date1->tm_year<date2->tm_year) return(-1);
if (date1->tm_year>date2->tm_year) return(1);