]>
git.cameronkatri.com Git - cgit.git/blob - ui-log.c
1 /* ui-log.c: functions for log output
3 * Copyright (C) 2006 Lars Hjemli
5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text)
12 int files
, add_lines
, rem_lines
;
14 void count_lines(char *line
, int size
)
22 else if (line
[0] == '-')
26 void inspect_files(struct diff_filepair
*pair
)
29 if (ctx
.repo
->enable_log_linecount
)
30 cgit_diff_files(pair
->one
->sha1
, pair
->two
->sha1
, count_lines
);
33 void print_commit(struct commit
*commit
)
35 struct commitinfo
*info
;
37 info
= cgit_parse_commit(commit
);
39 cgit_print_age(commit
->date
, TM_WEEK
* 2, FMT_SHORTDATE
);
41 cgit_commit_link(info
->subject
, NULL
, NULL
, ctx
.qry
.head
,
42 sha1_to_hex(commit
->object
.sha1
));
43 if (ctx
.repo
->enable_log_filecount
) {
47 cgit_diff_commit(commit
, inspect_files
);
48 html("</td><td class='right'>");
50 if (ctx
.repo
->enable_log_linecount
) {
51 html("</td><td class='right'>");
52 htmlf("-%d/+%d", rem_lines
, add_lines
);
56 html_txt(info
->author
);
58 cgit_free_commitinfo(info
);
62 void cgit_print_log(const char *tip
, int ofs
, int cnt
, char *grep
, char *pattern
, char *path
, int pager
)
65 struct commit
*commit
;
66 const char *argv
[] = {NULL
, tip
, NULL
, NULL
, NULL
};
71 argv
[1] = ctx
.qry
.head
;
73 if (grep
&& pattern
&& (!strcmp(grep
, "grep") ||
74 !strcmp(grep
, "author") ||
75 !strcmp(grep
, "committer")))
76 argv
[argc
++] = fmt("--%s=%s", grep
, pattern
);
82 init_revisions(&rev
, NULL
);
83 rev
.abbrev
= DEFAULT_ABBREV
;
84 rev
.commit_format
= CMIT_FMT_DEFAULT
;
85 rev
.verbose_header
= 1;
86 rev
.show_root_diff
= 0;
87 setup_revisions(argc
, argv
, &rev
, NULL
);
88 if (rev
.grep_filter
) {
89 rev
.grep_filter
->regflags
|= REG_ICASE
;
90 compile_grep_patterns(rev
.grep_filter
);
92 prepare_revision_walk(&rev
);
94 html("<table summary='log' class='list nowrap'>");
95 html("<tr class='nohover'><th class='left'>Age</th>"
96 "<th class='left'>Message</th>");
98 if (ctx
.repo
->enable_log_filecount
) {
99 html("<th class='right'>Files</th>");
100 if (ctx
.repo
->enable_log_linecount
)
101 html("<th class='right'>Lines</th>");
103 html("<th class='left'>Author</th></tr>\n");
108 for (i
= 0; i
< ofs
&& (commit
= get_revision(&rev
)) != NULL
; i
++) {
109 free(commit
->buffer
);
110 commit
->buffer
= NULL
;
111 free_commit_list(commit
->parents
);
112 commit
->parents
= NULL
;
115 for (i
= 0; i
< cnt
&& (commit
= get_revision(&rev
)) != NULL
; i
++) {
116 print_commit(commit
);
117 free(commit
->buffer
);
118 commit
->buffer
= NULL
;
119 free_commit_list(commit
->parents
);
120 commit
->parents
= NULL
;
125 html("<div class='pager'>");
127 cgit_log_link("[prev]", NULL
, NULL
, ctx
.qry
.head
,
128 ctx
.qry
.sha1
, ctx
.qry
.path
,
129 ofs
- cnt
, ctx
.qry
.grep
,
133 if ((commit
= get_revision(&rev
)) != NULL
) {
134 cgit_log_link("[next]", NULL
, NULL
, ctx
.qry
.head
,
135 ctx
.qry
.sha1
, ctx
.qry
.path
,
136 ofs
+ cnt
, ctx
.qry
.grep
,