|
|
|
@ -712,45 +712,6 @@ static int print_branch_option(const char *refname, const unsigned char *sha1, |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int print_archive_ref(const char *refname, const unsigned char *sha1, |
|
|
|
|
int flags, void *cb_data) |
|
|
|
|
{ |
|
|
|
|
struct tag *tag; |
|
|
|
|
struct taginfo *info; |
|
|
|
|
struct object *obj; |
|
|
|
|
char buf[256], *url; |
|
|
|
|
unsigned char fileid[20]; |
|
|
|
|
int *header = (int *)cb_data; |
|
|
|
|
|
|
|
|
|
if (prefixcmp(refname, "refs/archives")) |
|
|
|
|
return 0; |
|
|
|
|
strncpy(buf, refname + 14, sizeof(buf)); |
|
|
|
|
obj = parse_object(sha1); |
|
|
|
|
if (!obj) |
|
|
|
|
return 1; |
|
|
|
|
if (obj->type == OBJ_TAG) { |
|
|
|
|
tag = lookup_tag(sha1); |
|
|
|
|
if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) |
|
|
|
|
return 0; |
|
|
|
|
hashcpy(fileid, tag->tagged->sha1); |
|
|
|
|
} else if (obj->type != OBJ_BLOB) { |
|
|
|
|
return 0; |
|
|
|
|
} else { |
|
|
|
|
hashcpy(fileid, sha1); |
|
|
|
|
} |
|
|
|
|
if (!*header) { |
|
|
|
|
html("<h1>download</h1>\n"); |
|
|
|
|
*header = 1; |
|
|
|
|
} |
|
|
|
|
url = cgit_pageurl(ctx.qry.repo, "blob", |
|
|
|
|
fmt("id=%s&path=%s", sha1_to_hex(fileid), |
|
|
|
|
buf)); |
|
|
|
|
html_link_open(url, NULL, "menu"); |
|
|
|
|
html_txt(strlpart(buf, 20)); |
|
|
|
|
html_link_close(); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void cgit_add_hidden_formfields(int incl_head, int incl_search, |
|
|
|
|
const char *page) |
|
|
|
|
{ |
|
|
|
|