author | Lars Hjemli <hjemli@gmail.com> | 2008-03-24 15:50:57 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-03-24 15:50:57 (UTC) |
commit | a4d1ca1dc6ff8171694d9e2280b6075a1beced0c (patch) (unidiff) | |
tree | 8ccfdd78b7fe61a54bf09c11a130cfbfa8ed50c8 | |
parent | c5984a9896b39748e61daf6e620483749654b102 (diff) | |
download | cgit-a4d1ca1dc6ff8171694d9e2280b6075a1beced0c.zip cgit-a4d1ca1dc6ff8171694d9e2280b6075a1beced0c.tar.gz cgit-a4d1ca1dc6ff8171694d9e2280b6075a1beced0c.tar.bz2 |
Add ui-shared.h
This is finally a proper headerfile for the shared ui-functions which
used to reside in cgit.h
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | cgit.c | 1 | ||||
-rw-r--r-- | cgit.h | 32 | ||||
-rw-r--r-- | ui-blob.c | 1 | ||||
-rw-r--r-- | ui-commit.c | 1 | ||||
-rw-r--r-- | ui-diff.c | 1 | ||||
-rw-r--r-- | ui-log.c | 1 | ||||
-rw-r--r-- | ui-patch.c | 1 | ||||
-rw-r--r-- | ui-refs.c | 1 | ||||
-rw-r--r-- | ui-repolist.c | 1 | ||||
-rw-r--r-- | ui-shared.h | 36 | ||||
-rw-r--r-- | ui-snapshot.c | 1 | ||||
-rw-r--r-- | ui-tag.c | 1 | ||||
-rw-r--r-- | ui-tree.c | 1 |
13 files changed, 47 insertions, 32 deletions
@@ -1,34 +1,35 @@ | |||
1 | /* cgit.c: cgi for the git scm | 1 | /* cgit.c: cgi for the git scm |
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 "cmd.h" | 10 | #include "cmd.h" |
11 | #include "ui-shared.h" | ||
11 | 12 | ||
12 | static int cgit_prepare_cache(struct cacheitem *item) | 13 | static int cgit_prepare_cache(struct cacheitem *item) |
13 | { | 14 | { |
14 | if (!ctx.repo && ctx.qry.repo) { | 15 | if (!ctx.repo && ctx.qry.repo) { |
15 | ctx.page.title = fmt("%s - %s", ctx.cfg.root_title, | 16 | ctx.page.title = fmt("%s - %s", ctx.cfg.root_title, |
16 | "Bad request"); | 17 | "Bad request"); |
17 | cgit_print_http_headers(&ctx); | 18 | cgit_print_http_headers(&ctx); |
18 | cgit_print_docstart(&ctx); | 19 | cgit_print_docstart(&ctx); |
19 | cgit_print_pageheader(&ctx); | 20 | cgit_print_pageheader(&ctx); |
20 | cgit_print_error(fmt("Unknown repo: %s", ctx.qry.repo)); | 21 | cgit_print_error(fmt("Unknown repo: %s", ctx.qry.repo)); |
21 | cgit_print_docend(); | 22 | cgit_print_docend(); |
22 | return 0; | 23 | return 0; |
23 | } | 24 | } |
24 | 25 | ||
25 | if (!ctx.repo) { | 26 | if (!ctx.repo) { |
26 | item->name = xstrdup(fmt("%s/index.html", ctx.cfg.cache_root)); | 27 | item->name = xstrdup(fmt("%s/index.html", ctx.cfg.cache_root)); |
27 | item->ttl = ctx.cfg.cache_root_ttl; | 28 | item->ttl = ctx.cfg.cache_root_ttl; |
28 | return 1; | 29 | return 1; |
29 | } | 30 | } |
30 | 31 | ||
31 | if (!cgit_cmd) { | 32 | if (!cgit_cmd) { |
32 | item->name = xstrdup(fmt("%s/%s/index.%s.html", ctx.cfg.cache_root, | 33 | item->name = xstrdup(fmt("%s/%s/index.%s.html", ctx.cfg.cache_root, |
33 | cache_safe_filename(ctx.repo->url), | 34 | cache_safe_filename(ctx.repo->url), |
34 | cache_safe_filename(ctx.qry.raw))); | 35 | cache_safe_filename(ctx.qry.raw))); |
@@ -216,61 +216,29 @@ extern int cgit_diff_files(const unsigned char *old_sha1, | |||
216 | const unsigned char *new_sha1, | 216 | const unsigned char *new_sha1, |
217 | linediff_fn fn); | 217 | linediff_fn fn); |
218 | 218 | ||
219 | extern void cgit_diff_tree(const unsigned char *old_sha1, | 219 | extern void cgit_diff_tree(const unsigned char *old_sha1, |
220 | const unsigned char *new_sha1, | 220 | const unsigned char *new_sha1, |
221 | filepair_fn fn, const char *prefix); | 221 | filepair_fn fn, const char *prefix); |
222 | 222 | ||
223 | extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); | 223 | extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); |
224 | 224 | ||
225 | extern char *fmt(const char *format,...); | 225 | extern char *fmt(const char *format,...); |
226 | 226 | ||
227 | extern int cgit_read_config(const char *filename, configfn fn); | 227 | extern int cgit_read_config(const char *filename, configfn fn); |
228 | extern int cgit_parse_query(char *txt, configfn fn); | 228 | extern int cgit_parse_query(char *txt, configfn fn); |
229 | extern struct commitinfo *cgit_parse_commit(struct commit *commit); | 229 | extern struct commitinfo *cgit_parse_commit(struct commit *commit); |
230 | extern struct taginfo *cgit_parse_tag(struct tag *tag); | 230 | extern struct taginfo *cgit_parse_tag(struct tag *tag); |
231 | extern void cgit_parse_url(const char *url); | 231 | extern void cgit_parse_url(const char *url); |
232 | 232 | ||
233 | extern char *cache_safe_filename(const char *unsafe); | 233 | extern char *cache_safe_filename(const char *unsafe); |
234 | extern int cache_lock(struct cacheitem *item); | 234 | extern int cache_lock(struct cacheitem *item); |
235 | extern int cache_unlock(struct cacheitem *item); | 235 | extern int cache_unlock(struct cacheitem *item); |
236 | extern int cache_cancel_lock(struct cacheitem *item); | 236 | extern int cache_cancel_lock(struct cacheitem *item); |
237 | extern int cache_exist(struct cacheitem *item); | 237 | extern int cache_exist(struct cacheitem *item); |
238 | extern int cache_expired(struct cacheitem *item); | 238 | extern int cache_expired(struct cacheitem *item); |
239 | 239 | ||
240 | extern char *cgit_repourl(const char *reponame); | ||
241 | extern char *cgit_fileurl(const char *reponame, const char *pagename, | ||
242 | const char *filename, const char *query); | ||
243 | extern char *cgit_pageurl(const char *reponame, const char *pagename, | ||
244 | const char *query); | ||
245 | |||
246 | extern const char *cgit_repobasename(const char *reponame); | 240 | extern const char *cgit_repobasename(const char *reponame); |
247 | 241 | ||
248 | extern void cgit_tree_link(char *name, char *title, char *class, char *head, | ||
249 | char *rev, char *path); | ||
250 | extern void cgit_log_link(char *name, char *title, char *class, char *head, | ||
251 | char *rev, char *path, int ofs, char *grep, | ||
252 | char *pattern); | ||
253 | extern void cgit_commit_link(char *name, char *title, char *class, char *head, | ||
254 | char *rev); | ||
255 | extern void cgit_refs_link(char *name, char *title, char *class, char *head, | ||
256 | char *rev, char *path); | ||
257 | extern void cgit_snapshot_link(char *name, char *title, char *class, | ||
258 | char *head, char *rev, char *archivename); | ||
259 | extern void cgit_diff_link(char *name, char *title, char *class, char *head, | ||
260 | char *new_rev, char *old_rev, char *path); | ||
261 | |||
262 | extern void cgit_object_link(struct object *obj); | ||
263 | |||
264 | extern void cgit_print_error(char *msg); | ||
265 | extern void cgit_print_date(time_t secs, char *format); | ||
266 | extern void cgit_print_age(time_t t, time_t max_relative, char *format); | ||
267 | extern void cgit_print_http_headers(struct cgit_context *ctx); | ||
268 | extern void cgit_print_docstart(struct cgit_context *ctx); | ||
269 | extern void cgit_print_docend(); | ||
270 | extern void cgit_print_pageheader(struct cgit_context *ctx); | ||
271 | extern void cgit_print_filemode(unsigned short mode); | ||
272 | extern void cgit_print_snapshot_links(const char *repo, const char *head, | ||
273 | const char *hex, int snapshots); | ||
274 | extern int cgit_parse_snapshots_mask(const char *str); | 242 | extern int cgit_parse_snapshots_mask(const char *str); |
275 | 243 | ||
276 | #endif /* CGIT_H */ | 244 | #endif /* CGIT_H */ |
@@ -1,34 +1,35 @@ | |||
1 | /* ui-blob.c: show blob content | 1 | /* ui-blob.c: show blob content |
2 | * | 2 | * |
3 | * Copyright (C) 2008 Lars Hjemli | 3 | * Copyright (C) 2008 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 | void cgit_print_blob(const char *hex, char *path) | 13 | void cgit_print_blob(const char *hex, char *path) |
13 | { | 14 | { |
14 | 15 | ||
15 | unsigned char sha1[20]; | 16 | unsigned char sha1[20]; |
16 | enum object_type type; | 17 | enum object_type type; |
17 | unsigned char *buf; | 18 | unsigned char *buf; |
18 | unsigned long size; | 19 | unsigned long size; |
19 | 20 | ||
20 | if (get_sha1_hex(hex, sha1)){ | 21 | if (get_sha1_hex(hex, sha1)){ |
21 | cgit_print_error(fmt("Bad hex value: %s", hex)); | 22 | cgit_print_error(fmt("Bad hex value: %s", hex)); |
22 | return; | 23 | return; |
23 | } | 24 | } |
24 | 25 | ||
25 | type = sha1_object_info(sha1, &size); | 26 | type = sha1_object_info(sha1, &size); |
26 | if (type == OBJ_BAD) { | 27 | if (type == OBJ_BAD) { |
27 | cgit_print_error(fmt("Bad object name: %s", hex)); | 28 | cgit_print_error(fmt("Bad object name: %s", hex)); |
28 | return; | 29 | return; |
29 | } | 30 | } |
30 | 31 | ||
31 | buf = read_sha1_file(sha1, &type, &size); | 32 | buf = read_sha1_file(sha1, &type, &size); |
32 | if (!buf) { | 33 | if (!buf) { |
33 | cgit_print_error(fmt("Error reading object %s", hex)); | 34 | cgit_print_error(fmt("Error reading object %s", hex)); |
34 | return; | 35 | return; |
diff --git a/ui-commit.c b/ui-commit.c index ed25824..8019e36 100644 --- a/ui-commit.c +++ b/ui-commit.c | |||
@@ -1,34 +1,35 @@ | |||
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 | #include "html.h" |
11 | #include "ui-shared.h" | ||
11 | 12 | ||
12 | static int files, slots; | 13 | static int files, slots; |
13 | static int total_adds, total_rems, max_changes; | 14 | static int total_adds, total_rems, max_changes; |
14 | static int lines_added, lines_removed; | 15 | static int lines_added, lines_removed; |
15 | static char *curr_rev; | 16 | static char *curr_rev; |
16 | 17 | ||
17 | static struct fileinfo { | 18 | static struct fileinfo { |
18 | char status; | 19 | char status; |
19 | unsigned char old_sha1[20]; | 20 | unsigned char old_sha1[20]; |
20 | unsigned char new_sha1[20]; | 21 | unsigned char new_sha1[20]; |
21 | unsigned short old_mode; | 22 | unsigned short old_mode; |
22 | unsigned short new_mode; | 23 | unsigned short new_mode; |
23 | char *old_path; | 24 | char *old_path; |
24 | char *new_path; | 25 | char *new_path; |
25 | unsigned int added; | 26 | unsigned int added; |
26 | unsigned int removed; | 27 | unsigned int removed; |
27 | } *items; | 28 | } *items; |
28 | 29 | ||
29 | 30 | ||
30 | void print_fileinfo(struct fileinfo *info) | 31 | void print_fileinfo(struct fileinfo *info) |
31 | { | 32 | { |
32 | char *class; | 33 | char *class; |
33 | 34 | ||
34 | switch (info->status) { | 35 | switch (info->status) { |
@@ -1,34 +1,35 @@ | |||
1 | /* ui-diff.c: show diff between two blobs | 1 | /* ui-diff.c: show diff between two blobs |
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 | #include "html.h" |
11 | #include "ui-shared.h" | ||
11 | 12 | ||
12 | unsigned char old_rev_sha1[20]; | 13 | unsigned char old_rev_sha1[20]; |
13 | unsigned char new_rev_sha1[20]; | 14 | unsigned char new_rev_sha1[20]; |
14 | 15 | ||
15 | /* | 16 | /* |
16 | * print a single line returned from xdiff | 17 | * print a single line returned from xdiff |
17 | */ | 18 | */ |
18 | static void print_line(char *line, int len) | 19 | static void print_line(char *line, int len) |
19 | { | 20 | { |
20 | char *class = "ctx"; | 21 | char *class = "ctx"; |
21 | char c = line[len-1]; | 22 | char c = line[len-1]; |
22 | 23 | ||
23 | if (line[0] == '+') | 24 | if (line[0] == '+') |
24 | class = "add"; | 25 | class = "add"; |
25 | else if (line[0] == '-') | 26 | else if (line[0] == '-') |
26 | class = "del"; | 27 | class = "del"; |
27 | else if (line[0] == '@') | 28 | else if (line[0] == '@') |
28 | class = "hunk"; | 29 | class = "hunk"; |
29 | 30 | ||
30 | htmlf("<div class='%s'>", class); | 31 | htmlf("<div class='%s'>", class); |
31 | line[len-1] = '\0'; | 32 | line[len-1] = '\0'; |
32 | html_txt(line); | 33 | html_txt(line); |
33 | html("</div>"); | 34 | html("</div>"); |
34 | line[len-1] = c; | 35 | line[len-1] = c; |
@@ -1,34 +1,35 @@ | |||
1 | /* ui-log.c: functions for log output | 1 | /* ui-log.c: functions for log 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 "cgit.h" |
10 | #include "html.h" | 10 | #include "html.h" |
11 | #include "ui-shared.h" | ||
11 | 12 | ||
12 | int files, add_lines, rem_lines; | 13 | int files, add_lines, rem_lines; |
13 | 14 | ||
14 | void count_lines(char *line, int size) | 15 | void count_lines(char *line, int size) |
15 | { | 16 | { |
16 | if (size <= 0) | 17 | if (size <= 0) |
17 | return; | 18 | return; |
18 | 19 | ||
19 | if (line[0] == '+') | 20 | if (line[0] == '+') |
20 | add_lines++; | 21 | add_lines++; |
21 | 22 | ||
22 | else if (line[0] == '-') | 23 | else if (line[0] == '-') |
23 | rem_lines++; | 24 | rem_lines++; |
24 | } | 25 | } |
25 | 26 | ||
26 | void inspect_files(struct diff_filepair *pair) | 27 | void inspect_files(struct diff_filepair *pair) |
27 | { | 28 | { |
28 | files++; | 29 | files++; |
29 | if (ctx.repo->enable_log_linecount) | 30 | if (ctx.repo->enable_log_linecount) |
30 | cgit_diff_files(pair->one->sha1, pair->two->sha1, count_lines); | 31 | cgit_diff_files(pair->one->sha1, pair->two->sha1, count_lines); |
31 | } | 32 | } |
32 | 33 | ||
33 | void print_commit(struct commit *commit) | 34 | void print_commit(struct commit *commit) |
34 | { | 35 | { |
@@ -1,34 +1,35 @@ | |||
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 | ||
@@ -1,34 +1,35 @@ | |||
1 | /* ui-refs.c: browse symbolic refs | 1 | /* ui-refs.c: browse symbolic refs |
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 | #include "html.h" |
11 | #include "ui-shared.h" | ||
11 | 12 | ||
12 | static int header; | 13 | static int header; |
13 | 14 | ||
14 | static int cmp_age(int age1, int age2) | 15 | static int cmp_age(int age1, int age2) |
15 | { | 16 | { |
16 | if (age1 != 0 && age2 != 0) | 17 | if (age1 != 0 && age2 != 0) |
17 | return age2 - age1; | 18 | return age2 - age1; |
18 | 19 | ||
19 | if (age1 == 0 && age2 == 0) | 20 | if (age1 == 0 && age2 == 0) |
20 | return 0; | 21 | return 0; |
21 | 22 | ||
22 | if (age1 == 0) | 23 | if (age1 == 0) |
23 | return +1; | 24 | return +1; |
24 | 25 | ||
25 | return -1; | 26 | return -1; |
26 | } | 27 | } |
27 | 28 | ||
28 | static int cmp_ref_name(const void *a, const void *b) | 29 | static int cmp_ref_name(const void *a, const void *b) |
29 | { | 30 | { |
30 | struct refinfo *r1 = *(struct refinfo **)a; | 31 | struct refinfo *r1 = *(struct refinfo **)a; |
31 | struct refinfo *r2 = *(struct refinfo **)b; | 32 | struct refinfo *r2 = *(struct refinfo **)b; |
32 | 33 | ||
33 | return strcmp(r1->refname, r2->refname); | 34 | return strcmp(r1->refname, r2->refname); |
34 | } | 35 | } |
diff --git a/ui-repolist.c b/ui-repolist.c index ad9b1bc..eeeaf3d 100644 --- a/ui-repolist.c +++ b/ui-repolist.c | |||
@@ -1,36 +1,37 @@ | |||
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 <time.h> | 9 | #include <time.h> |
10 | 10 | ||
11 | #include "cgit.h" | 11 | #include "cgit.h" |
12 | #include "html.h" | 12 | #include "html.h" |
13 | #include "ui-shared.h" | ||
13 | 14 | ||
14 | time_t read_agefile(char *path) | 15 | time_t read_agefile(char *path) |
15 | { | 16 | { |
16 | FILE *f; | 17 | FILE *f; |
17 | static char buf[64], buf2[64]; | 18 | static char buf[64], buf2[64]; |
18 | 19 | ||
19 | if (!(f = fopen(path, "r"))) | 20 | if (!(f = fopen(path, "r"))) |
20 | return -1; | 21 | return -1; |
21 | fgets(buf, sizeof(buf), f); | 22 | fgets(buf, sizeof(buf), f); |
22 | fclose(f); | 23 | fclose(f); |
23 | if (parse_date(buf, buf2, sizeof(buf2))) | 24 | if (parse_date(buf, buf2, sizeof(buf2))) |
24 | return strtoul(buf2, NULL, 10); | 25 | return strtoul(buf2, NULL, 10); |
25 | else | 26 | else |
26 | return 0; | 27 | return 0; |
27 | } | 28 | } |
28 | 29 | ||
29 | static void print_modtime(struct cgit_repo *repo) | 30 | static void print_modtime(struct cgit_repo *repo) |
30 | { | 31 | { |
31 | char *path; | 32 | char *path; |
32 | struct stat s; | 33 | struct stat s; |
33 | 34 | ||
34 | path = fmt("%s/%s", repo->path, ctx.cfg.agefile); | 35 | path = fmt("%s/%s", repo->path, ctx.cfg.agefile); |
35 | if (stat(path, &s) == 0) { | 36 | if (stat(path, &s) == 0) { |
36 | cgit_print_age(read_agefile(path), -1, NULL); | 37 | cgit_print_age(read_agefile(path), -1, NULL); |
diff --git a/ui-shared.h b/ui-shared.h new file mode 100644 index 0000000..94de884 --- a/dev/null +++ b/ui-shared.h | |||
@@ -0,0 +1,36 @@ | |||
1 | #ifndef UI_SHARED_H | ||
2 | #define UI_SHARED_H | ||
3 | |||
4 | extern char *cgit_repourl(const char *reponame); | ||
5 | extern char *cgit_fileurl(const char *reponame, const char *pagename, | ||
6 | const char *filename, const char *query); | ||
7 | extern char *cgit_pageurl(const char *reponame, const char *pagename, | ||
8 | const char *query); | ||
9 | |||
10 | extern void cgit_tree_link(char *name, char *title, char *class, char *head, | ||
11 | char *rev, char *path); | ||
12 | extern void cgit_log_link(char *name, char *title, char *class, char *head, | ||
13 | char *rev, char *path, int ofs, char *grep, | ||
14 | char *pattern); | ||
15 | extern void cgit_commit_link(char *name, char *title, char *class, char *head, | ||
16 | char *rev); | ||
17 | extern void cgit_refs_link(char *name, char *title, char *class, char *head, | ||
18 | char *rev, char *path); | ||
19 | extern void cgit_snapshot_link(char *name, char *title, char *class, | ||
20 | char *head, char *rev, char *archivename); | ||
21 | extern void cgit_diff_link(char *name, char *title, char *class, char *head, | ||
22 | char *new_rev, char *old_rev, char *path); | ||
23 | extern void cgit_object_link(struct object *obj); | ||
24 | |||
25 | extern void cgit_print_error(char *msg); | ||
26 | extern void cgit_print_date(time_t secs, char *format); | ||
27 | extern void cgit_print_age(time_t t, time_t max_relative, char *format); | ||
28 | extern void cgit_print_http_headers(struct cgit_context *ctx); | ||
29 | extern void cgit_print_docstart(struct cgit_context *ctx); | ||
30 | extern void cgit_print_docend(); | ||
31 | extern void cgit_print_pageheader(struct cgit_context *ctx); | ||
32 | extern void cgit_print_filemode(unsigned short mode); | ||
33 | extern void cgit_print_snapshot_links(const char *repo, const char *head, | ||
34 | const char *hex, int snapshots); | ||
35 | |||
36 | #endif /* UI_SHARED_H */ | ||
diff --git a/ui-snapshot.c b/ui-snapshot.c index 512fcd2..966a140 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c | |||
@@ -1,34 +1,35 @@ | |||
1 | /* ui-snapshot.c: generate snapshot of a commit | 1 | /* ui-snapshot.c: generate snapshot of a commit |
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 | #include "html.h" |
11 | #include "ui-shared.h" | ||
11 | 12 | ||
12 | static int write_compressed_tar_archive(struct archiver_args *args,const char *filter) | 13 | static int write_compressed_tar_archive(struct archiver_args *args,const char *filter) |
13 | { | 14 | { |
14 | int rw[2]; | 15 | int rw[2]; |
15 | pid_t gzpid; | 16 | pid_t gzpid; |
16 | int stdout2; | 17 | int stdout2; |
17 | int status; | 18 | int status; |
18 | int rv; | 19 | int rv; |
19 | 20 | ||
20 | stdout2 = chk_non_negative(dup(STDIN_FILENO), "Preserving STDOUT before compressing"); | 21 | stdout2 = chk_non_negative(dup(STDIN_FILENO), "Preserving STDOUT before compressing"); |
21 | chk_zero(pipe(rw), "Opening pipe from compressor subprocess"); | 22 | chk_zero(pipe(rw), "Opening pipe from compressor subprocess"); |
22 | gzpid = chk_non_negative(fork(), "Forking compressor subprocess"); | 23 | gzpid = chk_non_negative(fork(), "Forking compressor subprocess"); |
23 | if(gzpid==0) { | 24 | if(gzpid==0) { |
24 | /* child */ | 25 | /* child */ |
25 | chk_zero(close(rw[1]), "Closing write end of pipe in child"); | 26 | chk_zero(close(rw[1]), "Closing write end of pipe in child"); |
26 | chk_zero(close(STDIN_FILENO), "Closing STDIN"); | 27 | chk_zero(close(STDIN_FILENO), "Closing STDIN"); |
27 | chk_non_negative(dup2(rw[0],STDIN_FILENO), "Redirecting compressor input to stdin"); | 28 | chk_non_negative(dup2(rw[0],STDIN_FILENO), "Redirecting compressor input to stdin"); |
28 | execlp(filter,filter,NULL); | 29 | execlp(filter,filter,NULL); |
29 | _exit(-1); | 30 | _exit(-1); |
30 | } | 31 | } |
31 | /* parent */ | 32 | /* parent */ |
32 | chk_zero(close(rw[0]), "Closing read end of pipe"); | 33 | chk_zero(close(rw[0]), "Closing read end of pipe"); |
33 | chk_non_negative(dup2(rw[1],STDOUT_FILENO), "Redirecting output to compressor"); | 34 | chk_non_negative(dup2(rw[1],STDOUT_FILENO), "Redirecting output to compressor"); |
34 | 35 | ||
@@ -1,34 +1,35 @@ | |||
1 | /* ui-tag.c: display a tag | 1 | /* ui-tag.c: display a tag |
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_tag_content(char *buf) | 13 | static void print_tag_content(char *buf) |
13 | { | 14 | { |
14 | char *p; | 15 | char *p; |
15 | 16 | ||
16 | if (!buf) | 17 | if (!buf) |
17 | return; | 18 | return; |
18 | 19 | ||
19 | html("<div class='commit-subject'>"); | 20 | html("<div class='commit-subject'>"); |
20 | p = strchr(buf, '\n'); | 21 | p = strchr(buf, '\n'); |
21 | if (p) | 22 | if (p) |
22 | *p = '\0'; | 23 | *p = '\0'; |
23 | html_txt(buf); | 24 | html_txt(buf); |
24 | html("</div>"); | 25 | html("</div>"); |
25 | if (p) { | 26 | if (p) { |
26 | html("<div class='commit-msg'>"); | 27 | html("<div class='commit-msg'>"); |
27 | html_txt(++p); | 28 | html_txt(++p); |
28 | html("</div>"); | 29 | html("</div>"); |
29 | } | 30 | } |
30 | } | 31 | } |
31 | 32 | ||
32 | void cgit_print_tag(char *revname) | 33 | void cgit_print_tag(char *revname) |
33 | { | 34 | { |
34 | unsigned char sha1[20]; | 35 | unsigned char sha1[20]; |
@@ -1,34 +1,35 @@ | |||
1 | /* ui-tree.c: functions for tree output | 1 | /* ui-tree.c: functions for tree 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 "cgit.h" |
10 | #include "html.h" | 10 | #include "html.h" |
11 | #include "ui-shared.h" | ||
11 | 12 | ||
12 | char *curr_rev; | 13 | char *curr_rev; |
13 | char *match_path; | 14 | char *match_path; |
14 | int header = 0; | 15 | int header = 0; |
15 | 16 | ||
16 | static void print_object(const unsigned char *sha1, char *path) | 17 | static void print_object(const unsigned char *sha1, char *path) |
17 | { | 18 | { |
18 | enum object_type type; | 19 | enum object_type type; |
19 | char *buf; | 20 | char *buf; |
20 | unsigned long size, lineno, start, idx; | 21 | unsigned long size, lineno, start, idx; |
21 | const char *linefmt = "<tr><td class='no'><a id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a></td><td class='txt'>"; | 22 | const char *linefmt = "<tr><td class='no'><a id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a></td><td class='txt'>"; |
22 | 23 | ||
23 | type = sha1_object_info(sha1, &size); | 24 | type = sha1_object_info(sha1, &size); |
24 | if (type == OBJ_BAD) { | 25 | if (type == OBJ_BAD) { |
25 | cgit_print_error(fmt("Bad object name: %s", | 26 | cgit_print_error(fmt("Bad object name: %s", |
26 | sha1_to_hex(sha1))); | 27 | sha1_to_hex(sha1))); |
27 | return; | 28 | return; |
28 | } | 29 | } |
29 | 30 | ||
30 | buf = read_sha1_file(sha1, &type, &size); | 31 | buf = read_sha1_file(sha1, &type, &size); |
31 | if (!buf) { | 32 | if (!buf) { |
32 | cgit_print_error(fmt("Error reading object %s", | 33 | cgit_print_error(fmt("Error reading object %s", |
33 | sha1_to_hex(sha1))); | 34 | sha1_to_hex(sha1))); |
34 | return; | 35 | return; |