History

Sort tags by age

This adds a function to compare timestamps and then uses it as callback for qsort() before printing out tags.

Lars Hjemli committed 19 years ago

Commit ef1cc6e1 parent 502d7101 file · +18 −0Browse files

Unified · Split

ui-summary.c+18−0
@@ -10,6 +10,23 @@ · 9 unmodified lines
1010
1111 static int header;
1212
13+static int cmp_tag_age(void *a, void *b)
14+{
15+ struct refinfo *r1 = *(struct refinfo **)a;
16+ struct refinfo *r2 = *(struct refinfo **)b;
17+
18+ if (r1->tag->tagger_date != 0 && r2->tag->tagger_date != 0)
19+ return r2->tag->tagger_date - r1->tag->tagger_date;
20+
21+ if (r1->tag->tagger_date == 0 && r2->tag->tagger_date == 0)
22+ return 0;
23+
24+ if (r1 == 0)
25+ return +1;
26+
27+ return -1;
28+}
29+
1330 static void cgit_print_branch(struct refinfo *ref)
1431 {
1532 struct commit *commit;
@@ -156,6 +173,7 @@ static void cgit_print_tags() · 140 unmodified lines
156173 for_each_tag_ref(cgit_refs_cb, &list);
157174 if (list.count == 0)
158175 return;
176+ qsort(list.refs, list.count, sizeof(*list.refs), cmp_tag_age);
159177 print_tag_header();
160178 for(i=0; i<list.count; i++)
161179 print_tag(list.refs[i]);