#include "html.h"
#include "ui-shared.h"
-#ifdef NO_C99_FORMAT
-#define SZ_FMT "%u"
-#else
-#define SZ_FMT "%zu"
-#endif
-
struct authorstat {
long total;
struct string_list list;
struct authorstat *authorstat;
struct string_list *items;
char *tmp;
- struct tm *date;
+ struct tm date;
time_t t;
+ uintptr_t *counter;
info = cgit_parse_commit(commit);
tmp = xstrdup(info->author);
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)
+ counter = (uintptr_t *)&item->util;
+ if (*counter)
free(tmp);
- item->util++;
+ (*counter)++;
+
authorstat->total++;
cgit_free_commitinfo(info);
}
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] = "--";
memset(&authors, 0, sizeof(authors));
while ((commit = get_revision(&rev)) != NULL) {
add_commit(&authors, commit, period);
- free_commit_buffer(commit);
+ free_commit_buffer(the_repository->parsed_objects, commit);
free_commit_list(commit->parents);
commit->parents = NULL;
}
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];
items = &authorstat->list;
date = string_list_lookup(items, tmp);
if (date)
- subtotal += (size_t)date->util;
+ subtotal += (uintptr_t)date->util;
}
htmlf("<td class='%s'>%ld</td>", centerclass, subtotal);
total += subtotal;
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>");
else {
- htmlf("<td>"SZ_FMT"</td>", (size_t)date->util);
- total += (size_t)date->util;
+ htmlf("<td>%lu</td>", (uintptr_t)date->util);
+ total += (uintptr_t)date->util;
}
}
htmlf("<td class='sum'>%ld</td></tr>", total);
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) {