\n");
fprintf(f, "
");
int i;
int bgcolor = 0xd0d0ff;
int fgcolor = 0x000000;
for(i = 0; e[i] != NULL; i++) {
time_t t = e[i]->time;
struct tm* tm = gmtime(&t);
char* escusr = web_html_escape(e[i]->username);
char* escmsg = web_html_escape(e[i]->message);
char date[512];
strftime(date, 512, "%Y/%m/%d %H:%M:%S UTC", tm);
char cbuf[2];
cbuf[1] = 0;
char* fmtmsg = ia_strdup("");
int j;
char buffer[512];
memset(buffer, 0, 512);
int bufincr = 0;
for(j = 0; escmsg[j] != 0; j++) {
if(escmsg[j] == 2) {
TAG("b", "", 'B');
} else if(escmsg[j] == 0x1d) {
TAG("i", "", 'I');
} else if(escmsg[j] == 0x1f) {
TAG("u", "", 'U');
} else if(escmsg[j] == 0x1e) {
TAG("s", "", 'S');
} else if(escmsg[j] == 0x16) {
char fgt[32];
char bgt[32];
int _c = fgcolor;
fgcolor = bgcolor;
bgcolor = _c;
sprintf(fgt, "#%06X", fgcolor);
sprintf(bgt, "#%06X", bgcolor);
char* _ = ia_strcat4(" style=\"background-color: ", bgt, "; color: ", fgt);
char* style = ia_strcat(_, ";\"");
free(_);
TAG("span", style, 'R');
} else if(escmsg[j] == 0x03) {
j++;
int k = j;
for(; escmsg[j] != 0 && j < k + 2; j++) {
if(!('0' <= escmsg[j] && escmsg[j] <= '9')) break;
}
if(escmsg[j] == ',') {
j++;
k = j;
for(; escmsg[j] != 0 && j < k + 2; j++) {
if(!('0' <= escmsg[j] && escmsg[j] <= '9')) break;
}
}
j--;
} else if(escmsg[j] == 0x0f) {
int k;
for(k = bufincr - 1; k >= 0; k--) {
char c = buffer[k];
if(c == 'B') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
} else if(c == 'I') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
} else if(c == 'U') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
} else if(c == 'S') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
} else if(c == 'R') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
}
}
bufincr = 0;
bgcolor = 0xd0d0ff;
fgcolor = 0x000000;
} else {
cbuf[0] = escmsg[j];
char* tmp;
tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, cbuf);
free(tmp);
}
}
for(j = bufincr - 1; j >= 0; j--) {
char c = buffer[j];
if(c == 'B') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
} else if(c == 'I') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
} else if(c == 'U') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
} else if(c == 'S') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
} else if(c == 'R') {
char* tmp = fmtmsg;
fmtmsg = ia_strcat(tmp, "");
free(tmp);
}
}
fprintf(f, "[%s] <%s> %s\n", date, escusr, fmtmsg);
free(fmtmsg);
free(escusr);
free(escmsg);
free(e[i]->username);
free(e[i]->message);
free(e[i]);
}
free(e);
fprintf(f, "
\n");
fprintf(f, "
Statistics
%d messages\n", i);
fprintf(f, "
\n");
fprintf(f, "