+/* ui-stats.c: generate stats view
+ *
+ * Copyright (C) 2006-2014 cgit Development Team <cgit@lists.zx2c4.com>
+ *
+ * Licensed under GNU General Public License v2
+ * (see COPYING for full license text)
+ */
+
+#define USE_THE_REPOSITORY_VARIABLE
+
#include "cgit.h"
#include "ui-stats.h"
#include "html.h"
struct authorstat *authorstat;
struct string_list *items;
char *tmp;
- struct tm *date;
+ struct tm date;
time_t t;
uintptr_t *counter;
authorstat = author->util;
items = &authorstat->list;
t = info->committer_date;
- date = gmtime(&t);
- period->trunc(date);
- tmp = xstrdup(period->pretty(date));
+ gmtime_r(&t, &date);
+ period->trunc(&date);
+ tmp = xstrdup(period->pretty(&date));
item = string_list_insert(items, tmp);
- if (item->util)
- free(tmp);
counter = (uintptr_t *)&item->util;
+ if (*counter)
+ free(tmp);
(*counter)++;
authorstat->total++;
int argc = 3;
time_t now;
long i;
- struct tm *tm;
+ struct tm tm;
char tmp[11];
time(&now);
- tm = gmtime(&now);
- period->trunc(tm);
+ gmtime_r(&now, &tm);
+ period->trunc(&tm);
for (i = 1; i < period->count; i++)
- period->dec(tm);
- strftime(tmp, sizeof(tmp), "%Y-%m-%d", tm);
+ period->dec(&tm);
+ strftime(tmp, sizeof(tmp), "%Y-%m-%d", &tm);
argv[2] = xstrdup(fmt("--since=%s", tmp));
if (ctx.qry.path) {
argv[3] = "--";
argv[4] = ctx.qry.path;
argc += 2;
}
- init_revisions(&rev, NULL);
+ repo_init_revisions(the_repository, &rev, NULL);
rev.abbrev = DEFAULT_ABBREV;
rev.commit_format = CMIT_FMT_DEFAULT;
rev.max_parents = 1;
memset(&authors, 0, sizeof(authors));
while ((commit = get_revision(&rev)) != NULL) {
add_commit(&authors, commit, period);
- free_commit_buffer(commit);
- free_commit_list(commit->parents);
+ release_commit_memory(the_repository->parsed_objects, commit);
commit->parents = NULL;
}
return authors;
struct string_list_item *date;
time_t now;
long i, j, total, subtotal;
- struct tm *tm;
+ struct tm tm;
char *tmp;
time(&now);
- tm = gmtime(&now);
- period->trunc(tm);
+ gmtime_r(&now, &tm);
+ period->trunc(&tm);
for (i = 1; i < period->count; i++)
- period->dec(tm);
+ period->dec(&tm);
total = 0;
htmlf("<tr><td class='%s'>%s</td>", leftclass,
fmt(name, to - from + 1));
for (j = 0; j < period->count; j++) {
- tmp = period->pretty(tm);
- period->inc(tm);
+ tmp = period->pretty(&tm);
+ period->inc(&tm);
subtotal = 0;
for (i = from; i <= to; i++) {
author = &authors->items[i];
struct string_list_item *date;
time_t now;
long i, j, total;
- struct tm *tm;
+ struct tm tm;
char *tmp;
time(&now);
- tm = gmtime(&now);
- period->trunc(tm);
+ gmtime_r(&now, &tm);
+ period->trunc(&tm);
for (i = 1; i < period->count; i++)
- period->dec(tm);
+ period->dec(&tm);
html("<table class='stats'><tr><th>Author</th>");
for (j = 0; j < period->count; j++) {
- tmp = period->pretty(tm);
+ tmp = period->pretty(&tm);
htmlf("<th>%s</th>", tmp);
- period->inc(tm);
+ period->inc(&tm);
}
html("<th>Total</th></tr>\n");
items = &authorstat->list;
total = 0;
for (j = 0; j < period->count; j++)
- period->dec(tm);
+ period->dec(&tm);
for (j = 0; j < period->count; j++) {
- tmp = period->pretty(tm);
- period->inc(tm);
+ tmp = period->pretty(&tm);
+ period->inc(&tm);
date = string_list_lookup(items, tmp);
if (!date)
html("<td>0</td>");
cgit_print_layout_start();
html("<div class='cgit-panel'>");
html("<b>stat options</b>");
- html("<form method='get' action=''>");
+ html("<form method='get'>");
cgit_add_hidden_formfields(1, 0, "stats");
html("<table><tr><td colspan='2'/></tr>");
if (ctx.repo->max_stats > 1) {