summaryrefslogtreecommitdiffabout
path: root/cgit.c
Side-by-side diff
Diffstat (limited to 'cgit.c') (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/cgit.c b/cgit.c
index 8ab6889..b0e202e 100644
--- a/cgit.c
+++ b/cgit.c
@@ -438,4 +438,24 @@ int cmp_repos(const void *a, const void *b)
}
+char *build_snapshot_setting(int bitmap)
+{
+ const struct cgit_snapshot_format *f;
+ char *result = xstrdup("");
+ char *tmp;
+ int len;
+
+ for (f = cgit_snapshot_formats; f->suffix; f++) {
+ if (f->bit & bitmap) {
+ tmp = result;
+ result = xstrdup(fmt("%s%s ", tmp, f->suffix));
+ free(tmp);
+ }
+ }
+ len = strlen(result);
+ if (len)
+ result[len - 1] = '\0';
+ return result;
+}
+
void print_repo(FILE *f, struct cgit_repo *repo)
{
@@ -467,4 +487,9 @@ void print_repo(FILE *f, struct cgit_repo *repo)
if (repo->source_filter && repo->source_filter != ctx.cfg.source_filter)
fprintf(f, "repo.source-filter=%s\n", repo->source_filter->cmd);
+ if (repo->snapshots != ctx.cfg.snapshots) {
+ char *tmp = build_snapshot_setting(repo->snapshots);
+ fprintf(f, "repo.snapshots=%s\n", tmp);
+ free(tmp);
+ }
fprintf(f, "\n");
}