]> git.ipfire.org Git - thirdparty/sarg.git/blobdiff - dansguardian_report.c
Merge messages
[thirdparty/sarg.git] / dansguardian_report.c
index f326226d2f79430dc8bf618b3c88cb2b1d1684c6..f73460ef2b9e055b6b740db1ef40379e4270fa9b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * SARG Squid Analysis Report Generator      http://sarg.sourceforge.net
- *                                                            1998, 2012
+ *                                                            1998, 2015
  *
  * SARG donations:
  *      please look at http://sarg.sourceforge.net/donations.php
@@ -60,20 +60,21 @@ void dansguardian_report(void)
 
        snprintf(dansguardian_in,sizeof(dansguardian_in),"%s/dansguardian.int_log",tmp);
        if(!dansguardian_count) {
-               unlink(dansguardian_in);
-               if (debugz) debugaz(_("Dansguardian report not generated because it is empty\n"));
+               if (!KeepTempLog && unlink(dansguardian_in))
+                       debuga(_("Cannot delete \"%s\": %s\n"),dansguardian_in,strerror(errno));
+               if (debugz>=LogLevel_Process) debugaz(_("Dansguardian report not generated because it is empty\n"));
                return;
        }
 
        sprintf(report,"%s/dansguardian.html",outdirname);
 
        if((fp_in=MY_FOPEN(dansguardian_in,"r"))==NULL) {
-               debuga(_("(dansguardian_report) Cannot open log file %s\n"),dansguardian_in);
+               debuga(_("Cannot open file \"%s\": %s\n"),dansguardian_in,strerror(errno));
                exit(EXIT_FAILURE);
        }
 
        if((fp_ou=MY_FOPEN(report,"w"))==NULL) {
-               debuga(_("(dansguardian_report) Cannot open log file %s\n"),report);
+               debuga(_("Cannot open file \"%s\": %s\n"),report,strerror(errno));
                exit(EXIT_FAILURE);
        }
 
@@ -91,23 +92,23 @@ void dansguardian_report(void)
                getword_start(&gwarea,buf);
                if (getword(user,sizeof(user),&gwarea,'\t')<0 || getword(date2,sizeof(date2),&gwarea,'\t')<0 ||
                    getword(hour,sizeof(hour),&gwarea,'\t')<0 || getword(ip,sizeof(ip),&gwarea,'\t')<0) {
-                       debuga(_("Maybe you have a broken record or garbage in your %s file\n"),dansguardian_in);
+                       debuga(_("Invalid record in file \"%s\"\n"),dansguardian_in);
                        exit(EXIT_FAILURE);
                }
                if (getword_ptr(buf,&url,&gwarea,'\t')<0) {
-                       debuga(_("Maybe you have a broken url in your %s file\n"),dansguardian_in);
+                       debuga(_("Invalid url in file \"%s\"\n"),dansguardian_in);
                        exit(EXIT_FAILURE);
                }
                if (getword(rule,sizeof(rule),&gwarea,'\n')<0) {
-                       debuga(_("Maybe you have a broken rule in your %s file\n"),dansguardian_in);
+                       debuga(_("Invalid rule in file \"%s\"\n"),dansguardian_in);
                        exit(EXIT_FAILURE);
                }
 
                if(UserIp)
                        strcpy(user,ip);
 
-               bzero(date, 15);
-               if(strncmp(df,"u",1) != 0) {
+               memset(date,0,sizeof(date));
+               if (df!='u') {
                        strncpy(date,date2+6,2);
                        strcat(date,"/");
                        strncat(date,date2+4,2);
@@ -158,19 +159,23 @@ void dansguardian_report(void)
                output_html_link(fp_ou,url,100);
                fprintf(fp_ou,"</td><td class=\"data2\">%s</td></tr>\n",rule);
        }
-       fclose(fp_in);
+       if (fclose(fp_in)==EOF) {
+               debuga(_("Read error in \"%s\": %s\n"),dansguardian_in,strerror(errno));
+               exit(EXIT_FAILURE);
+       }
 
        if(count>DansGuardianReportLimit && DansGuardianReportLimit>0)
                show_ignored_dansguardian(fp_ou,count-DansGuardianReportLimit);
 
        fputs("</table></div>\n",fp_ou);
-       if (write_html_trailer(fp_ou)<0)
-               debuga(_("Write error in file %s\n"),report);
-       if (fclose(fp_ou)==EOF)
-               debuga(_("Failed to close file %s - %s\n"),report,strerror(errno));
+       write_html_trailer(fp_ou);
+       if (fclose(fp_ou)==EOF) {
+               debuga(_("Write error in \"%s\": %s\n"),report,strerror(errno));
+               exit(EXIT_FAILURE);
+       }
 
-       if (unlink(dansguardian_in)) {
-               debuga(_("Cannot delete %s - %s\n"),dansguardian_in,strerror(errno));
+       if (!KeepTempLog && unlink(dansguardian_in)) {
+               debuga(_("Cannot delete \"%s\": %s\n"),dansguardian_in,strerror(errno));
                exit(EXIT_FAILURE);
        }