/* 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)
#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.
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);
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;
}
}
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>");
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");
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
}
}
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;
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;
}
/* If we allocated tip then it is safe to cast away const. */
if (must_free_tip)
free((char*) tip);
- strbuf_release(&argbuf);
}