]> git.ipfire.org Git - thirdparty/sarg.git/blobdiff - convlog.c
Fix wrong tags label.
[thirdparty/sarg.git] / convlog.c
index 5387af3933a9fe6c82871c369fe9898c44e5fd00..28e1189c297a80c53c200cab05f34a71726cfbc3 100644 (file)
--- a/convlog.c
+++ b/convlog.c
@@ -1,10 +1,11 @@
 /*
- * 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
 
 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) {
-      fprintf(stderr, "SARG: (convlog) %s: %s\n",text[8],arq);
-      exit(1);
+      debuga(_("(convlog) Cannot open log file %s - %s\n"),arq,strerror(errno));
+      exit(EXIT_FAILURE);
+   }
+
+   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));
+   }
 }