]> gitweb.ps.run Git - ps-cgit/commitdiff
Merge branch 'stable'
authorLars Hjemli <hjemli@gmail.com>
Sat, 7 Nov 2009 17:16:50 +0000 (18:16 +0100)
committerLars Hjemli <hjemli@gmail.com>
Sat, 7 Nov 2009 17:16:50 +0000 (18:16 +0100)
Makefile
cgit.c
ui-shared.c
ui-tag.c

index 60d8c58e680a104fcaa2872071bf0b26669baa7d..4e101d368e193919cc9e9ac52f5f5c21bd10f6ad 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/cgit.c b/cgit.c
index bd377881f669d44634767489dfb276dce3308426..a17f40d5abfb14c434dbae8811ed839b89bc555e 100644 (file)
--- a/cgit.c
+++ b/cgit.c
@@ -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")) {
index 4049a2b6811d42d44f5eacfaefbda05244063e1b..3a9e67b16ebeee56c05c82d08d766b33e748cc17 100644 (file)
@@ -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/>");
        }
index c2d72aff613d6536cce975984ce55f718060d4ca..39e4cb82c5f66c6524962fe4be794cd5bab71782 100644 (file)
--- a/ui-tag.c
+++ b/ui-tag.c
@@ -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;