diff options
| -rw-r--r-- | Makefile | 15 | ||||
| -rw-r--r-- | cgit.c | 2 | ||||
| -rw-r--r-- | ui-shared.c | 9 | ||||
| -rw-r--r-- | ui-tag.c | 24 | 
4 files changed, 39 insertions, 11 deletions
| @@ -11,6 +11,9 @@ INSTALL = install  # Define NO_STRCASESTR if you don't have strcasestr.  # +# Define NO_OPENSSL to disable linking with OpenSSL and use bundled SHA1 +# implementation (slower). +#  # Define NEEDS_LIBICONV if linking with libc is not enough (eg. Darwin).  # @@ -68,7 +71,7 @@ endif  	$(QUIET_CC)$(CC) -o $*.o -c $(CFLAGS) $< -EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto +EXTLIBS = git/libgit.a git/xdiff/lib.a -lz  OBJECTS =  OBJECTS += cache.o  OBJECTS += cgit.o @@ -123,6 +126,12 @@ endif  ifdef NO_STRCASESTR  	CFLAGS += -DNO_STRCASESTR  endif +ifdef NO_OPENSSL +	CFLAGS += -DNO_OPENSSL +	GIT_OPTIONS += NO_OPENSSL=1 +else +	EXTLIBS += -lcrypto +endif  cgit: $(OBJECTS) libgit  	$(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o cgit $(OBJECTS) $(EXTLIBS) @@ -132,8 +141,8 @@ cgit.o: VERSION  -include $(OBJECTS:.o=.d)  libgit: -	$(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 libgit.a -	$(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 xdiff/lib.a +	$(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) libgit.a +	$(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) xdiff/lib.a  test: all  	$(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all @@ -209,6 +209,8 @@ static void querystring_cb(const char *name, const char *value)  	} else if (!strcmp(name, "p")) {  		ctx.qry.page = xstrdup(value);  	} else if (!strcmp(name, "url")) { +		if (*value == '/') +			value++;  		ctx.qry.url = xstrdup(value);  		cgit_parse_url(value);  	} else if (!strcmp(name, "qt")) { diff --git a/ui-shared.c b/ui-shared.c index 4049a2b..3a9e67b 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -760,13 +760,18 @@ void cgit_print_snapshot_links(const char *repo, const char *head,  			       const char *hex, int snapshots)  {  	const struct cgit_snapshot_format* f; +	char *prefix;      	char *filename; +	unsigned char sha1[20]; +	if (get_sha1(fmt("refs/tags/%s", hex), sha1) == 0 && +	    (hex[0] == 'v' || hex[0] == 'V') && isdigit(hex[1])) +		hex++; +	prefix = xstrdup(fmt("%s-%s", cgit_repobasename(repo), hex));  	for (f = cgit_snapshot_formats; f->suffix; f++) {  		if (!(snapshots & f->bit))  			continue; -		filename = fmt("%s-%s%s", cgit_repobasename(repo), hex, -			       f->suffix); +		filename = fmt("%s%s", prefix, f->suffix);  		cgit_snapshot_link(filename, NULL, NULL, NULL, NULL, filename);  		html("<br/>");  	} @@ -30,6 +30,14 @@ static void print_tag_content(char *buf)  	}  } +void print_download_links(char *revname) +{ +	html("<tr><th>download</th><td class='sha1'>"); +	cgit_print_snapshot_links(ctx.qry.repo, ctx.qry.head, +				  revname, ctx.repo->snapshots); +	html("</td></tr>"); +} +  void cgit_print_tag(char *revname)  {  	unsigned char sha1[20]; @@ -56,16 +64,16 @@ void cgit_print_tag(char *revname)  			return;  		}  		html("<table class='commit-info'>\n"); -		htmlf("<tr><td>Tag name</td><td>"); +		htmlf("<tr><td>tag name</td><td>");  		html_txt(revname);  		htmlf(" (%s)</td></tr>\n", sha1_to_hex(sha1));  		if (info->tagger_date > 0) { -			html("<tr><td>Tag date</td><td>"); +			html("<tr><td>tag date</td><td>");  			cgit_print_date(info->tagger_date, FMT_LONGDATE, ctx.cfg.local_time);  			html("</td></tr>\n");  		}  		if (info->tagger) { -			html("<tr><td>Tagged by</td><td>"); +			html("<tr><td>tagged by</td><td>");  			html_txt(info->tagger);  			if (info->tagger_email && !ctx.cfg.noplainemail) {  				html(" "); @@ -73,19 +81,23 @@ void cgit_print_tag(char *revname)  			}  			html("</td></tr>\n");  		} -		html("<tr><td>Tagged object</td><td>"); +		html("<tr><td>tagged object</td><td class='sha1'>");  		cgit_object_link(tag->tagged);  		html("</td></tr>\n"); +		if (ctx.repo->snapshots) +			print_download_links(revname);  		html("</table>\n");  		print_tag_content(info->msg);  	} else {  		html("<table class='commit-info'>\n"); -		htmlf("<tr><td>Tag name</td><td>"); +		htmlf("<tr><td>tag name</td><td>");  		html_txt(revname);  		html("</td></tr>\n"); -		html("<tr><td>Tagged object</td><td>"); +		html("<tr><td>Tagged object</td><td class='sha1'>");  		cgit_object_link(obj);  		html("</td></tr>\n"); +		if (ctx.repo->snapshots) +			print_download_links(revname);  		html("</table>\n");          }  	return; | 
