/*
- * AUTHOR: Pedro Lineu Orso pedro.orso@gmail.com
- * 1998, 2008
* SARG Squid Analysis Report Generator http://sarg.sourceforge.net
+ * 1998, 2010
*
* SARG donations:
* please look at http://sarg.sourceforge.net/donations.php
+ * Support:
+ * http://sourceforge.net/projects/sarg/forums/forum/363374
* ---------------------------------------------------------------------
*
* This program is free software; you can redistribute it and/or modify
*/
#include "include/conf.h"
+#include "include/defs.h"
void convlog(const char *arq, char *df, int dfrom, int duntil)
{
-
FILE *fp_in;
- char buf[MAXLEN];
+ char *buf;
char data[30];
char dia[11];
- char hora[9];
- char wdata[20];
time_t tt;
int idata=0;
struct tm *t;
+ struct getwordstruct gwarea;
+ longline line;
if(arq[0] == '\0')
- arq="/usr/local/squid/logs/access.log";
+ arq="/var/log/squid/access.log";
+
+ if((fp_in=MY_FOPEN(arq,"r"))==NULL) {
+ debuga(_("(convlog) Cannot open log file %s - %s\n"),arq,strerror(errno));
+ exit(EXIT_FAILURE);
+ }
-#if defined(HAVE_FOPEN64)
- if((fp_in=fopen64(arq,"r"))==NULL) {
-#else
- if((fp_in=fopen(arq,"r"))==NULL) {
-#endif
- fprintf(stderr, "SARG: (convlog) %s: %s\n",text[8],arq);
- exit(1);
+ if ((line=longline_create())==NULL) {
+ debuga(_("Not enough memory to read the log file %s\n"),arq);
+ exit(EXIT_FAILURE);
}
- while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
- if (getword(data,sizeof(data),buf,' ')<0) {
- printf("SARG: Maybe you have a broken record or garbage in your %s file.\n",arq);
- exit(1);
+ while((buf=longline_read(fp_in,line))!=NULL) {
+ getword_start(&gwarea,buf);
+ if (getword(data,sizeof(data),&gwarea,' ')<0) {
+ debuga(_("Maybe you have a broken record or garbage in file %s\n"),arq);
+ exit(EXIT_FAILURE);
}
tt=atoi(data);
t=localtime(&tt);
if(dfrom) {
- strftime(wdata, 127, "%Y%m%d", t);
- idata=atoi(wdata);
- if(idata < dfrom || idata > duntil)
- continue;
+ idata=(t->tm_year+1900)*10000+(t->tm_mon+1)*100+t->tm_mday;
+ if(idata < dfrom || idata > duntil)
+ continue;
}
- if(strncmp(df,"e",1) == 0)
- strftime(dia, 127, "%d/%m/%Y", t);
+ if(df[0]=='e')
+ strftime(dia, sizeof(dia), "%d/%m/%Y", t);
else
- strftime(dia, 127, "%m/%d/%Y", t);
- sprintf(hora,"%02d:%02d:%02d",t->tm_hour,t->tm_min,t->tm_sec);
+ strftime(dia, sizeof(dia), "%m/%d/%Y", t);
- printf("%s %s %s",dia,hora,buf);
+ printf("%s %02d:%02d:%02d %s\n",dia,t->tm_hour,t->tm_min,t->tm_sec,gwarea.current);
}
- fclose(fp_in);
+ longline_destroy(&line);
+ if (fclose(fp_in)==EOF) {
+ debuga(_("Failed to close file %s - %s\n"),arq,strerror(errno));
+ }
}