summary refs log tree commit diff
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2009-08-24 10:55:01 +0200
committerLars Hjemli <hjemli@gmail.com>2009-08-24 10:55:01 +0200
commit5ca8df0a3d75ba1ca5af28872977f7714b66ff37 (patch)
treef838611403f384c92fefc3eef69dc75507bb2e9d
parent3548320004512276ea0bbfe80b2ae9b5cc7e2c76 (diff)
cgit.c: generate repo.snapshots in print_repo()
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-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
@@ -437,6 +437,26 @@ int cmp_repos(const void *a, const void *b)
 	return strcmp(ra->url, rb->url);
 }
 
+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)
 {
 	fprintf(f, "repo.url=%s\n", repo->url);
@@ -466,6 +486,11 @@ void print_repo(FILE *f, struct cgit_repo *repo)
 		fprintf(f, "repo.commit-filter=%s\n", repo->commit_filter->cmd);
 	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");
 }