]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-log.c
ui-shared: currenturl should take into account leading slash
[ps-cgit] / ui-log.c
index 3c5130a015a1e0c57983cb05abb75124f5100c27..32b4c4734d0cc26b457fc45c26d0fd8f31089e62 100644 (file)
--- a/ui-log.c
+++ b/ui-log.c
@@ -1,6 +1,6 @@
 /* ui-log.c: functions for log output
  *
- * Copyright (C) 2006 Lars Hjemli
+ * Copyright (C) 2006-2014 cgit Development Team <cgit@lists.zx2c4.com>
  *
  * Licensed under GNU General Public License v2
  *   (see COPYING for full license text)
@@ -12,7 +12,7 @@
 #include "ui-shared.h"
 #include "argv-array.h"
 
-int files, add_lines, rem_lines;
+static int files, add_lines, rem_lines;
 
 /*
  * The list of available column colors in the commit graph.
@@ -56,28 +56,28 @@ static void inspect_files(struct diff_filepair *pair)
 
 void show_commit_decorations(struct commit *commit)
 {
-       struct name_decoration *deco;
+       const struct name_decoration *deco;
        static char buf[1024];
 
        buf[sizeof(buf) - 1] = 0;
-       deco = lookup_decoration(&name_decoration, &commit->object);
+       deco = get_name_decoration(&commit->object);
        html("<span class='decoration'>");
        while (deco) {
-               if (!prefixcmp(deco->name, "refs/heads/")) {
+               if (starts_with(deco->name, "refs/heads/")) {
                        strncpy(buf, deco->name + 11, sizeof(buf) - 1);
                        cgit_log_link(buf, NULL, "branch-deco", buf, NULL,
                                      ctx.qry.vpath, 0, NULL, NULL,
                                      ctx.qry.showmsg);
                }
-               else if (!prefixcmp(deco->name, "tag: refs/tags/")) {
+               else if (starts_with(deco->name, "tag: refs/tags/")) {
                        strncpy(buf, deco->name + 15, sizeof(buf) - 1);
-                       cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf);
+                       cgit_tag_link(buf, NULL, "tag-deco", buf);
                }
-               else if (!prefixcmp(deco->name, "refs/tags/")) {
+               else if (starts_with(deco->name, "refs/tags/")) {
                        strncpy(buf, deco->name + 10, sizeof(buf) - 1);
-                       cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf);
+                       cgit_tag_link(buf, NULL, "tag-deco", buf);
                }
-               else if (!prefixcmp(deco->name, "refs/remotes/")) {
+               else if (starts_with(deco->name, "refs/remotes/")) {
                        if (!ctx.repo->enable_remote_branches)
                                goto next;
                        strncpy(buf, deco->name + 13, sizeof(buf) - 1);
@@ -90,7 +90,7 @@ void show_commit_decorations(struct commit *commit)
                        strncpy(buf, deco->name, sizeof(buf) - 1);
                        cgit_commit_link(buf, NULL, "deco", ctx.qry.head,
                                         sha1_to_hex(commit->object.sha1),
-                                        ctx.qry.vpath, 0);
+                                        ctx.qry.vpath);
                }
 next:
                deco = deco->next;
@@ -165,10 +165,12 @@ static void print_commit(struct commit *commit, struct rev_info *revs)
                }
        }
        cgit_commit_link(info->subject, NULL, NULL, ctx.qry.head,
-                        sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0);
+                        sha1_to_hex(commit->object.sha1), ctx.qry.vpath);
        show_commit_decorations(commit);
        html("</td><td>");
+       cgit_open_filter(ctx.repo->email_filter, info->author_email, "log");
        html_txt(info->author);
+       cgit_close_filter(ctx.repo->email_filter);
 
        if (revs->graph) {
                html("</td><td>");
@@ -291,7 +293,6 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
        struct argv_array rev_argv = ARGV_ARRAY_INIT;
        int i, columns = commit_graph ? 4 : 3;
        int must_free_tip = 0;
-       struct strbuf argbuf = STRBUF_INIT;
 
        /* rev_argv.argv[0] will be ignored by setup_revisions */
        argv_array_push(&rev_argv, "log_rev_setup");
@@ -305,10 +306,8 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
                pattern = xstrdup(pattern);
                if (!strcmp(grep, "grep") || !strcmp(grep, "author") ||
                    !strcmp(grep, "committer")) {
-                       strbuf_addf(&argbuf, "--%s=%s", grep, pattern);
-                       argv_array_push(&rev_argv, argbuf.buf);
-               }
-               if (!strcmp(grep, "range")) {
+                       argv_array_pushf(&rev_argv, "--%s=%s", grep, pattern);
+               } else if (!strcmp(grep, "range")) {
                        char *arg;
                        /* Split the pattern at whitespace and add each token
                         * as a revision expression. Do not accept other
@@ -327,33 +326,27 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
                }
        }
        if (commit_graph) {
-               static const char *graph_arg = "--graph";
-               static const char *color_arg = "--color";
-               argv_array_push(&rev_argv, graph_arg);
-               argv_array_push(&rev_argv, color_arg);
+               argv_array_push(&rev_argv, "--graph");
+               argv_array_push(&rev_argv, "--color");
                graph_set_column_colors(column_colors_html,
                                        COLUMN_COLORS_HTML_MAX);
        }
 
-       if (commit_sort == 1) {
-               static const char *date_order_arg = "--date-order";
-               argv_array_push(&rev_argv, date_order_arg);
-       } else if (commit_sort == 2) {
-               static const char *topo_order_arg = "--topo-order";
-               argv_array_push(&rev_argv, topo_order_arg);
-       }
+       if (commit_sort == 1)
+               argv_array_push(&rev_argv, "--date-order");
+       else if (commit_sort == 2)
+               argv_array_push(&rev_argv, "--topo-order");
 
-       if (path) {
-               static const char *double_dash_arg = "--";
-               argv_array_push(&rev_argv, double_dash_arg);
+       argv_array_push(&rev_argv, "--");
+       if (path)
                argv_array_push(&rev_argv, path);
-       }
 
        init_revisions(&rev, NULL);
        rev.abbrev = DEFAULT_ABBREV;
        rev.commit_format = CMIT_FMT_DEFAULT;
        rev.verbose_header = 1;
        rev.show_root_diff = 0;
+       rev.ignore_missing = 1;
        setup_revisions(rev_argv.argc, rev_argv.argv, &rev, NULL);
        load_ref_decorations(DECORATE_FULL_REFS);
        rev.show_decorations = 1;
@@ -395,16 +388,14 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
                ofs = 0;
 
        for (i = 0; i < ofs && (commit = get_revision(&rev)) != NULL; i++) {
-               free(commit->buffer);
-               commit->buffer = NULL;
+               free_commit_buffer(commit);
                free_commit_list(commit->parents);
                commit->parents = NULL;
        }
 
        for (i = 0; i < cnt && (commit = get_revision(&rev)) != NULL; i++) {
                print_commit(commit, &rev);
-               free(commit->buffer);
-               commit->buffer = NULL;
+               free_commit_buffer(commit);
                free_commit_list(commit->parents);
                commit->parents = NULL;
        }
@@ -437,5 +428,4 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
        /* If we allocated tip then it is safe to cast away const. */
        if (must_free_tip)
                free((char*) tip);
-       strbuf_release(&argbuf);
 }