+static void dump_marks_helper(FILE *f,
+ unsigned long base,
+ struct mark_set *m)
+{
+ int k;
+ if (m->shift) {
+ for (k = 0; k < 1024; k++) {
+ if (m->data.sets[k])
+ dump_marks_helper(f, (base + k) << m->shift,
+ m->data.sets[k]);
+ }
+ } else {
+ for (k = 0; k < 1024; k++) {
+ if (m->data.marked[k])
+ fprintf(f, "%lu,%s\n", base + k,
+ sha1_to_hex(m->data.marked[k]->sha1));
+ }
+ }
+}
+
+static void dump_marks()
+{
+ if (mark_file)
+ {
+ FILE *f = fopen(mark_file, "w");
+ dump_marks_helper(f, 0, marks);
+ fclose(f);
+ }
+}
+