|
|
|
@@ -4,8 +4,14 @@ |
4 | #include "html.h" |
4 | #include "html.h" |
5 | #include "ui-shared.h" |
5 | #include "ui-shared.h" |
6 | #include "ui-stats.h" |
6 | #include "ui-stats.h" |
7 | |
7 | |
| |
8 | #ifdef NO_C99_FORMAT |
| |
9 | #define SZ_FMT "%u" |
| |
10 | #else |
| |
11 | #define SZ_FMT "%zu" |
| |
12 | #endif |
| |
13 | |
8 | #define MONTHS 6 |
14 | #define MONTHS 6 |
9 | |
15 | |
10 | struct authorstat { |
16 | struct authorstat { |
11 | long total; |
17 | long total; |
@@ -174,9 +180,9 @@ static void add_commit(struct string_list *authors, struct commit *commit, |
174 | time_t t; |
180 | time_t t; |
175 | |
181 | |
176 | info = cgit_parse_commit(commit); |
182 | info = cgit_parse_commit(commit); |
177 | tmp = xstrdup(info->author); |
183 | tmp = xstrdup(info->author); |
178 | author = string_list_insert(tmp, authors); |
184 | author = string_list_insert(authors, tmp); |
179 | if (!author->util) |
185 | if (!author->util) |
180 | author->util = xcalloc(1, sizeof(struct authorstat)); |
186 | author->util = xcalloc(1, sizeof(struct authorstat)); |
181 | else |
187 | else |
182 | free(tmp); |
188 | free(tmp); |
@@ -185,9 +191,9 @@ static void add_commit(struct string_list *authors, struct commit *commit, |
185 | t = info->committer_date; |
191 | t = info->committer_date; |
186 | date = gmtime(&t); |
192 | date = gmtime(&t); |
187 | period->trunc(date); |
193 | period->trunc(date); |
188 | tmp = xstrdup(period->pretty(date)); |
194 | tmp = xstrdup(period->pretty(date)); |
189 | item = string_list_insert(tmp, items); |
195 | item = string_list_insert(items, tmp); |
190 | if (item->util) |
196 | if (item->util) |
191 | free(tmp); |
197 | free(tmp); |
192 | item->util++; |
198 | item->util++; |
193 | authorstat->total++; |
199 | authorstat->total++; |
@@ -278,16 +284,16 @@ void print_combined_authorrow(struct string_list *authors, int from, int to, |
278 | for (i = from; i <= to; i++) { |
284 | for (i = from; i <= to; i++) { |
279 | author = &authors->items[i]; |
285 | author = &authors->items[i]; |
280 | authorstat = author->util; |
286 | authorstat = author->util; |
281 | items = &authorstat->list; |
287 | items = &authorstat->list; |
282 | date = string_list_lookup(tmp, items); |
288 | date = string_list_lookup(items, tmp); |
283 | if (date) |
289 | if (date) |
284 | subtotal += (size_t)date->util; |
290 | subtotal += (size_t)date->util; |
285 | } |
291 | } |
286 | htmlf("<td class='%s'>%d</td>", centerclass, subtotal); |
292 | htmlf("<td class='%s'>%ld</td>", centerclass, subtotal); |
287 | total += subtotal; |
293 | total += subtotal; |
288 | } |
294 | } |
289 | htmlf("<td class='%s'>%d</td></tr>", rightclass, total); |
295 | htmlf("<td class='%s'>%ld</td></tr>", rightclass, total); |
290 | } |
296 | } |
291 | |
297 | |
292 | void print_authors(struct string_list *authors, int top, |
298 | void print_authors(struct string_list *authors, int top, |
293 | struct cgit_period *period) |
299 | struct cgit_period *period) |
@@ -330,22 +336,22 @@ void print_authors(struct string_list *authors, int top, |
330 | period->dec(tm); |
336 | period->dec(tm); |
331 | for (j = 0; j < period->count; j++) { |
337 | for (j = 0; j < period->count; j++) { |
332 | tmp = period->pretty(tm); |
338 | tmp = period->pretty(tm); |
333 | period->inc(tm); |
339 | period->inc(tm); |
334 | date = string_list_lookup(tmp, items); |
340 | date = string_list_lookup(items, tmp); |
335 | if (!date) |
341 | if (!date) |
336 | html("<td>0</td>"); |
342 | html("<td>0</td>"); |
337 | else { |
343 | else { |
338 | htmlf("<td>%d</td>", date->util); |
344 | htmlf("<td>"SZ_FMT"</td>", (size_t)date->util); |
339 | total += (size_t)date->util; |
345 | total += (size_t)date->util; |
340 | } |
346 | } |
341 | } |
347 | } |
342 | htmlf("<td class='sum'>%d</td></tr>", total); |
348 | htmlf("<td class='sum'>%ld</td></tr>", total); |
343 | } |
349 | } |
344 | |
350 | |
345 | if (top < authors->nr) |
351 | if (top < authors->nr) |
346 | print_combined_authorrow(authors, top, authors->nr - 1, |
352 | print_combined_authorrow(authors, top, authors->nr - 1, |
347 | "Others (%d)", "left", "", "sum", period); |
353 | "Others (%ld)", "left", "", "sum", period); |
348 | |
354 | |
349 | print_combined_authorrow(authors, 0, authors->nr - 1, "Total", |
355 | print_combined_authorrow(authors, 0, authors->nr - 1, "Total", |
350 | "total", "sum", "sum", period); |
356 | "total", "sum", "sum", period); |
351 | html("</table>"); |
357 | html("</table>"); |
@@ -366,9 +372,9 @@ void cgit_show_stats(struct cgit_context *ctx) |
366 | code = ctx->qry.period; |
372 | code = ctx->qry.period; |
367 | |
373 | |
368 | i = cgit_find_stats_period(code, &period); |
374 | i = cgit_find_stats_period(code, &period); |
369 | if (!i) { |
375 | if (!i) { |
370 | cgit_print_error(fmt("Unknown statistics type: %c", code)); |
376 | cgit_print_error(fmt("Unknown statistics type: %c", code[0])); |
371 | return; |
377 | return; |
372 | } |
378 | } |
373 | if (i > ctx->repo->max_stats) { |
379 | if (i > ctx->repo->max_stats) { |
374 | cgit_print_error(fmt("Statistics type disabled: %s", |
380 | cgit_print_error(fmt("Statistics type disabled: %s", |
|