diff --git a/src/www_email.c b/src/www_email.c index 05b436b..20c3ae5 100644 --- a/src/www_email.c +++ b/src/www_email.c @@ -141,72 +141,20 @@ int www_send_email(struct user_record *user, char *recipient, char *subject, cha } char *www_new_email() { - char *page; - int max_len; - int len; - char buffer[4096]; + stralloc page = EMPTY_STRALLOC; - page = (char *)malloz(4096); - max_len = 4096; - len = 0; + stralloc_copys(&page, "

New Email

\n"); + stralloc_cats(&page, "
\n"); + stralloc_cats(&page, "To :
\n"); + stralloc_cats(&page, "Subject :
\n"); + stralloc_cats(&page, "\n
"); + stralloc_cats(&page, "\n
"); + stralloc_cats(&page, "
\n"); + stralloc_0(&page); - sprintf(buffer, "

New Email

\n"); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); - - sprintf(buffer, "
\n", conf.www_url); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); - - sprintf(buffer, "To :
\n"); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); - - sprintf(buffer, "Subject :
\n"); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); - - sprintf(buffer, "\n
"); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); - - sprintf(buffer, "\n
"); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); - - sprintf(buffer, "
\n"); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); - - return page; + return page.s; } char *www_email_display(struct user_record *user, int email) { diff --git a/src/www_last10.c b/src/www_last10.c index 8476d24..af202d5 100644 --- a/src/www_last10.c +++ b/src/www_last10.c @@ -1,88 +1,57 @@ #if defined(ENABLE_WWW) -#include #include #include +#include + #include "bbs.h" extern struct bbs_config conf; char *www_last10() { - char *page; - int max_len; - int len; - char buffer[4096]; + size_t n = 0; + stralloc page = EMPTY_STRALLOC; struct last10_callers callers[10]; - int i, z; - struct tm l10_time; FILE *fptr = fopen("last10v2.dat", "rb"); - if (fptr != NULL) { - - for (i = 0; i < 10; i++) { - if (fread(&callers[i], sizeof(struct last10_callers), 1, fptr) < 1) { + for ( ; n < 10; ++n) + if (fread(&callers[n], sizeof(callers[n]), 1, fptr) != sizeof(callers[n])) break; - } - } - fclose(fptr); - } else { - i = 0; } - page = (char *)malloz(4096); - max_len = 4096; - len = 0; + stralloc_copys(&page, "

Last 10 Callers

\n"); + stralloc_cats(&page, "
\n"); + for (size_t i = 0; i < n; ++i) { + struct tm called; + char buffer[32]; - sprintf(buffer, "

Last 10 Callers

\n"); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); + stralloc_cats(&page, "
"); + stralloc_cats(&page, callers[i].name); + stralloc_cats(&page, "
"); + stralloc_cats(&page, callers[i].location); + stralloc_cats(&page, "
"); + stralloc_cats(&page, "
"); - sprintf(buffer, "
\n"); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); - - for (z = 0; z < i; z++) { - localtime_r(&callers[z].time, &l10_time); - if (conf.date_style == 1) { - if (callers[z].calls == 1) { - sprintf(buffer, "
%s
%s
%.2d:%.2d %.2d-%.2d-%.2d
\n", callers[z].name, callers[z].location, l10_time.tm_hour, l10_time.tm_min, l10_time.tm_mon + 1, l10_time.tm_mday, l10_time.tm_year - 100, conf.www_url); - } else { - sprintf(buffer, "
%s
%s
%.2d:%.2d %.2d-%.2d-%.2d
\n", callers[z].name, callers[z].location, l10_time.tm_hour, l10_time.tm_min, l10_time.tm_mon + 1, l10_time.tm_mday, l10_time.tm_year - 100); - } - } else { - if (callers[z].calls == 1) { - sprintf(buffer, "
%s
%s
%.2d:%.2d %.2d-%.2d-%.2d
\n", callers[z].name, callers[z].location, l10_time.tm_hour, l10_time.tm_min, l10_time.tm_mday, l10_time.tm_mon + 1, l10_time.tm_year - 100, conf.www_url); - } else { - sprintf(buffer, "
%s
%s
%.2d:%.2d %.2d-%.2d-%.2d
\n", callers[z].name, callers[z].location, l10_time.tm_hour, l10_time.tm_min, l10_time.tm_mday, l10_time.tm_mon + 1, l10_time.tm_year - 100); - } + localtime_r(&callers[i].time, &called); + if (conf.date_style == 1) + strftime(buffer, sizeof buffer, "%H:%M %m-%d-%y", &called); + else + strftime(buffer, sizeof buffer, "%H:%M %d-%m-%y", &called); + stralloc_cats(&page, buffer); + stralloc_cats(&page, "
\n"); + if (callers[i].calls == 1) { + stralloc_cats(&page, "
"); } - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); + stralloc_cats(&page, "
\n"); } + stralloc_cats(&page, "
\n"); + stralloc_0(&page); - sprintf(buffer, "
\n"); - if (len + strlen(buffer) > max_len - 1) { - max_len += 4096; - page = (char *)realloc(page, max_len); - } - strcat(page, buffer); - len += strlen(buffer); - - return page; + return page.s; } #endif