init_scoreboard(&sb);
sb.revs = &revs;
sb.repo = the_repository;
- setup_scoreboard(&sb, path, &o);
+ sb.path = path;
+ setup_scoreboard(&sb, &o);
o->suspects = blame_entry_prepend(NULL, 0, sb.num_lines, o);
prio_queue_put(&sb.commits, o->commit);
blame_origin_decref(o);
static char month[][4] =
{"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
- struct tm *tm = gmtime(&t);
- return fmt("%s, %02d %s %04d %02d:%02d:%02d GMT", day[tm->tm_wday],
- tm->tm_mday, month[tm->tm_mon], 1900 + tm->tm_year,
- tm->tm_hour, tm->tm_min, tm->tm_sec);
+ struct tm tm;
+ gmtime_r(&t, &tm);
+ return fmt("%s, %02d %s %04d %02d:%02d:%02d GMT", day[tm.tm_wday],
+ tm.tm_mday, month[tm.tm_mon], 1900 + tm.tm_year,
+ tm.tm_hour, tm.tm_min, tm.tm_sec);
}
void cgit_print_error(const char *fmt, ...)
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);
counter = (uintptr_t *)&item->util;
if (*counter)
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] = "--";
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>");