about summary refs log tree commit diff stats
path: root/ui-refs.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui-refs.c')
-rw-r--r--ui-refs.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/ui-refs.c b/ui-refs.c index 5b4530e..75f2789 100644 --- a/ui-refs.c +++ b/ui-refs.c
@@ -93,34 +93,28 @@ static void print_tag_header(void)
93static void print_tag_downloads(const struct cgit_repo *repo, const char *ref) 93static void print_tag_downloads(const struct cgit_repo *repo, const char *ref)
94{ 94{
95 const struct cgit_snapshot_format* f; 95 const struct cgit_snapshot_format* f;
96 struct strbuf filename = STRBUF_INIT;
97 const char *basename; 96 const char *basename;
98 int free_ref = 0; 97 struct strbuf filename = STRBUF_INIT;
98 size_t prefixlen;
99 99
100 if (!ref || strlen(ref) < 1) 100 if (!ref || strlen(ref) < 1)
101 return; 101 return;
102 102
103 basename = cgit_repobasename(repo->url); 103 basename = cgit_repobasename(repo->url);
104 if (!starts_with(ref, basename)) { 104 if (starts_with(ref, basename))
105 if ((ref[0] == 'v' || ref[0] == 'V') && isdigit(ref[1])) 105 strbuf_addstr(&filename, ref);
106 ref++; 106 else
107 if (isdigit(ref[0])) { 107 cgit_compose_snapshot_prefix(&filename, basename, ref);
108 ref = fmtalloc("%s-%s", basename, ref); 108 prefixlen = filename.len;
109 free_ref = 1;
110 }
111 }
112
113 for (f = cgit_snapshot_formats; f->suffix; f++) { 109 for (f = cgit_snapshot_formats; f->suffix; f++) {
114 if (!(repo->snapshots & f->bit)) 110 if (!(repo->snapshots & f->bit))
115 continue; 111 continue;
116 strbuf_reset(&filename); 112 strbuf_setlen(&filename, prefixlen);
117 strbuf_addf(&filename, "%s%s", ref, f->suffix); 113 strbuf_addstr(&filename, f->suffix);
118 cgit_snapshot_link(filename.buf, NULL, NULL, NULL, NULL, filename.buf); 114 cgit_snapshot_link(filename.buf, NULL, NULL, NULL, NULL, filename.buf);
119 html("&nbsp;&nbsp;"); 115 html("&nbsp;&nbsp;");
120 } 116 }
121 117
122 if (free_ref)
123 free((char *)ref);
124 strbuf_release(&filename); 118 strbuf_release(&filename);
125} 119}
126 120