]>
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)
13 void count_lines(char *line
, int size
)
15 if (size
>0 && (line
[0] == '+' || line
[0] == '-'))
19 void inspect_files(struct diff_filepair
*pair
)
22 if (cgit_repo
->enable_log_linecount
)
23 cgit_diff_files(pair
->one
->sha1
, pair
->two
->sha1
, count_lines
);
26 void print_commit(struct commit
*commit
)
28 struct commitinfo
*info
;
30 info
= cgit_parse_commit(commit
);
32 cgit_print_age(commit
->date
, TM_WEEK
* 2, FMT_SHORTDATE
);
34 cgit_commit_link(info
->subject
, NULL
, NULL
, cgit_query_head
,
35 sha1_to_hex(commit
->object
.sha1
));
36 if (cgit_repo
->enable_log_filecount
) {
39 cgit_diff_commit(commit
, inspect_files
);
40 html("</td><td class='right'>");
42 if (cgit_repo
->enable_log_linecount
) {
43 html("</td><td class='right'>");
48 html_txt(info
->author
);
50 cgit_free_commitinfo(info
);
54 void cgit_print_log(const char *tip
, int ofs
, int cnt
, char *grep
, char *path
, int pager
)
57 struct commit
*commit
;
58 const char *argv
[] = {NULL
, tip
, NULL
, NULL
, NULL
};
63 argv
[1] = cgit_query_head
;
66 argv
[argc
++] = fmt("--grep=%s", grep
);
71 init_revisions(&rev
, NULL
);
72 rev
.abbrev
= DEFAULT_ABBREV
;
73 rev
.commit_format
= CMIT_FMT_DEFAULT
;
74 rev
.verbose_header
= 1;
75 rev
.show_root_diff
= 0;
76 setup_revisions(argc
, argv
, &rev
, NULL
);
77 if (rev
.grep_filter
) {
78 rev
.grep_filter
->regflags
|= REG_ICASE
;
79 compile_grep_patterns(rev
.grep_filter
);
81 prepare_revision_walk(&rev
);
83 html("<table class='list nowrap'>");
84 html("<tr class='nohover'><th class='left'>Age</th>"
85 "<th class='left'>Message</th>");
87 if (cgit_repo
->enable_log_filecount
) {
88 html("<th class='left'>Files</th>");
89 if (cgit_repo
->enable_log_linecount
)
90 html("<th class='left'>Lines</th>");
92 html("<th class='left'>Author</th></tr>\n");
97 for (i
= 0; i
< ofs
&& (commit
= get_revision(&rev
)) != NULL
; i
++) {
99 commit
->buffer
= NULL
;
100 free_commit_list(commit
->parents
);
101 commit
->parents
= NULL
;
104 for (i
= 0; i
< cnt
&& (commit
= get_revision(&rev
)) != NULL
; i
++) {
105 print_commit(commit
);
106 free(commit
->buffer
);
107 commit
->buffer
= NULL
;
108 free_commit_list(commit
->parents
);
109 commit
->parents
= NULL
;
114 html("<div class='pager'>");
116 cgit_log_link("[prev]", NULL
, NULL
, cgit_query_head
,
117 cgit_query_sha1
, cgit_query_path
,
121 if ((commit
= get_revision(&rev
)) != NULL
) {
122 cgit_log_link("[next]", NULL
, NULL
, cgit_query_head
,
123 cgit_query_sha1
, cgit_query_path
,