void useragent(void)
{
+ FileObject *fp_log;
FILE *fp_in = NULL, *fp_ou = NULL, *fp_ht = NULL;
+ char *ptr;
char buf[MAXLEN];
char ip[MAXLEN], data[MAXLEN], agent[MAXLEN], user[MAXLEN];
char ipbefore[MAXLEN], namebefore[MAXLEN];
int ndate;
double perc;
struct getwordstruct gwarea, gwarea1;
+ longline line;
FileListIterator FIter;
ip[0]='\0';
exit(EXIT_FAILURE);
}
+ if ((line=longline_create())==NULL) {
+ debuga(__FILE__,__LINE__,_("Not enough memory to read useragent log\n"));
+ exit(EXIT_FAILURE);
+ }
+
FIter=FileListIter_Open(UserAgentLog);
while ((FileName=FileListIter_Next(FIter))!=NULL)
{
- if((fp_in=fopen(FileName,"r"))==NULL) {
- debuga(__FILE__,__LINE__,_("Cannot open file \"%s\": %s\n"),FileName,strerror(errno));
+ longline_reset(line);
+ if((fp_log=decomp(FileName))==NULL) {
+ debuga(__FILE__,__LINE__,_("Cannot open file \"%s\": %s\n"),FileName,FileObject_GetLastOpenError());
exit(EXIT_FAILURE);
}
debuga(__FILE__,__LINE__,_("Reading useragent log \"%s\"\n"),FileName);
}
- while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
+ while((ptr=longline_read(fp_log,line))!=NULL) {
totregsl++;
- getword_start(&gwarea,buf);
+ getword_start(&gwarea,ptr);
if (getword(ip,sizeof(ip),&gwarea,' ')<0 || getword_skip(MAXLEN,&gwarea,'[')<0 ||
getword(data,sizeof(data),&gwarea,' ')<0) {
debuga(__FILE__,__LINE__,_("Invalid record in file \"%s\"\n"),FileName);
useragent_count++;
}
- if (fclose(fp_in)==EOF) {
- debuga(__FILE__,__LINE__,_("Read error in \"%s\": %s\n"),FileName,strerror(errno));
+ if (FileObject_Close(fp_log)==EOF) {
+ debuga(__FILE__,__LINE__,_("Read error in \"%s\": %s\n"),FileName,FileObject_GetLastCloseError());
exit(EXIT_FAILURE);
}
}
FileListIter_Close(FIter);
+ longline_destroy(&line);
if(debug) {
debuga(__FILE__,__LINE__,_(" Records read: %ld\n"),totregsl);