diff options
Diffstat (limited to 'ui-refs.c')
| -rw-r--r-- | ui-refs.c | 24 |
1 files changed, 9 insertions, 15 deletions
| @@ -93,34 +93,28 @@ static void print_tag_header(void) | |||
| 93 | static void print_tag_downloads(const struct cgit_repo *repo, const char *ref) | 93 | static 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(" "); | 115 | html(" "); |
| 120 | } | 116 | } |
| 121 | 117 | ||
| 122 | if (free_ref) | ||
| 123 | free((char *)ref); | ||
| 124 | strbuf_release(&filename); | 118 | strbuf_release(&filename); |
| 125 | } | 119 | } |
| 126 | 120 | ||
