]> git.cameronkatri.com Git - cgit.git/blobdiff - ui-log.c
filter: add page source to email filter
[cgit.git] / ui-log.c
index 2aa12c34e967df47a07e9c609b04057ef4829bdb..499534c1a8b359833576392e582aba0d4171986e 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)
@@ -10,7 +10,7 @@
 #include "ui-log.h"
 #include "html.h"
 #include "ui-shared.h"
-#include "vector.h"
+#include "argv-array.h"
 
 int files, add_lines, rem_lines;
 
@@ -61,6 +61,7 @@ void show_commit_decorations(struct commit *commit)
 
        buf[sizeof(buf) - 1] = 0;
        deco = lookup_decoration(&name_decoration, &commit->object);
+       html("<span class='decoration'>");
        while (deco) {
                if (!prefixcmp(deco->name, "refs/heads/")) {
                        strncpy(buf, deco->name + 11, sizeof(buf) - 1);
@@ -94,6 +95,7 @@ void show_commit_decorations(struct commit *commit)
 next:
                deco = deco->next;
        }
+       html("</span>");
 }
 
 static void print_commit(struct commit *commit, struct rev_info *revs)
@@ -166,7 +168,9 @@ static void print_commit(struct commit *commit, struct rev_info *revs)
                         sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0);
        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>");
@@ -286,77 +290,64 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
 {
        struct rev_info rev;
        struct commit *commit;
-       struct vector vec = VECTOR_INIT(char *);
+       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;
 
-       /* First argv is NULL */
-       vector_push(&vec, NULL, 0);
+       /* rev_argv.argv[0] will be ignored by setup_revisions */
+       argv_array_push(&rev_argv, "log_rev_setup");
 
        if (!tip)
                tip = ctx.qry.head;
        tip = disambiguate_ref(tip, &must_free_tip);
-       vector_push(&vec, &tip, 0);
+       argv_array_push(&rev_argv, tip);
 
        if (grep && pattern && *pattern) {
                pattern = xstrdup(pattern);
                if (!strcmp(grep, "grep") || !strcmp(grep, "author") ||
                    !strcmp(grep, "committer")) {
-                       strbuf_addf(&argbuf, "--%s=%s", grep, pattern);
-                       vector_push(&vec, &argbuf.buf, 0);
-               }
-               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
                         * rev-list options. Also, replace the previously
                         * pushed tip (it's no longer relevant).
                         */
-                       vec.count--;
+                       argv_array_pop(&rev_argv);
                        while ((arg = next_token(&pattern))) {
                                if (*arg == '-') {
                                        fprintf(stderr, "Bad range expr: %s\n",
                                                arg);
                                        break;
                                }
-                               vector_push(&vec, &arg, 0);
+                               argv_array_push(&rev_argv, arg);
                        }
                }
        }
        if (commit_graph) {
-               static const char *graph_arg = "--graph";
-               static const char *color_arg = "--color";
-               vector_push(&vec, &graph_arg, 0);
-               vector_push(&vec, &color_arg, 0);
+               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";
-               vector_push(&vec, &date_order_arg, 0);
-       } else if (commit_sort == 2) {
-               static const char *topo_order_arg = "--topo-order";
-               vector_push(&vec, &topo_order_arg, 0);
-       }
+       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 = "--";
-               vector_push(&vec, &double_dash_arg, 0);
-               vector_push(&vec, &path, 0);
+               argv_array_push(&rev_argv, "--");
+               argv_array_push(&rev_argv, path);
        }
 
-       /* Make sure the vector is NULL-terminated */
-       vector_push(&vec, NULL, 0);
-       vec.count--;
-
        init_revisions(&rev, NULL);
        rev.abbrev = DEFAULT_ABBREV;
        rev.commit_format = CMIT_FMT_DEFAULT;
        rev.verbose_header = 1;
        rev.show_root_diff = 0;
-       setup_revisions(vec.count, vec.data, &rev, NULL);
+       setup_revisions(rev_argv.argc, rev_argv.argv, &rev, NULL);
        load_ref_decorations(DECORATE_FULL_REFS);
        rev.show_decorations = 1;
        rev.grep_filter.regflags |= REG_ICASE;
@@ -439,5 +430,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);
 }