X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fhtml.c;h=b2e9e340e7e9cebbf9030eefb47aeafe05d4105c;hb=cb642aa184b4975dceb8cb596a3285d0e3a91e55;hp=c5a0a2d62e6066df1cb702b98e865bf96696d2f2;hpb=a7dfd8274a4ba68abc4971a46d173ca1b4ae22c8;p=ppastats.git diff --git a/src/html.c b/src/html.c index c5a0a2d..b2e9e34 100644 --- a/src/html.c +++ b/src/html.c @@ -36,28 +36,9 @@ #include "lp_ws.h" #include "ppastats.h" -#define HTML_FOOTER \ -"
Generated by \ -ppastats
\n\ - \n\ -" - -#define HTML_PKG_TEMPLATE \ -"

N/A

\n\ -
\n\ -
\n\ -
\n\ -
\n\ -
\n\ - PPA: \n\ - \n\ - N/A/\n\ - N/A\n\ - \n\ -\n\ -
Distros:
\n\ -
Versions:
\n\ -
" +static char *footer; +static char *ppa_body; +static char *pkg_body; #define HTML_VERSION_TEMPLATE \ "\n\ @@ -98,8 +79,7 @@ src=\"js/excanvas.js\">\n\ Distros:\n\ \n\ \n\ - \n\ -%s" + \n" #define HTML_HEADER \ "\n\ @@ -129,24 +109,15 @@ src=\"js/excanvas.js\">\n\ \n\ \n" -#define HTML_INDEX_TEMPLATE \ -"

N/A

\n\ -
\n\ -
\n\ - Packages:\n\ - \n\ -
\n\ -
\n\ -
\n\ -
\n\ -
\n" - static char *path_new(const char *dir, const char *file, const char *suffixe) { - char *path = malloc(strlen(dir)+1+ - strlen(file)+ - (suffixe ? strlen(suffixe) : 0) + - 1); + char *path; + + /* [dir]/[file][suffixe] */ + path = malloc(strlen(dir)+1+ + strlen(file)+ + (suffixe ? strlen(suffixe) : 0) + + 1); strcpy(path, dir); strcat(path, "/"); @@ -156,6 +127,51 @@ static char *path_new(const char *dir, const char *file, const char *suffixe) return path; } +static const char *get_footer() +{ + const char *path; + + if (!footer) { + path = DEFAULT_WWW_DIR"/footer.tpl"; + footer = file_get_content(path); + + if (!footer) + log_err("Failed to read footer template: %s", path); + } + + return footer; +} + +static const char *get_ppa_body() +{ + const char *path; + + if (!ppa_body) { + path = DEFAULT_WWW_DIR"/ppa.tpl"; + ppa_body = file_get_content(path); + + if (!ppa_body) + log_err("Failed to read PPA template: %s", path); + } + + return ppa_body; +} + +static const char *get_pkg_body() +{ + const char *path; + + if (!pkg_body) { + path = DEFAULT_WWW_DIR"/pkg.tpl"; + pkg_body = file_get_content(path); + + if (!pkg_body) + log_err("Failed to read package template: %s", path); + } + + return pkg_body; +} + static struct json_object *date_to_json(struct tm *tm) { json_object *json; @@ -380,6 +396,7 @@ version_to_html(struct ppa_stats *ppa, { char *f_name, *path; FILE *f; + const char *footer; f_name = malloc(strlen(pkg->name)+1+strlen(version->version)+1); sprintf(f_name, "%s_%s", pkg->name, version->version); @@ -393,8 +410,11 @@ version_to_html(struct ppa_stats *ppa, } fprintf(f, HTML_VERSION_TEMPLATE, - version_to_json(ppa, pkg, version), - HTML_FOOTER); + version_to_json(ppa, pkg, version)); + + footer = get_footer(); + if (footer) + fputs(footer, f); fclose(f); @@ -409,6 +429,7 @@ create_html(const char *path, const char *script) { FILE *f; + const char *footer; f = fopen(path, "w"); @@ -419,7 +440,10 @@ create_html(const char *path, fprintf(f, HTML_HEADER, title, script); fputs(body_template, f); - fputs(HTML_FOOTER, f); + + footer = get_footer(); + if (footer) + fputs(footer, f); fclose(f); } @@ -440,6 +464,13 @@ index_to_html(struct ppa_stats *ppa, const char *dir) { char *path, *json_path, *dname; json_object *json; + const char *body; + + body = get_ppa_body(); + if (!body) { + log_err("Failed to create PPA page"); + return ; + } json = ppa_to_json(ppa); json_path = path_new(dir, "index", ".json"); @@ -451,7 +482,7 @@ index_to_html(struct ppa_stats *ppa, const char *dir) path = path_new(dir, "index", ".html"); dname = ppa_display_name(ppa); - create_html(path, dname, HTML_INDEX_TEMPLATE, "ppastats_ppa();"); + create_html(path, dname, body, "ppastats_ppa();"); free(path); free(dname); } @@ -461,6 +492,13 @@ pkg_to_html(struct ppa_stats *ppa, struct package_stats *pkg, const char *dir) { char *path, *json_path, *script; json_object *json; + const char *body; + + body = get_pkg_body(); + if (!body) { + log_err("Failed to create package page: %s", pkg->name); + return ; + } json_path = path_new(dir, pkg->name, ".json"); json = pkg_to_json(ppa, pkg); @@ -479,7 +517,7 @@ pkg_to_html(struct ppa_stats *ppa, struct package_stats *pkg, const char *dir) log_debug(_("generating %s"), path); - create_html(path, pkg->name, HTML_PKG_TEMPLATE, script); + create_html(path, pkg->name, body, script); free(path); free(script); }