CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
PROJECT(sarg C)
SET(sarg_VERSION 2)
-SET(sarg_REVISION "3-pre1")
+SET(sarg_REVISION "3-pre2")
SET(sarg_BUILD "")
-SET(sarg_BUILDDATE "Apr-02-2010")
+SET(sarg_BUILDDATE "Apr-04-2010")
INCLUDE(AddFileDependencies)
INCLUDE(CheckIncludeFile)
write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("Authentication Failures"));
fputs("<tr><td class=\"header_l\">",fp_ou);
- fprintf(fp_ou,_("Period: %s"),period.text);
+ fprintf(fp_ou,_("Period: %s"),period.html);
fputs("</td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",_("Authentication Failures"));
close_html_header(fp_ou);
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([sarg],[2.3-pre1])
+AC_INIT([sarg],[2.3-pre2])
AC_CONFIG_SRCDIR([log.c])
AC_CONFIG_AUX_DIR(cfgaux)
write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("DansGuardian"));
fputs("<tr><td class=\"header_l\">",fp_ou);
- fprintf(fp_ou,_("Period: %s"),period.text);
+ fprintf(fp_ou,_("Period: %s"),period.html);
fputs("</td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",_("DansGuardian"));
close_html_header(fp_ou);
write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("DENIED"));
fputs("<tr><td class=\"header_l\">",fp_ou);
- fprintf(fp_ou,_("Period: %s"),period.text);
+ fprintf(fp_ou,_("Period: %s"),period.html);
fputs("</td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",_("DENIED"));
close_html_header(fp_ou);
write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("Downloads"));
fputs("<tr><td class=\"header_l\">",fp_ou);
- fprintf(fp_ou,_("Period: %s"),period.text);
+ fprintf(fp_ou,_("Period: %s"),period.html);
fputs("</td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",_("Downloads"));
close_html_header(fp_ou);
}
write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 4 : 2,_("User report"));
- fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",_("Period"),period.text);
+ fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",_("Period"),period.html);
fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",_("User"),uinfo->label);
fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s, %s</td></tr>\n",_("Sort"),UserSortField,UserSortOrder);
fprintf(fp_ou,"<tr><td class=\"header_c\">%s</td></tr>\n",_("User report"));
struct periodstruct
{
+ //! The first date of the period.
struct tm start;
+ //! The last date of the period.
struct tm end;
+ //! The textual representation of the date.
char text[40];
+ //! The HTML representation of the date.
+ char html[40];
};
char outdir[MAXLEN];
-#define VERSION PACKAGE_VERSION" Apr-02-2010"
+#define VERSION PACKAGE_VERSION" Apr-04-2010"
#define PGM PACKAGE_NAME
#define URL "http://sarg.sourceforge.net"
#endif
#if defined(ENABLE_NLS) && defined(HAVE_LOCALE_H)
- setlocale (LC_ALL, "");
- bindtextdomain (PACKAGE_NAME, LOCALEDIR);
- textdomain (PACKAGE_NAME);
+ if (!setlocale (LC_ALL, "")) {
+ fprintf(stderr,"SARG: Cannot set the locale LC_ALL to the environment variable\n");
+ exit(EXIT_FAILURE);
+ }
+ if (!bindtextdomain (PACKAGE_NAME, LOCALEDIR)) {
+ fprintf(stderr,"SARG: Cannot bind to text domain %s in directory %s (%s)\n",PACKAGE_NAME,LOCALEDIR,strerror(errno));
+ exit(EXIT_FAILURE);
+ }
+ if (!textdomain (PACKAGE_NAME)) {
+ fprintf(stderr,"SARG: Cannot set gettext domain for %s PACKAGE_NAME (%s)\n",PACKAGE_NAME,strerror(errno));
+ exit(EXIT_FAILURE);
+ }
#endif //ENABLE_NLS
BgImage[0]='\0';
close_html_header(fp_ou);
fputs("<div class=\"report\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
- fprintf(fp_ou,"<tr><td class=\"header_c\" colspan=\"2\">%s: %s</td></tr>\n",_("Period"),period.text);
+ fprintf(fp_ou,"<tr><td class=\"header_c\" colspan=\"2\">%s: %s</td></tr>\n",_("Period"),period.html);
fprintf(fp_ou,"<tr><th class=\"header_c\" colspan=\"2\">%s: %s</th></tr>\n",_("User"),uinfo->label);
*/
write_html_header(fp_tt,(IndexTree == INDEX_TREE_DATE) ? 4 : 2,_("Site access report"));
- fprintf(fp_tt,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",_("Period"),period.text);
+ fprintf(fp_tt,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",_("Period"),period.html);
fprintf(fp_tt,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",_("User"),uinfo->label);
fprintf(fp_tt,"<tr><td class=\"header_l\">%s: %s, %s</td></tr>\n",_("Sort"),UserSortField,UserSortOrder);
fprintf(fp_tt,"<tr><th class=\"header_c\">%s</th></tr>\n",_("User"));
write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("Sites & Users"));
fputs("<tr><td class=\"header_c\">",fp_ou);
- fprintf(fp_ou,_("Period: %s"),period.text);
+ fprintf(fp_ou,_("Period: %s"),period.html);
fputs("</td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",_("Sites & Users"));
close_html_header(fp_ou);
write_logo_image(fp_ou);
fprintf(fp_ou,"<tr><th align=\"center\"><b><font color=\"%s\" size=\"+1\">%s</font></b></th></tr>\n",TiColor,Title);
- fprintf(fp_ou,"<tr><td align=\"center\" bgcolor=\"%s\"><font size=\"%s\">%s: %s</font></td></tr>\n",HeaderBgColor,FontSize,_("Period"),period.text);
+ fprintf(fp_ou,"<tr><td align=\"center\" bgcolor=\"%s\"><font size=\"%s\">",HeaderBgColor,FontSize);
+ fprintf(fp_ou,_("Period: %s"),period.html);
+ fputs("</font></td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th bgcolor=\"%s\" align=\"center\"><font size=\"%s\">%s</font></th></tr>\n",HeaderBgColor,FontSize,_("SmartFilter"));
fputs("</table></div>\n",fp_ou);
if(LogoImage[0]!='\0') fprintf(fp_user,"<tr><th align=left><img src=\"%s\" border=\"0\" align=\"absmiddle\" width=\"%s\" height=\"%s\"><font color=\"%s\">%s</font>\n",LogoImage,Width,Height,LogoTextColor,LogoText);
fprintf(fp_user,"<tr><th align=\"center\"><b><font color=\"%s\" size=\"+1\">%s</font></b></th></tr>\n",TiColor,Title);
fputs("<tr><td align=center bgcolor=\"%s\"><font size=\"%s\">",fp_user);
- fprintf(fp_user,_("Period: %s"),period.text);
+ fprintf(fp_user,_("Period: %s"),period.html);
fputs("</font></td></tr>\n",fp_user);
fprintf(fp_user,"<tr><td align=\"center\" bgcolor=\"%s\"><font size=\"%s\">%s:</font><font size=\"%s\"> %s</font></td></tr>\n",HeaderBgColor,FontSize,_("User"),FontSize,uinfo->label);
fputs("</table></div>\n",fp_user);
write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("SQUIDGUARD"));
fputs("<tr><td class=\"header_l\">",fp_ou);
- fprintf(fp_ou,_("Period: %s"),period.text);
+ fprintf(fp_ou,_("Period: %s"),period.html);
fputs("</td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",_("SQUIDGUARD"));
close_html_header(fp_ou);
write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("Top sites"));
fputs("<tr><td class=\"header_c\">",fp_ou);
- fprintf(fp_ou,_("Period: %s"),period.text);
+ fprintf(fp_ou,_("Period: %s"),period.html);
fputs("</td></tr>\n",fp_ou);
fputs("<tr><th class=\"header_c\">",fp_ou);
fprintf(fp_ou,_("Top %d sites"),TopSitesNum);
snprintf(title,sizeof(title),_("SARG report for %s"),period.text);
write_html_header(fp_top3,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,title);
fputs("<tr><td class=\"header_c\">",fp_top3);
- fprintf(fp_top3,_("Period: %s"),period.text);
+ fprintf(fp_top3,_("Period: %s"),period.html);
fputs("</td></tr>\n",fp_top3);
fprintf(fp_top3,"<tr><td class=\"header_c\">%s: %s, %s</td></tr>\n",_("Sort"),TopuserSortField,TopuserSortOrder);
fprintf(fp_top3,"<tr><th class=\"header_c\">%s</th></tr>\n",_("Top users"));
int getperiod_buildtext(struct periodstruct *period)
{
int i;
-
- if(df[0]=='u')
- i=strftime(period->text, sizeof(period->text), "%Y %b %d", &period->start);
- else if(df[0]=='e')
- i=strftime(period->text, sizeof(period->text), "%d %b %Y", &period->start);
- else /*if(df[0]=='w')*/ {
+ int range;
+ char text1[40], text2[40];
+
+ if(df[0]=='u') {
+ i=strftime(text1, sizeof(text1), "%Y %b %d", &period->start);
+ }else if(df[0]=='e') {
+ i=strftime(text1, sizeof(text1), "%d %b %Y", &period->start);
+ } else /*if(df[0]=='w')*/ {
IndexTree=INDEX_TREE_FILE;
- i=strftime(period->text, sizeof(period->text), "%Y.%U", &period->start);
+ i=strftime(text1, sizeof(text1), "%Y.%U", &period->start);
}
+ if (i == 0) return(-1);
- if (period->start.tm_year!=period->end.tm_year ||
+ range=(period->start.tm_year!=period->end.tm_year ||
period->start.tm_mon!=period->end.tm_mon ||
- period->start.tm_mday!=period->end.tm_mday) {
- period->text[i++]='-';
- if(df[0]=='u')
- i=strftime(period->text+i, sizeof(period->text)-i, "%Y %b %d", &period->end);
- else if(df[0]=='e')
- i=strftime(period->text+i, sizeof(period->text)-i, "%d %b %Y", &period->end);
- else
- i=strftime(period->text+i, sizeof(period->text)-i, "%Y.%U", &period->end);
+ period->start.tm_mday!=period->end.tm_mday);
+ if (range) {
+ if(df[0]=='u') {
+ i=strftime(text2, sizeof(text2)-i, "%Y %b %d", &period->end);
+ } else if(df[0]=='e') {
+ i=strftime(text2, sizeof(text2)-i, "%d %b %Y", &period->end);
+ } else {
+ i=strftime(text2, sizeof(text2)-i, "%Y.%U", &period->end);
+ }
if (i == 0) return(-1);
}
+
+ if (range) {
+ snprintf(period->text,sizeof(period->text),"%s-%s",text1,text2);
+ snprintf(period->html,sizeof(period->html),"%s—%s",text1,text2);
+ } else {
+ strncpy(period->text,text1,sizeof(period->text)-1);
+ period->text[sizeof(period->text)-1]='\0';
+ strncpy(period->html,text1,sizeof(period->html)-1);
+ period->html[sizeof(period->html)-1]='\0';
+ }
return(0);
}