summaryrefslogtreecommitdiffabout
path: root/ui-commit.c
Unidiff
Diffstat (limited to 'ui-commit.c') (more/less context) (show whitespace changes)
-rw-r--r--ui-commit.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/ui-commit.c b/ui-commit.c
index 25721ca..ed25824 100644
--- a/ui-commit.c
+++ b/ui-commit.c
@@ -1,33 +1,34 @@
1/* ui-commit.c: generate commit view 1/* ui-commit.c: generate commit view
2 * 2 *
3 * Copyright (C) 2006 Lars Hjemli 3 * Copyright (C) 2006 Lars Hjemli
4 * 4 *
5 * Licensed under GNU General Public License v2 5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text) 6 * (see COPYING for full license text)
7 */ 7 */
8 8
9#include "cgit.h" 9#include "cgit.h"
10#include "html.h"
10 11
11static int files, slots; 12static int files, slots;
12static int total_adds, total_rems, max_changes; 13static int total_adds, total_rems, max_changes;
13static int lines_added, lines_removed; 14static int lines_added, lines_removed;
14static char *curr_rev; 15static char *curr_rev;
15 16
16static struct fileinfo { 17static struct fileinfo {
17 char status; 18 char status;
18 unsigned char old_sha1[20]; 19 unsigned char old_sha1[20];
19 unsigned char new_sha1[20]; 20 unsigned char new_sha1[20];
20 unsigned short old_mode; 21 unsigned short old_mode;
21 unsigned short new_mode; 22 unsigned short new_mode;
22 char *old_path; 23 char *old_path;
23 char *new_path; 24 char *new_path;
24 unsigned int added; 25 unsigned int added;
25 unsigned int removed; 26 unsigned int removed;
26} *items; 27} *items;
27 28
28 29
29void print_fileinfo(struct fileinfo *info) 30void print_fileinfo(struct fileinfo *info)
30{ 31{
31 char *class; 32 char *class;
32 33
33 switch (info->status) { 34 switch (info->status) {
@@ -41,58 +42,58 @@ void print_fileinfo(struct fileinfo *info)
41 class = "del"; 42 class = "del";
42 break; 43 break;
43 case DIFF_STATUS_MODIFIED: 44 case DIFF_STATUS_MODIFIED:
44 class = "upd"; 45 class = "upd";
45 break; 46 break;
46 case DIFF_STATUS_RENAMED: 47 case DIFF_STATUS_RENAMED:
47 class = "mov"; 48 class = "mov";
48 break; 49 break;
49 case DIFF_STATUS_TYPE_CHANGED: 50 case DIFF_STATUS_TYPE_CHANGED:
50 class = "typ"; 51 class = "typ";
51 break; 52 break;
52 case DIFF_STATUS_UNKNOWN: 53 case DIFF_STATUS_UNKNOWN:
53 class = "unk"; 54 class = "unk";
54 break; 55 break;
55 case DIFF_STATUS_UNMERGED: 56 case DIFF_STATUS_UNMERGED:
56 class = "stg"; 57 class = "stg";
57 break; 58 break;
58 default: 59 default:
59 die("bug: unhandled diff status %c", info->status); 60 die("bug: unhandled diff status %c", info->status);
60 } 61 }
61 62
62 html("<tr>"); 63 html("<tr>");
63 htmlf("<td class='mode'>"); 64 htmlf("<td class='mode'>");
64 if (is_null_sha1(info->new_sha1)) { 65 if (is_null_sha1(info->new_sha1)) {
65 html_filemode(info->old_mode); 66 cgit_print_filemode(info->old_mode);
66 } else { 67 } else {
67 html_filemode(info->new_mode); 68 cgit_print_filemode(info->new_mode);
68 } 69 }
69 70
70 if (info->old_mode != info->new_mode && 71 if (info->old_mode != info->new_mode &&
71 !is_null_sha1(info->old_sha1) && 72 !is_null_sha1(info->old_sha1) &&
72 !is_null_sha1(info->new_sha1)) { 73 !is_null_sha1(info->new_sha1)) {
73 html("<span class='modechange'>["); 74 html("<span class='modechange'>[");
74 html_filemode(info->old_mode); 75 cgit_print_filemode(info->old_mode);
75 html("]</span>"); 76 html("]</span>");
76 } 77 }
77 htmlf("</td><td class='%s'>", class); 78 htmlf("</td><td class='%s'>", class);
78 cgit_diff_link(info->new_path, NULL, NULL, ctx.qry.head, curr_rev, 79 cgit_diff_link(info->new_path, NULL, NULL, ctx.qry.head, curr_rev,
79 NULL, info->new_path); 80 NULL, info->new_path);
80 if (info->status == DIFF_STATUS_COPIED || info->status == DIFF_STATUS_RENAMED) 81 if (info->status == DIFF_STATUS_COPIED || info->status == DIFF_STATUS_RENAMED)
81 htmlf(" (%s from %s)", 82 htmlf(" (%s from %s)",
82 info->status == DIFF_STATUS_COPIED ? "copied" : "renamed", 83 info->status == DIFF_STATUS_COPIED ? "copied" : "renamed",
83 info->old_path); 84 info->old_path);
84 html("</td><td class='right'>"); 85 html("</td><td class='right'>");
85 htmlf("%d", info->added + info->removed); 86 htmlf("%d", info->added + info->removed);
86 html("</td><td class='graph'>"); 87 html("</td><td class='graph'>");
87 htmlf("<table summary='file diffstat' width='%d%%'><tr>", (max_changes > 100 ? 100 : max_changes)); 88 htmlf("<table summary='file diffstat' width='%d%%'><tr>", (max_changes > 100 ? 100 : max_changes));
88 htmlf("<td class='add' style='width: %.1f%%;'/>", 89 htmlf("<td class='add' style='width: %.1f%%;'/>",
89 info->added * 100.0 / max_changes); 90 info->added * 100.0 / max_changes);
90 htmlf("<td class='rem' style='width: %.1f%%;'/>", 91 htmlf("<td class='rem' style='width: %.1f%%;'/>",
91 info->removed * 100.0 / max_changes); 92 info->removed * 100.0 / max_changes);
92 htmlf("<td class='none' style='width: %.1f%%;'/>", 93 htmlf("<td class='none' style='width: %.1f%%;'/>",
93 (max_changes - info->removed - info->added) * 100.0 / max_changes); 94 (max_changes - info->removed - info->added) * 100.0 / max_changes);
94 html("</tr></table></td></tr>\n"); 95 html("</tr></table></td></tr>\n");
95} 96}
96 97
97void cgit_count_diff_lines(char *line, int len) 98void cgit_count_diff_lines(char *line, int len)
98{ 99{