]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-shared.c
snapshot: support archive signatures
[ps-cgit] / ui-shared.c
index 8ae81d265a7a5927a91b3796a988a70510a7d5c5..8a786e0a3e27e63d1e6f19c28b85e0fc1c326673 100644 (file)
@@ -1111,13 +1111,20 @@ void cgit_compose_snapshot_prefix(struct strbuf *filename, const char *base,
        strbuf_addf(filename, "%s-%s", base, ref);
 }
 
-void cgit_print_snapshot_links(const struct cgit_repo *repo, const char *ref)
+void cgit_print_snapshot_links(const struct cgit_repo *repo, const char *ref,
+                              const char *separator)
 {
        const struct cgit_snapshot_format* f;
        struct strbuf filename = STRBUF_INIT;
+       const char *basename;
        size_t prefixlen;
 
-       cgit_compose_snapshot_prefix(&filename, cgit_snapshot_prefix(repo), ref);
+       basename = cgit_snapshot_prefix(repo);
+       if (starts_with(ref, basename))
+               strbuf_addstr(&filename, ref);
+       else
+               cgit_compose_snapshot_prefix(&filename, basename, ref);
+
        prefixlen = filename.len;
        for (f = cgit_snapshot_formats; f->suffix; f++) {
                if (!(repo->snapshots & f->bit))
@@ -1126,7 +1133,14 @@ void cgit_print_snapshot_links(const struct cgit_repo *repo, const char *ref)
                strbuf_addstr(&filename, f->suffix);
                cgit_snapshot_link(filename.buf, NULL, NULL, NULL, NULL,
                                   filename.buf);
-               html("<br/>");
+               if (cgit_snapshot_get_sig(ref, f)) {
+                       strbuf_addstr(&filename, ".asc");
+                       html(" (");
+                       cgit_snapshot_link("sig", NULL, NULL, NULL, NULL,
+                                          filename.buf);
+                       html(")");
+               }
+               html(separator);
        }
        strbuf_release(&filename);
 }