|
|
|
@@ -1,58 +1,59 @@ |
1 | /* ui-patch.c: generate patch view |
1 | /* ui-patch.c: generate patch view |
2 | * |
2 | * |
3 | * Copyright (C) 2007 Lars Hjemli |
3 | * Copyright (C) 2007 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 | #include "html.h" |
| |
11 | #include "ui-shared.h" |
11 | |
12 | |
12 | static void print_line(char *line, int len) |
13 | static void print_line(char *line, int len) |
13 | { |
14 | { |
14 | char c = line[len-1]; |
15 | char c = line[len-1]; |
15 | |
16 | |
16 | line[len-1] = '\0'; |
17 | line[len-1] = '\0'; |
17 | htmlf("%s\n", line); |
18 | htmlf("%s\n", line); |
18 | line[len-1] = c; |
19 | line[len-1] = c; |
19 | } |
20 | } |
20 | |
21 | |
21 | static void header(unsigned char *sha1, char *path1, int mode1, |
22 | static void header(unsigned char *sha1, char *path1, int mode1, |
22 | unsigned char *sha2, char *path2, int mode2) |
23 | unsigned char *sha2, char *path2, int mode2) |
23 | { |
24 | { |
24 | char *abbrev1, *abbrev2; |
25 | char *abbrev1, *abbrev2; |
25 | int subproject; |
26 | int subproject; |
26 | |
27 | |
27 | subproject = (S_ISGITLINK(mode1) || S_ISGITLINK(mode2)); |
28 | subproject = (S_ISGITLINK(mode1) || S_ISGITLINK(mode2)); |
28 | htmlf("diff --git a/%s b/%s\n", path1, path2); |
29 | htmlf("diff --git a/%s b/%s\n", path1, path2); |
29 | |
30 | |
30 | if (is_null_sha1(sha1)) |
31 | if (is_null_sha1(sha1)) |
31 | path1 = "dev/null"; |
32 | path1 = "dev/null"; |
32 | if (is_null_sha1(sha2)) |
33 | if (is_null_sha1(sha2)) |
33 | path2 = "dev/null"; |
34 | path2 = "dev/null"; |
34 | |
35 | |
35 | if (mode1 == 0) |
36 | if (mode1 == 0) |
36 | htmlf("new file mode %.6o\n", mode2); |
37 | htmlf("new file mode %.6o\n", mode2); |
37 | |
38 | |
38 | if (mode2 == 0) |
39 | if (mode2 == 0) |
39 | htmlf("deleted file mode %.6o\n", mode1); |
40 | htmlf("deleted file mode %.6o\n", mode1); |
40 | |
41 | |
41 | if (!subproject) { |
42 | if (!subproject) { |
42 | abbrev1 = xstrdup(find_unique_abbrev(sha1, DEFAULT_ABBREV)); |
43 | abbrev1 = xstrdup(find_unique_abbrev(sha1, DEFAULT_ABBREV)); |
43 | abbrev2 = xstrdup(find_unique_abbrev(sha2, DEFAULT_ABBREV)); |
44 | abbrev2 = xstrdup(find_unique_abbrev(sha2, DEFAULT_ABBREV)); |
44 | htmlf("index %s..%s", abbrev1, abbrev2); |
45 | htmlf("index %s..%s", abbrev1, abbrev2); |
45 | free(abbrev1); |
46 | free(abbrev1); |
46 | free(abbrev2); |
47 | free(abbrev2); |
47 | if (mode1 != 0 && mode2 != 0) { |
48 | if (mode1 != 0 && mode2 != 0) { |
48 | htmlf(" %.6o", mode1); |
49 | htmlf(" %.6o", mode1); |
49 | if (mode2 != mode1) |
50 | if (mode2 != mode1) |
50 | htmlf("..%.6o", mode2); |
51 | htmlf("..%.6o", mode2); |
51 | } |
52 | } |
52 | htmlf("\n--- a/%s\n", path1); |
53 | htmlf("\n--- a/%s\n", path1); |
53 | htmlf("+++ b/%s\n", path2); |
54 | htmlf("+++ b/%s\n", path2); |
54 | } |
55 | } |
55 | } |
56 | } |
56 | |
57 | |
57 | static void filepair_cb(struct diff_filepair *pair) |
58 | static void filepair_cb(struct diff_filepair *pair) |
58 | { |
59 | { |
|