From: Frédéric Marchal Date: Fri, 31 Aug 2012 19:46:41 +0000 (+0200) Subject: Remove a message about the redirector log that can't be deleted X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cf1a88b9a2a33c0381fe8bb4882c059d01e45ccc;p=thirdparty%2Fsarg.git Remove a message about the redirector log that can't be deleted If no redirector log was provided, a message was displayed in debug mode to inform the user about a temporary file that can't be deleted. That message was unnecessary and misleading. It is now displayed only when appropriate. --- diff --git a/redirector.c b/redirector.c index d52c05d..80a67b4 100644 --- a/redirector.c +++ b/redirector.c @@ -32,6 +32,8 @@ static int nfiles_done = 0; //! The number of invalid lines found in the redirector report. static int RedirectorErrors=0; +//! The file containing the sorted entries. +static char redirector_sorted[MAXLEN]=""; static void parse_log(FILE *fp_ou,char *buf) { @@ -285,7 +287,6 @@ void redirector_log(void) FILE *fp_ou = NULL, *fp_guard = NULL; char buf[MAXLEN]; char guard_in[MAXLEN]; - char guard_ou[MAXLEN]; char logdir[MAXLEN]; char user[MAXLEN]; char tmp6[MAXLEN]; @@ -304,8 +305,7 @@ void redirector_log(void) } snprintf(guard_in,sizeof(guard_in),"%s/redirector.int_unsort",tmp); - snprintf(guard_ou,sizeof(guard_ou),"%s/redirector.int_log",tmp); - if((fp_ou=fopen(guard_in,"a"))==NULL) { + if((fp_ou=fopen(guard_in,"w"))==NULL) { debuga(_("(squidguard) Cannot open log file %s\n"),guard_in); exit(EXIT_FAILURE); } @@ -383,19 +383,22 @@ void redirector_log(void) free(files_done); } - if(debug) { - debuga(_("Sorting file: %s\n"),guard_ou); - } + if (redirector_count) { + snprintf(redirector_sorted,sizeof(redirector_sorted),"%s/redirector.int_log",tmp); + if(debug) { + debuga(_("Sorting file: %s\n"),redirector_sorted); + } - if (snprintf(tmp6,sizeof(tmp6),"sort -t \"\t\" -k 1,1 -k 2,2 -k 4,4 \"%s\" -o \"%s\"",guard_in, guard_ou)>=sizeof(tmp6)) { - debuga(_("Sort command too long when sorting file \"%s\" to \"%s\"\n"),guard_in,guard_ou); - exit(EXIT_FAILURE); - } - cstatus=system(tmp6); - if (!WIFEXITED(cstatus) || WEXITSTATUS(cstatus)) { - debuga(_("sort command return status %d\n"),WEXITSTATUS(cstatus)); - debuga(_("sort command: %s\n"),tmp6); - exit(EXIT_FAILURE); + if (snprintf(tmp6,sizeof(tmp6),"sort -t \"\t\" -k 1,1 -k 2,2 -k 4,4 \"%s\" -o \"%s\"",guard_in, redirector_sorted)>=sizeof(tmp6)) { + debuga(_("Sort command too long when sorting file \"%s\" to \"%s\"\n"),guard_in,redirector_sorted); + exit(EXIT_FAILURE); + } + cstatus=system(tmp6); + if (!WIFEXITED(cstatus) || WEXITSTATUS(cstatus)) { + debuga(_("sort command return status %d\n"),WEXITSTATUS(cstatus)); + debuga(_("sort command: %s\n"),tmp6); + exit(EXIT_FAILURE); + } } if (!KeepTempLog && unlink(guard_in)) { @@ -419,7 +422,6 @@ void redirector_report(void) char *buf; char *url; - char squidguard_in[MAXLEN]; char report[MAXLEN]; char ip[45]; char rule[255]; @@ -442,18 +444,18 @@ void redirector_report(void) ouser[0]='\0'; ouser2[0]='\0'; - snprintf(squidguard_in,sizeof(squidguard_in),"%s/redirector.int_log",tmp); if(!redirector_count) { - if (!KeepTempLog && unlink(squidguard_in)) - debuga(_("Cannot delete \"%s\": %s\n"),squidguard_in,strerror(errno)); - if (debugz) debugaz(_("Redirector report not generated because it is empty\n")); + if (debugz) { + if (redirector_sorted[0]) + debugaz(_("Redirector report not generated because it is empty\n")); + } return; } snprintf(report,sizeof(report),"%s/redirector.html",outdirname); - if((fp_in=fopen(squidguard_in,"r"))==NULL) { - debuga(_("(squidguard) Cannot open log file %s\n"),squidguard_in); + if((fp_in=fopen(redirector_sorted,"r"))==NULL) { + debuga(_("(squidguard) Cannot open log file %s\n"),redirector_sorted); exit(EXIT_FAILURE); } @@ -480,33 +482,33 @@ void redirector_report(void) while((buf=longline_read(fp_in,line))!=NULL) { getword_start(&gwarea,buf); if (getword(user,sizeof(user),&gwarea,'\t')<0) { - debuga(_("Invalid user in file %s\n"),squidguard_in); + debuga(_("Invalid user in file %s\n"),redirector_sorted); exit(EXIT_FAILURE); } if (getword_atoll(&data2,&gwarea,'\t')<0) { - debuga(_("Invalid date in file %s\n"),squidguard_in); + debuga(_("Invalid date in file %s\n"),redirector_sorted); exit(EXIT_FAILURE); } if (getword(hora,sizeof(hora),&gwarea,'\t')<0) { - debuga(_("Invalid time in file %s\n"),squidguard_in); + debuga(_("Invalid time in file %s\n"),redirector_sorted); exit(EXIT_FAILURE); } if (getword(ip,sizeof(ip),&gwarea,'\t')<0) { - debuga(_("Invalid IP address in file %s\n"),squidguard_in); + debuga(_("Invalid IP address in file %s\n"),redirector_sorted); exit(EXIT_FAILURE); } if (getword_ptr(buf,&url,&gwarea,'\t')<0) { - debuga(_("Invalid URL in file %s\n"),squidguard_in); + debuga(_("Invalid URL in file %s\n"),redirector_sorted); exit(EXIT_FAILURE); } if (getword(rule,sizeof(rule),&gwarea,'\n')<0) { - debuga(_("Invalid rule in file %s\n"),squidguard_in); + debuga(_("Invalid rule in file %s\n"),redirector_sorted); exit(EXIT_FAILURE); } uinfo=userinfo_find_from_id(user); if (!uinfo) { - debuga(_("Unknown user ID %s in file %s\n"),user,squidguard_in); + debuga(_("Unknown user ID %s in file %s\n"),user,redirector_sorted); exit(EXIT_FAILURE); } @@ -576,8 +578,8 @@ void redirector_report(void) if (fclose(fp_ou)==EOF) debuga(_("Failed to close file %s - %s\n"),report,strerror(errno)); - if (!KeepTempLog && unlink(squidguard_in)) { - debuga(_("Cannot delete \"%s\": %s\n"),squidguard_in,strerror(errno)); + if (!KeepTempLog && unlink(redirector_sorted)) { + debuga(_("Cannot delete \"%s\": %s\n"),redirector_sorted,strerror(errno)); exit(EXIT_FAILURE); }