summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2009-08-24 09:02:48 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2009-08-24 09:02:48 (UTC)
commitb47b7bd1d0fb872763214e674b53a562c7513fc0 (patch) (unidiff)
tree03466abfe90a858ee4f7b09877b095b6a7f50555
parent5ca8df0a3d75ba1ca5af28872977f7714b66ff37 (diff)
downloadcgit-b47b7bd1d0fb872763214e674b53a562c7513fc0.zip
cgit-b47b7bd1d0fb872763214e674b53a562c7513fc0.tar.gz
cgit-b47b7bd1d0fb872763214e674b53a562c7513fc0.tar.bz2
Add and use cgit_find_stats_periodname() in print_repo()
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c3
-rw-r--r--ui-stats.c8
-rw-r--r--ui-stats.h1
3 files changed, 12 insertions, 0 deletions
diff --git a/cgit.c b/cgit.c
index b0e202e..93a7a69 100644
--- a/cgit.c
+++ b/cgit.c
@@ -470,48 +470,51 @@ void print_repo(FILE *f, struct cgit_repo *repo)
470 fprintf(f, "repo.readme=%s\n", repo->readme); 470 fprintf(f, "repo.readme=%s\n", repo->readme);
471 if (repo->defbranch) 471 if (repo->defbranch)
472 fprintf(f, "repo.defbranch=%s\n", repo->defbranch); 472 fprintf(f, "repo.defbranch=%s\n", repo->defbranch);
473 if (repo->module_link) 473 if (repo->module_link)
474 fprintf(f, "repo.module-link=%s\n", repo->module_link); 474 fprintf(f, "repo.module-link=%s\n", repo->module_link);
475 if (repo->section) 475 if (repo->section)
476 fprintf(f, "repo.section=%s\n", repo->section); 476 fprintf(f, "repo.section=%s\n", repo->section);
477 if (repo->clone_url) 477 if (repo->clone_url)
478 fprintf(f, "repo.clone-url=%s\n", repo->clone_url); 478 fprintf(f, "repo.clone-url=%s\n", repo->clone_url);
479 fprintf(f, "repo.enable-log-filecount=%d\n", 479 fprintf(f, "repo.enable-log-filecount=%d\n",
480 repo->enable_log_filecount); 480 repo->enable_log_filecount);
481 fprintf(f, "repo.enable-log-linecount=%d\n", 481 fprintf(f, "repo.enable-log-linecount=%d\n",
482 repo->enable_log_linecount); 482 repo->enable_log_linecount);
483 if (repo->about_filter && repo->about_filter != ctx.cfg.about_filter) 483 if (repo->about_filter && repo->about_filter != ctx.cfg.about_filter)
484 fprintf(f, "repo.about-filter=%s\n", repo->about_filter->cmd); 484 fprintf(f, "repo.about-filter=%s\n", repo->about_filter->cmd);
485 if (repo->commit_filter && repo->commit_filter != ctx.cfg.commit_filter) 485 if (repo->commit_filter && repo->commit_filter != ctx.cfg.commit_filter)
486 fprintf(f, "repo.commit-filter=%s\n", repo->commit_filter->cmd); 486 fprintf(f, "repo.commit-filter=%s\n", repo->commit_filter->cmd);
487 if (repo->source_filter && repo->source_filter != ctx.cfg.source_filter) 487 if (repo->source_filter && repo->source_filter != ctx.cfg.source_filter)
488 fprintf(f, "repo.source-filter=%s\n", repo->source_filter->cmd); 488 fprintf(f, "repo.source-filter=%s\n", repo->source_filter->cmd);
489 if (repo->snapshots != ctx.cfg.snapshots) { 489 if (repo->snapshots != ctx.cfg.snapshots) {
490 char *tmp = build_snapshot_setting(repo->snapshots); 490 char *tmp = build_snapshot_setting(repo->snapshots);
491 fprintf(f, "repo.snapshots=%s\n", tmp); 491 fprintf(f, "repo.snapshots=%s\n", tmp);
492 free(tmp); 492 free(tmp);
493 } 493 }
494 if (repo->max_stats != ctx.cfg.max_stats)
495 fprintf(f, "repo.max-stats=%s\n",
496 cgit_find_stats_periodname(repo->max_stats));
494 fprintf(f, "\n"); 497 fprintf(f, "\n");
495} 498}
496 499
497void print_repolist(FILE *f, struct cgit_repolist *list, int start) 500void print_repolist(FILE *f, struct cgit_repolist *list, int start)
498{ 501{
499 int i; 502 int i;
500 503
501 for(i = start; i < list->count; i++) 504 for(i = start; i < list->count; i++)
502 print_repo(f, &list->repos[i]); 505 print_repo(f, &list->repos[i]);
503} 506}
504 507
505/* Scan 'path' for git repositories, save the resulting repolist in 'cached_rc' 508/* Scan 'path' for git repositories, save the resulting repolist in 'cached_rc'
506 * and return 0 on success. 509 * and return 0 on success.
507 */ 510 */
508static int generate_cached_repolist(const char *path, const char *cached_rc) 511static int generate_cached_repolist(const char *path, const char *cached_rc)
509{ 512{
510 char *locked_rc; 513 char *locked_rc;
511 int idx; 514 int idx;
512 FILE *f; 515 FILE *f;
513 516
514 locked_rc = xstrdup(fmt("%s.lock", cached_rc)); 517 locked_rc = xstrdup(fmt("%s.lock", cached_rc));
515 f = fopen(locked_rc, "wx"); 518 f = fopen(locked_rc, "wx");
516 if (!f) { 519 if (!f) {
517 /* Inform about the error unless the lockfile already existed, 520 /* Inform about the error unless the lockfile already existed,
diff --git a/ui-stats.c b/ui-stats.c
index 9fc06d3..bdaf9cc 100644
--- a/ui-stats.c
+++ b/ui-stats.c
@@ -133,48 +133,56 @@ struct cgit_period periods[] = {
133/* Given a period code or name, return a period index (1, 2, 3 or 4) 133/* Given a period code or name, return a period index (1, 2, 3 or 4)
134 * and update the period pointer to the correcsponding struct. 134 * and update the period pointer to the correcsponding struct.
135 * If no matching code is found, return 0. 135 * If no matching code is found, return 0.
136 */ 136 */
137int cgit_find_stats_period(const char *expr, struct cgit_period **period) 137int cgit_find_stats_period(const char *expr, struct cgit_period **period)
138{ 138{
139 int i; 139 int i;
140 char code = '\0'; 140 char code = '\0';
141 141
142 if (!expr) 142 if (!expr)
143 return 0; 143 return 0;
144 144
145 if (strlen(expr) == 1) 145 if (strlen(expr) == 1)
146 code = expr[0]; 146 code = expr[0];
147 147
148 for (i = 0; i < sizeof(periods) / sizeof(periods[0]); i++) 148 for (i = 0; i < sizeof(periods) / sizeof(periods[0]); i++)
149 if (periods[i].code == code || !strcmp(periods[i].name, expr)) { 149 if (periods[i].code == code || !strcmp(periods[i].name, expr)) {
150 if (period) 150 if (period)
151 *period = &periods[i]; 151 *period = &periods[i];
152 return i+1; 152 return i+1;
153 } 153 }
154 return 0; 154 return 0;
155} 155}
156 156
157const char *cgit_find_stats_periodname(int idx)
158{
159 if (idx > 0 && idx < 4)
160 return periods[idx - 1].name;
161 else
162 return "";
163}
164
157static void add_commit(struct string_list *authors, struct commit *commit, 165static void add_commit(struct string_list *authors, struct commit *commit,
158 struct cgit_period *period) 166 struct cgit_period *period)
159{ 167{
160 struct commitinfo *info; 168 struct commitinfo *info;
161 struct string_list_item *author, *item; 169 struct string_list_item *author, *item;
162 struct authorstat *authorstat; 170 struct authorstat *authorstat;
163 struct string_list *items; 171 struct string_list *items;
164 char *tmp; 172 char *tmp;
165 struct tm *date; 173 struct tm *date;
166 time_t t; 174 time_t t;
167 175
168 info = cgit_parse_commit(commit); 176 info = cgit_parse_commit(commit);
169 tmp = xstrdup(info->author); 177 tmp = xstrdup(info->author);
170 author = string_list_insert(tmp, authors); 178 author = string_list_insert(tmp, authors);
171 if (!author->util) 179 if (!author->util)
172 author->util = xcalloc(1, sizeof(struct authorstat)); 180 author->util = xcalloc(1, sizeof(struct authorstat));
173 else 181 else
174 free(tmp); 182 free(tmp);
175 authorstat = author->util; 183 authorstat = author->util;
176 items = &authorstat->list; 184 items = &authorstat->list;
177 t = info->committer_date; 185 t = info->committer_date;
178 date = gmtime(&t); 186 date = gmtime(&t);
179 period->trunc(date); 187 period->trunc(date);
180 tmp = xstrdup(period->pretty(date)); 188 tmp = xstrdup(period->pretty(date));
diff --git a/ui-stats.h b/ui-stats.h
index 4f13dba..f0761ba 100644
--- a/ui-stats.h
+++ b/ui-stats.h
@@ -1,27 +1,28 @@
1#ifndef UI_STATS_H 1#ifndef UI_STATS_H
2#define UI_STATS_H 2#define UI_STATS_H
3 3
4#include "cgit.h" 4#include "cgit.h"
5 5
6struct cgit_period { 6struct cgit_period {
7 const char code; 7 const char code;
8 const char *name; 8 const char *name;
9 int max_periods; 9 int max_periods;
10 int count; 10 int count;
11 11
12 /* Convert a tm value to the first day in the period */ 12 /* Convert a tm value to the first day in the period */
13 void (*trunc)(struct tm *tm); 13 void (*trunc)(struct tm *tm);
14 14
15 /* Update tm value to start of next/previous period */ 15 /* Update tm value to start of next/previous period */
16 void (*dec)(struct tm *tm); 16 void (*dec)(struct tm *tm);
17 void (*inc)(struct tm *tm); 17 void (*inc)(struct tm *tm);
18 18
19 /* Pretty-print a tm value */ 19 /* Pretty-print a tm value */
20 char *(*pretty)(struct tm *tm); 20 char *(*pretty)(struct tm *tm);
21}; 21};
22 22
23extern int cgit_find_stats_period(const char *expr, struct cgit_period **period); 23extern int cgit_find_stats_period(const char *expr, struct cgit_period **period);
24extern const char *cgit_find_stats_periodname(int idx);
24 25
25extern void cgit_show_stats(struct cgit_context *ctx); 26extern void cgit_show_stats(struct cgit_context *ctx);
26 27
27#endif /* UI_STATS_H */ 28#endif /* UI_STATS_H */