diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2007-10-25 20:33:04 +0200 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2007-10-27 10:53:19 +0200 | 
| commit | ef1cc6ef941cedf2e34fa1ed34ca8cd8a0cfdacc (patch) | |
| tree | 5c9d40e556a5787e9338bc506dec37360f54d8f5 | |
| parent | Use reflist to print tag info (diff) | |
| download | cgit-ef1cc6ef941cedf2e34fa1ed34ca8cd8a0cfdacc.tar.gz cgit-ef1cc6ef941cedf2e34fa1ed34ca8cd8a0cfdacc.tar.bz2 cgit-ef1cc6ef941cedf2e34fa1ed34ca8cd8a0cfdacc.zip | |
Sort tags by age
This adds a function to compare timestamps and then uses it as callback
for qsort() before printing out tags.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| -rw-r--r-- | ui-summary.c | 18 | 
1 files changed, 18 insertions, 0 deletions
| diff --git a/ui-summary.c b/ui-summary.c index c684628..43582da 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -10,6 +10,23 @@  static int header; +static int cmp_tag_age(void *a, void *b) +{ +	struct refinfo *r1 = *(struct refinfo **)a; +	struct refinfo *r2 = *(struct refinfo **)b; + +	if (r1->tag->tagger_date != 0 && r2->tag->tagger_date != 0) +		return r2->tag->tagger_date - r1->tag->tagger_date; + +	if (r1->tag->tagger_date == 0 && r2->tag->tagger_date == 0) +		return 0; + +	if (r1 == 0) +		return +1; + +	return -1; +} +  static void cgit_print_branch(struct refinfo *ref)  {  	struct commit *commit; @@ -156,6 +173,7 @@ static void cgit_print_tags()  	for_each_tag_ref(cgit_refs_cb, &list);  	if (list.count == 0)  		return; +	qsort(list.refs, list.count, sizeof(*list.refs), cmp_tag_age);  	print_tag_header();  	for(i=0; i<list.count; i++)  		print_tag(list.refs[i]); | 
