-rw-r--r-- | cgit.c | 1 | ||||
-rw-r--r-- | cgit.h | 15 | ||||
-rw-r--r-- | html.c | 31 | ||||
-rw-r--r-- | html.h | 18 | ||||
-rw-r--r-- | shared.c | 2 | ||||
-rw-r--r-- | ui-blob.c | 9 | ||||
-rw-r--r-- | ui-commit.c | 7 | ||||
-rw-r--r-- | ui-diff.c | 2 | ||||
-rw-r--r-- | ui-log.c | 1 | ||||
-rw-r--r-- | ui-patch.c | 1 | ||||
-rw-r--r-- | ui-refs.c | 4 | ||||
-rw-r--r-- | ui-repolist.c | 3 | ||||
-rw-r--r-- | ui-shared.c | 16 | ||||
-rw-r--r-- | ui-snapshot.c | 1 | ||||
-rw-r--r-- | ui-summary.c | 1 | ||||
-rw-r--r-- | ui-tag.c | 2 | ||||
-rw-r--r-- | ui-tree.c | 3 |
17 files changed, 71 insertions, 46 deletions
@@ -290,9 +290,8 @@ int main(int argc, const char **argv) | |||
290 | struct cacheitem item; | 290 | struct cacheitem item; |
291 | const char *cgit_config_env = getenv("CGIT_CONFIG"); | 291 | const char *cgit_config_env = getenv("CGIT_CONFIG"); |
292 | 292 | ||
293 | cgit_prepare_context(&ctx); | 293 | cgit_prepare_context(&ctx); |
294 | htmlfd = STDOUT_FILENO; | ||
295 | item.st.st_mtime = time(NULL); | 294 | item.st.st_mtime = time(NULL); |
296 | cgit_repolist.length = 0; | 295 | cgit_repolist.length = 0; |
297 | cgit_repolist.count = 0; | 296 | cgit_repolist.count = 0; |
298 | cgit_repolist.repos = NULL; | 297 | cgit_repolist.repos = NULL; |
@@ -185,10 +185,8 @@ extern const char *cgit_version; | |||
185 | extern struct cgit_repolist cgit_repolist; | 185 | extern struct cgit_repolist cgit_repolist; |
186 | extern struct cgit_context ctx; | 186 | extern struct cgit_context ctx; |
187 | extern int cgit_cmd; | 187 | extern int cgit_cmd; |
188 | 188 | ||
189 | extern int htmlfd; | ||
190 | |||
191 | extern void cgit_prepare_context(struct cgit_context *ctx); | 189 | extern void cgit_prepare_context(struct cgit_context *ctx); |
192 | extern int cgit_get_cmd_index(const char *cmd); | 190 | extern int cgit_get_cmd_index(const char *cmd); |
193 | extern struct cgit_repo *cgit_get_repoinfo(const char *url); | 191 | extern struct cgit_repo *cgit_get_repoinfo(const char *url); |
194 | extern void cgit_global_config_cb(const char *name, const char *value); | 192 | extern void cgit_global_config_cb(const char *name, const char *value); |
@@ -221,20 +219,8 @@ extern void cgit_diff_tree(const unsigned char *old_sha1, | |||
221 | extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); | 219 | extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); |
222 | 220 | ||
223 | extern char *fmt(const char *format,...); | 221 | extern char *fmt(const char *format,...); |
224 | 222 | ||
225 | extern void html(const char *txt); | ||
226 | extern void htmlf(const char *format,...); | ||
227 | extern void html_txt(char *txt); | ||
228 | extern void html_ntxt(int len, char *txt); | ||
229 | extern void html_attr(char *txt); | ||
230 | extern void html_hidden(char *name, char *value); | ||
231 | extern void html_option(char *value, char *text, char *selected_value); | ||
232 | extern void html_link_open(char *url, char *title, char *class); | ||
233 | extern void html_link_close(void); | ||
234 | extern void html_filemode(unsigned short mode); | ||
235 | extern int html_include(const char *filename); | ||
236 | |||
237 | extern int cgit_read_config(const char *filename, configfn fn); | 223 | extern int cgit_read_config(const char *filename, configfn fn); |
238 | extern int cgit_parse_query(char *txt, configfn fn); | 224 | extern int cgit_parse_query(char *txt, configfn fn); |
239 | extern struct commitinfo *cgit_parse_commit(struct commit *commit); | 225 | extern struct commitinfo *cgit_parse_commit(struct commit *commit); |
240 | extern struct taginfo *cgit_parse_tag(struct tag *tag); | 226 | extern struct taginfo *cgit_parse_tag(struct tag *tag); |
@@ -279,8 +265,9 @@ extern void cgit_print_docend(); | |||
279 | extern void cgit_print_pageheader(char *title, int show_search); | 265 | extern void cgit_print_pageheader(char *title, int show_search); |
280 | extern void cgit_print_snapshot_start(const char *mimetype, | 266 | extern void cgit_print_snapshot_start(const char *mimetype, |
281 | const char *filename, | 267 | const char *filename, |
282 | struct cacheitem *item); | 268 | struct cacheitem *item); |
269 | extern void cgit_print_filemode(unsigned short mode); | ||
283 | extern void cgit_print_branches(int maxcount); | 270 | extern void cgit_print_branches(int maxcount); |
284 | extern void cgit_print_tags(int maxcount); | 271 | extern void cgit_print_tags(int maxcount); |
285 | 272 | ||
286 | extern void cgit_print_repolist(struct cacheitem *item); | 273 | extern void cgit_print_repolist(struct cacheitem *item); |
@@ -5,9 +5,15 @@ | |||
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 <unistd.h> |
10 | #include <stdio.h> | ||
11 | #include <stdlib.h> | ||
12 | #include <stdarg.h> | ||
13 | #include <string.h> | ||
14 | |||
15 | int htmlfd = STDOUT_FILENO; | ||
10 | 16 | ||
11 | char *fmt(const char *format, ...) | 17 | char *fmt(const char *format, ...) |
12 | { | 18 | { |
13 | static char buf[8][1024]; | 19 | static char buf[8][1024]; |
@@ -20,10 +26,12 @@ char *fmt(const char *format, ...) | |||
20 | 26 | ||
21 | va_start(args, format); | 27 | va_start(args, format); |
22 | len = vsnprintf(buf[bufidx], sizeof(buf[bufidx]), format, args); | 28 | len = vsnprintf(buf[bufidx], sizeof(buf[bufidx]), format, args); |
23 | va_end(args); | 29 | va_end(args); |
24 | if (len>sizeof(buf[bufidx])) | 30 | if (len>sizeof(buf[bufidx])) { |
25 | die("[html.c] string truncated: %s", format); | 31 | fprintf(stderr, "[html.c] string truncated: %s\n", format); |
32 | exit(1); | ||
33 | } | ||
26 | return buf[bufidx]; | 34 | return buf[bufidx]; |
27 | } | 35 | } |
28 | 36 | ||
29 | void html(const char *txt) | 37 | void html(const char *txt) |
@@ -159,27 +167,12 @@ void html_link_close(void) | |||
159 | } | 167 | } |
160 | 168 | ||
161 | void html_fileperm(unsigned short mode) | 169 | void html_fileperm(unsigned short mode) |
162 | { | 170 | { |
163 | htmlf("%c%c%c", (mode & 4 ? 'r' : '-'), | 171 | htmlf("%c%c%c", (mode & 4 ? 'r' : '-'), |
164 | (mode & 2 ? 'w' : '-'), (mode & 1 ? 'x' : '-')); | 172 | (mode & 2 ? 'w' : '-'), (mode & 1 ? 'x' : '-')); |
165 | } | 173 | } |
166 | 174 | ||
167 | void html_filemode(unsigned short mode) | ||
168 | { | ||
169 | if (S_ISDIR(mode)) | ||
170 | html("d"); | ||
171 | else if (S_ISLNK(mode)) | ||
172 | html("l"); | ||
173 | else if (S_ISGITLINK(mode)) | ||
174 | html("m"); | ||
175 | else | ||
176 | html("-"); | ||
177 | html_fileperm(mode >> 6); | ||
178 | html_fileperm(mode >> 3); | ||
179 | html_fileperm(mode); | ||
180 | } | ||
181 | |||
182 | int html_include(const char *filename) | 175 | int html_include(const char *filename) |
183 | { | 176 | { |
184 | FILE *f; | 177 | FILE *f; |
185 | char buf[4096]; | 178 | char buf[4096]; |
@@ -0,0 +1,18 @@ | |||
1 | #ifndef HTML_H | ||
2 | #define HTML_H | ||
3 | |||
4 | extern int htmlfd; | ||
5 | |||
6 | extern void html(const char *txt); | ||
7 | extern void htmlf(const char *format,...); | ||
8 | extern void html_txt(char *txt); | ||
9 | extern void html_ntxt(int len, char *txt); | ||
10 | extern void html_attr(char *txt); | ||
11 | extern void html_hidden(char *name, char *value); | ||
12 | extern void html_option(char *value, char *text, char *selected_value); | ||
13 | extern void html_link_open(char *url, char *title, char *class); | ||
14 | extern void html_link_close(void); | ||
15 | extern void html_fileperm(unsigned short mode); | ||
16 | extern int html_include(const char *filename); | ||
17 | |||
18 | #endif /* HTML_H */ | ||
@@ -13,10 +13,8 @@ struct cgit_context ctx; | |||
13 | int cgit_cmd; | 13 | int cgit_cmd; |
14 | 14 | ||
15 | const char *cgit_version = CGIT_VERSION; | 15 | const char *cgit_version = CGIT_VERSION; |
16 | 16 | ||
17 | int htmlfd = 0; | ||
18 | |||
19 | void cgit_prepare_context(struct cgit_context *ctx) | 17 | void cgit_prepare_context(struct cgit_context *ctx) |
20 | { | 18 | { |
21 | memset(ctx, 0, sizeof(ctx)); | 19 | memset(ctx, 0, sizeof(ctx)); |
22 | ctx->cfg.agefile = "info/web/last-modified"; | 20 | ctx->cfg.agefile = "info/web/last-modified"; |
@@ -1,5 +1,14 @@ | |||
1 | /* ui-blob.c: show blob content | ||
2 | * | ||
3 | * Copyright (C) 2008 Lars Hjemli | ||
4 | * | ||
5 | * Licensed under GNU General Public License v2 | ||
6 | * (see COPYING for full license text) | ||
7 | */ | ||
8 | |||
1 | #include "cgit.h" | 9 | #include "cgit.h" |
10 | #include "html.h" | ||
2 | 11 | ||
3 | void cgit_print_blob(struct cacheitem *item, const char *hex, char *path) | 12 | void cgit_print_blob(struct cacheitem *item, const char *hex, char *path) |
4 | { | 13 | { |
5 | 14 | ||
diff --git a/ui-commit.c b/ui-commit.c index 25721ca..ed25824 100644 --- a/ui-commit.c +++ b/ui-commit.c | |||
@@ -6,8 +6,9 @@ | |||
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 | ||
11 | static int files, slots; | 12 | static int files, slots; |
12 | static int total_adds, total_rems, max_changes; | 13 | static int total_adds, total_rems, max_changes; |
13 | static int lines_added, lines_removed; | 14 | static int lines_added, lines_removed; |
@@ -61,18 +62,18 @@ void print_fileinfo(struct fileinfo *info) | |||
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, |
@@ -6,9 +6,9 @@ | |||
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 | 10 | #include "html.h" | |
11 | 11 | ||
12 | unsigned char old_rev_sha1[20]; | 12 | unsigned char old_rev_sha1[20]; |
13 | unsigned char new_rev_sha1[20]; | 13 | unsigned char new_rev_sha1[20]; |
14 | 14 | ||
@@ -6,8 +6,9 @@ | |||
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 | ||
11 | int files, add_lines, rem_lines; | 12 | int files, add_lines, rem_lines; |
12 | 13 | ||
13 | void count_lines(char *line, int size) | 14 | void count_lines(char *line, int size) |
@@ -6,8 +6,9 @@ | |||
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 | ||
11 | static void print_line(char *line, int len) | 12 | static void print_line(char *line, int len) |
12 | { | 13 | { |
13 | char c = line[len-1]; | 14 | char c = line[len-1]; |
@@ -6,11 +6,9 @@ | |||
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 | 10 | #include "html.h" | |
11 | |||
12 | |||
13 | 11 | ||
14 | void cgit_print_refs() | 12 | void cgit_print_refs() |
15 | { | 13 | { |
16 | 14 | ||
diff --git a/ui-repolist.c b/ui-repolist.c index 5fde174..cd4e41d 100644 --- a/ui-repolist.c +++ b/ui-repolist.c | |||
@@ -5,11 +5,12 @@ | |||
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" | ||
10 | #include <time.h> | 9 | #include <time.h> |
11 | 10 | ||
11 | #include "cgit.h" | ||
12 | #include "html.h" | ||
12 | 13 | ||
13 | time_t read_agefile(char *path) | 14 | time_t read_agefile(char *path) |
14 | { | 15 | { |
15 | FILE *f; | 16 | FILE *f; |
diff --git a/ui-shared.c b/ui-shared.c index cc1ab8b..2eff79d 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -6,8 +6,9 @@ | |||
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 | ||
11 | const char cgit_doctype[] = | 12 | const char cgit_doctype[] = |
12 | "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" | 13 | "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" |
13 | " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; | 14 | " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; |
@@ -566,5 +567,20 @@ void cgit_print_snapshot_start(const char *mimetype, const char *filename, | |||
566 | ttl_seconds(item->ttl))); | 567 | ttl_seconds(item->ttl))); |
567 | html("\n"); | 568 | html("\n"); |
568 | } | 569 | } |
569 | 570 | ||
571 | void cgit_print_filemode(unsigned short mode) | ||
572 | { | ||
573 | if (S_ISDIR(mode)) | ||
574 | html("d"); | ||
575 | else if (S_ISLNK(mode)) | ||
576 | html("l"); | ||
577 | else if (S_ISGITLINK(mode)) | ||
578 | html("m"); | ||
579 | else | ||
580 | html("-"); | ||
581 | html_fileperm(mode >> 6); | ||
582 | html_fileperm(mode >> 3); | ||
583 | html_fileperm(mode); | ||
584 | } | ||
585 | |||
570 | /* vim:set sw=8: */ | 586 | /* vim:set sw=8: */ |
diff --git a/ui-snapshot.c b/ui-snapshot.c index dfedd8f..67dbbdd 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c | |||
@@ -6,8 +6,9 @@ | |||
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 | ||
11 | static int write_compressed_tar_archive(struct archiver_args *args,const char *filter) | 12 | static int write_compressed_tar_archive(struct archiver_args *args,const char *filter) |
12 | { | 13 | { |
13 | int rw[2]; | 14 | int rw[2]; |
diff --git a/ui-summary.c b/ui-summary.c index 3baac08..0afa0a3 100644 --- a/ui-summary.c +++ b/ui-summary.c | |||
@@ -6,8 +6,9 @@ | |||
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 | ||
11 | static int header; | 12 | static int header; |
12 | 13 | ||
13 | static int cmp_age(int age1, int age2) | 14 | static int cmp_age(int age1, int age2) |
@@ -6,9 +6,9 @@ | |||
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 | 10 | #include "html.h" | |
11 | 11 | ||
12 | static void print_tag_content(char *buf) | 12 | static void print_tag_content(char *buf) |
13 | { | 13 | { |
14 | char *p; | 14 | char *p; |
@@ -6,8 +6,9 @@ | |||
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 | ||
11 | char *curr_rev; | 12 | char *curr_rev; |
12 | char *match_path; | 13 | char *match_path; |
13 | int header = 0; | 14 | int header = 0; |
@@ -78,9 +79,9 @@ static int ls_item(const unsigned char *sha1, const char *base, int baselen, | |||
78 | return 0; | 79 | return 0; |
79 | } | 80 | } |
80 | 81 | ||
81 | html("<tr><td class='ls-mode'>"); | 82 | html("<tr><td class='ls-mode'>"); |
82 | html_filemode(mode); | 83 | cgit_print_filemode(mode); |
83 | html("</td><td>"); | 84 | html("</td><td>"); |
84 | if (S_ISGITLINK(mode)) { | 85 | if (S_ISGITLINK(mode)) { |
85 | htmlf("<a class='ls-mod' href='"); | 86 | htmlf("<a class='ls-mod' href='"); |
86 | html_attr(fmt(ctx.repo->module_link, | 87 | html_attr(fmt(ctx.repo->module_link, |