-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
@@ -286,17 +286,16 @@ static void cgit_parse_args(int argc, const char **argv) | |||
286 | } | 286 | } |
287 | 287 | ||
288 | int main(int argc, const char **argv) | 288 | int main(int argc, const char **argv) |
289 | { | 289 | { |
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; |
299 | 298 | ||
300 | cgit_read_config(cgit_config_env ? cgit_config_env : CGIT_CONFIG, | 299 | cgit_read_config(cgit_config_env ? cgit_config_env : CGIT_CONFIG, |
301 | cgit_global_config_cb); | 300 | cgit_global_config_cb); |
302 | if (getenv("SCRIPT_NAME")) | 301 | if (getenv("SCRIPT_NAME")) |
@@ -181,18 +181,16 @@ struct cgit_context { | |||
181 | }; | 181 | }; |
182 | 182 | ||
183 | extern const char *cgit_version; | 183 | extern const char *cgit_version; |
184 | 184 | ||
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); |
195 | extern void cgit_repo_config_cb(const char *name, const char *value); | 193 | extern void cgit_repo_config_cb(const char *name, const char *value); |
196 | extern void cgit_querystring_cb(const char *name, const char *value); | 194 | extern void cgit_querystring_cb(const char *name, const char *value); |
197 | 195 | ||
198 | extern int chk_zero(int result, char *msg); | 196 | extern int chk_zero(int result, char *msg); |
@@ -217,28 +215,16 @@ extern int cgit_diff_files(const unsigned char *old_sha1, | |||
217 | extern void cgit_diff_tree(const unsigned char *old_sha1, | 215 | extern void cgit_diff_tree(const unsigned char *old_sha1, |
218 | const unsigned char *new_sha1, | 216 | const unsigned char *new_sha1, |
219 | filepair_fn fn, const char *prefix); | 217 | filepair_fn fn, const char *prefix); |
220 | 218 | ||
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); |
241 | extern void cgit_parse_url(const char *url); | 227 | extern void cgit_parse_url(const char *url); |
242 | 228 | ||
243 | extern char *cache_safe_filename(const char *unsafe); | 229 | extern char *cache_safe_filename(const char *unsafe); |
244 | extern int cache_lock(struct cacheitem *item); | 230 | extern int cache_lock(struct cacheitem *item); |
@@ -275,16 +261,17 @@ extern void cgit_print_error(char *msg); | |||
275 | extern void cgit_print_date(time_t secs, char *format); | 261 | extern void cgit_print_date(time_t secs, char *format); |
276 | extern void cgit_print_age(time_t t, time_t max_relative, char *format); | 262 | extern void cgit_print_age(time_t t, time_t max_relative, char *format); |
277 | extern void cgit_print_docstart(char *title, struct cacheitem *item); | 263 | extern void cgit_print_docstart(char *title, struct cacheitem *item); |
278 | extern void cgit_print_docend(); | 264 | 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); |
287 | extern void cgit_print_summary(); | 274 | extern void cgit_print_summary(); |
288 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, | 275 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, |
289 | char *pattern, char *path, int pager); | 276 | char *pattern, char *path, int pager); |
290 | extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); | 277 | extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); |
@@ -1,33 +1,41 @@ | |||
1 | /* html.c: helper functions for html output | 1 | /* html.c: helper functions for html output |
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 <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]; |
14 | static int bufidx; | 20 | static int bufidx; |
15 | int len; | 21 | int len; |
16 | va_list args; | 22 | va_list args; |
17 | 23 | ||
18 | bufidx++; | 24 | bufidx++; |
19 | bufidx &= 7; | 25 | bufidx &= 7; |
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) |
30 | { | 38 | { |
31 | write(htmlfd, txt, strlen(txt)); | 39 | write(htmlfd, txt, strlen(txt)); |
32 | } | 40 | } |
33 | 41 | ||
@@ -155,35 +163,20 @@ void html_link_open(char *url, char *title, char *class) | |||
155 | 163 | ||
156 | void html_link_close(void) | 164 | void html_link_close(void) |
157 | { | 165 | { |
158 | html("</a>"); | 166 | html("</a>"); |
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]; |
186 | size_t len; | 179 | size_t len; |
187 | 180 | ||
188 | if (!(f = fopen(filename, "r"))) | 181 | if (!(f = fopen(filename, "r"))) |
189 | return -1; | 182 | return -1; |
@@ -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 */ | ||
@@ -9,18 +9,16 @@ | |||
9 | #include "cgit.h" | 9 | #include "cgit.h" |
10 | 10 | ||
11 | struct cgit_repolist cgit_repolist; | 11 | struct cgit_repolist cgit_repolist; |
12 | struct cgit_context ctx; | 12 | 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"; |
23 | ctx->cfg.cache_dynamic_ttl = 5; | 21 | ctx->cfg.cache_dynamic_ttl = 5; |
24 | ctx->cfg.cache_max_create_time = 5; | 22 | ctx->cfg.cache_max_create_time = 5; |
25 | ctx->cfg.cache_repo_ttl = 5; | 23 | ctx->cfg.cache_repo_ttl = 5; |
26 | ctx->cfg.cache_root = CGIT_CACHE_ROOT; | 24 | ctx->cfg.cache_root = CGIT_CACHE_ROOT; |
@@ -1,9 +1,18 @@ | |||
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 | ||
6 | unsigned char sha1[20]; | 15 | unsigned char sha1[20]; |
7 | enum object_type type; | 16 | enum object_type type; |
8 | unsigned char *buf; | 17 | unsigned char *buf; |
9 | unsigned long size; | 18 | unsigned long size; |
diff --git a/ui-commit.c b/ui-commit.c index 25721ca..ed25824 100644 --- a/ui-commit.c +++ b/ui-commit.c | |||
@@ -2,16 +2,17 @@ | |||
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 | ||
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; |
14 | static char *curr_rev; | 15 | static char *curr_rev; |
15 | 16 | ||
16 | static struct fileinfo { | 17 | static struct fileinfo { |
17 | char status; | 18 | char status; |
@@ -57,26 +58,26 @@ void print_fileinfo(struct fileinfo *info) | |||
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", |
@@ -2,17 +2,17 @@ | |||
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 | 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 | ||
15 | /* | 15 | /* |
16 | * print a single line returned from xdiff | 16 | * print a single line returned from xdiff |
17 | */ | 17 | */ |
18 | static void print_line(char *line, int len) | 18 | static void print_line(char *line, int len) |
@@ -2,16 +2,17 @@ | |||
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 | ||
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) |
14 | { | 15 | { |
15 | if (size <= 0) | 16 | if (size <= 0) |
16 | return; | 17 | return; |
17 | 18 | ||
@@ -2,16 +2,17 @@ | |||
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 | 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]; |
14 | 15 | ||
15 | line[len-1] = '\0'; | 16 | line[len-1] = '\0'; |
16 | htmlf("%s\n", line); | 17 | htmlf("%s\n", line); |
17 | line[len-1] = c; | 18 | line[len-1] = c; |
@@ -2,19 +2,17 @@ | |||
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 | 10 | #include "html.h" | |
11 | |||
12 | |||
13 | 11 | ||
14 | void cgit_print_refs() | 12 | void cgit_print_refs() |
15 | { | 13 | { |
16 | 14 | ||
17 | html("<table class='list nowrap'>"); | 15 | html("<table class='list nowrap'>"); |
18 | 16 | ||
19 | if (ctx.qry.path && !strncmp(ctx.qry.path, "heads", 5)) | 17 | if (ctx.qry.path && !strncmp(ctx.qry.path, "heads", 5)) |
20 | cgit_print_branches(0); | 18 | cgit_print_branches(0); |
diff --git a/ui-repolist.c b/ui-repolist.c index 5fde174..cd4e41d 100644 --- a/ui-repolist.c +++ b/ui-repolist.c | |||
@@ -1,19 +1,20 @@ | |||
1 | /* ui-repolist.c: functions for generating the repolist page | 1 | /* ui-repolist.c: functions for generating the repolist page |
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" | ||
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; |
16 | static char buf[64], buf2[64]; | 17 | static char buf[64], buf2[64]; |
17 | 18 | ||
18 | if (!(f = fopen(path, "r"))) | 19 | if (!(f = fopen(path, "r"))) |
19 | return -1; | 20 | return -1; |
diff --git a/ui-shared.c b/ui-shared.c index cc1ab8b..2eff79d 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -2,16 +2,17 @@ | |||
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 | ||
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"; |
14 | 15 | ||
15 | static char *http_date(time_t t) | 16 | static char *http_date(time_t t) |
16 | { | 17 | { |
17 | static char day[][4] = | 18 | static char day[][4] = |
@@ -562,9 +563,24 @@ void cgit_print_snapshot_start(const char *mimetype, const char *filename, | |||
562 | htmlf("Content-Type: %s\n", mimetype); | 563 | htmlf("Content-Type: %s\n", mimetype); |
563 | htmlf("Content-Disposition: inline; filename=\"%s\"\n", filename); | 564 | htmlf("Content-Disposition: inline; filename=\"%s\"\n", filename); |
564 | htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime)); | 565 | htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime)); |
565 | htmlf("Expires: %s\n", http_date(item->st.st_mtime + | 566 | htmlf("Expires: %s\n", http_date(item->st.st_mtime + |
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 | |||
@@ -2,16 +2,17 @@ | |||
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 | ||
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]; |
14 | pid_t gzpid; | 15 | pid_t gzpid; |
15 | int stdout2; | 16 | int stdout2; |
16 | int status; | 17 | int status; |
17 | int rv; | 18 | int rv; |
diff --git a/ui-summary.c b/ui-summary.c index 3baac08..0afa0a3 100644 --- a/ui-summary.c +++ b/ui-summary.c | |||
@@ -2,16 +2,17 @@ | |||
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 | ||
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) |
14 | { | 15 | { |
15 | if (age1 != 0 && age2 != 0) | 16 | if (age1 != 0 && age2 != 0) |
16 | return age2 - age1; | 17 | return age2 - age1; |
17 | 18 | ||
@@ -2,17 +2,17 @@ | |||
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 | 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; |
15 | 15 | ||
16 | if (!buf) | 16 | if (!buf) |
17 | return; | 17 | return; |
18 | 18 | ||
@@ -2,16 +2,17 @@ | |||
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 | ||
11 | char *curr_rev; | 12 | char *curr_rev; |
12 | char *match_path; | 13 | char *match_path; |
13 | int header = 0; | 14 | int header = 0; |
14 | 15 | ||
15 | static void print_object(const unsigned char *sha1, char *path) | 16 | static void print_object(const unsigned char *sha1, char *path) |
16 | { | 17 | { |
17 | enum object_type type; | 18 | enum object_type type; |
@@ -74,17 +75,17 @@ static int ls_item(const unsigned char *sha1, const char *base, int baselen, | |||
74 | if (type == OBJ_BAD && !S_ISGITLINK(mode)) { | 75 | if (type == OBJ_BAD && !S_ISGITLINK(mode)) { |
75 | htmlf("<tr><td colspan='3'>Bad object: %s %s</td></tr>", | 76 | htmlf("<tr><td colspan='3'>Bad object: %s %s</td></tr>", |
76 | name, | 77 | name, |
77 | sha1_to_hex(sha1)); | 78 | sha1_to_hex(sha1)); |
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, |
87 | name, | 88 | name, |
88 | sha1_to_hex(sha1))); | 89 | sha1_to_hex(sha1))); |
89 | html("'>"); | 90 | html("'>"); |
90 | html_txt(name); | 91 | html_txt(name); |