summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c1
-rw-r--r--cgit.h32
-rw-r--r--ui-blob.c1
-rw-r--r--ui-commit.c1
-rw-r--r--ui-diff.c1
-rw-r--r--ui-log.c1
-rw-r--r--ui-patch.c1
-rw-r--r--ui-refs.c1
-rw-r--r--ui-repolist.c1
-rw-r--r--ui-shared.h36
-rw-r--r--ui-snapshot.c1
-rw-r--r--ui-tag.c1
-rw-r--r--ui-tree.c1
13 files changed, 47 insertions, 32 deletions
diff --git a/cgit.c b/cgit.c
index 79e0e43..dbb023e 100644
--- a/cgit.c
+++ b/cgit.c
@@ -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
12static int cgit_prepare_cache(struct cacheitem *item) 13static 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)));
diff --git a/cgit.h b/cgit.h
index 1b23369..c1a231d 100644
--- a/cgit.h
+++ b/cgit.h
@@ -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
219extern void cgit_diff_tree(const unsigned char *old_sha1, 219extern 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
223extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); 223extern void cgit_diff_commit(struct commit *commit, filepair_fn fn);
224 224
225extern char *fmt(const char *format,...); 225extern char *fmt(const char *format,...);
226 226
227extern int cgit_read_config(const char *filename, configfn fn); 227extern int cgit_read_config(const char *filename, configfn fn);
228extern int cgit_parse_query(char *txt, configfn fn); 228extern int cgit_parse_query(char *txt, configfn fn);
229extern struct commitinfo *cgit_parse_commit(struct commit *commit); 229extern struct commitinfo *cgit_parse_commit(struct commit *commit);
230extern struct taginfo *cgit_parse_tag(struct tag *tag); 230extern struct taginfo *cgit_parse_tag(struct tag *tag);
231extern void cgit_parse_url(const char *url); 231extern void cgit_parse_url(const char *url);
232 232
233extern char *cache_safe_filename(const char *unsafe); 233extern char *cache_safe_filename(const char *unsafe);
234extern int cache_lock(struct cacheitem *item); 234extern int cache_lock(struct cacheitem *item);
235extern int cache_unlock(struct cacheitem *item); 235extern int cache_unlock(struct cacheitem *item);
236extern int cache_cancel_lock(struct cacheitem *item); 236extern int cache_cancel_lock(struct cacheitem *item);
237extern int cache_exist(struct cacheitem *item); 237extern int cache_exist(struct cacheitem *item);
238extern int cache_expired(struct cacheitem *item); 238extern int cache_expired(struct cacheitem *item);
239 239
240extern char *cgit_repourl(const char *reponame);
241extern char *cgit_fileurl(const char *reponame, const char *pagename,
242 const char *filename, const char *query);
243extern char *cgit_pageurl(const char *reponame, const char *pagename,
244 const char *query);
245
246extern const char *cgit_repobasename(const char *reponame); 240extern const char *cgit_repobasename(const char *reponame);
247 241
248extern void cgit_tree_link(char *name, char *title, char *class, char *head,
249 char *rev, char *path);
250extern void cgit_log_link(char *name, char *title, char *class, char *head,
251 char *rev, char *path, int ofs, char *grep,
252 char *pattern);
253extern void cgit_commit_link(char *name, char *title, char *class, char *head,
254 char *rev);
255extern void cgit_refs_link(char *name, char *title, char *class, char *head,
256 char *rev, char *path);
257extern void cgit_snapshot_link(char *name, char *title, char *class,
258 char *head, char *rev, char *archivename);
259extern void cgit_diff_link(char *name, char *title, char *class, char *head,
260 char *new_rev, char *old_rev, char *path);
261
262extern void cgit_object_link(struct object *obj);
263
264extern void cgit_print_error(char *msg);
265extern void cgit_print_date(time_t secs, char *format);
266extern void cgit_print_age(time_t t, time_t max_relative, char *format);
267extern void cgit_print_http_headers(struct cgit_context *ctx);
268extern void cgit_print_docstart(struct cgit_context *ctx);
269extern void cgit_print_docend();
270extern void cgit_print_pageheader(struct cgit_context *ctx);
271extern void cgit_print_filemode(unsigned short mode);
272extern void cgit_print_snapshot_links(const char *repo, const char *head,
273 const char *hex, int snapshots);
274extern int cgit_parse_snapshots_mask(const char *str); 242extern int cgit_parse_snapshots_mask(const char *str);
275 243
276#endif /* CGIT_H */ 244#endif /* CGIT_H */
diff --git a/ui-blob.c b/ui-blob.c
index 3b29132..11589db 100644
--- a/ui-blob.c
+++ b/ui-blob.c
@@ -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
12void cgit_print_blob(const char *hex, char *path) 13void 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
12static int files, slots; 13static int files, slots;
13static int total_adds, total_rems, max_changes; 14static int total_adds, total_rems, max_changes;
14static int lines_added, lines_removed; 15static int lines_added, lines_removed;
15static char *curr_rev; 16static char *curr_rev;
16 17
17static struct fileinfo { 18static 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
30void print_fileinfo(struct fileinfo *info) 31void print_fileinfo(struct fileinfo *info)
31{ 32{
32 char *class; 33 char *class;
33 34
34 switch (info->status) { 35 switch (info->status) {
diff --git a/ui-diff.c b/ui-diff.c
index 5c3bc98..2a22009 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -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
12unsigned char old_rev_sha1[20]; 13unsigned char old_rev_sha1[20];
13unsigned char new_rev_sha1[20]; 14unsigned 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 */
18static void print_line(char *line, int len) 19static 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;
diff --git a/ui-log.c b/ui-log.c
index e1d324d..60c9269 100644
--- a/ui-log.c
+++ b/ui-log.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
12int files, add_lines, rem_lines; 13int files, add_lines, rem_lines;
13 14
14void count_lines(char *line, int size) 15void 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
26void inspect_files(struct diff_filepair *pair) 27void 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
33void print_commit(struct commit *commit) 34void print_commit(struct commit *commit)
34{ 35{
diff --git a/ui-patch.c b/ui-patch.c
index 68ebb15..36bfae4 100644
--- a/ui-patch.c
+++ b/ui-patch.c
@@ -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
12static void print_line(char *line, int len) 13static 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
21static void header(unsigned char *sha1, char *path1, int mode1, 22static 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
diff --git a/ui-refs.c b/ui-refs.c
index fc82ca7..12533cd 100644
--- a/ui-refs.c
+++ b/ui-refs.c
@@ -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
12static int header; 13static int header;
13 14
14static int cmp_age(int age1, int age2) 15static 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
28static int cmp_ref_name(const void *a, const void *b) 29static 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
14time_t read_agefile(char *path) 15time_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
29static void print_modtime(struct cgit_repo *repo) 30static 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
4extern char *cgit_repourl(const char *reponame);
5extern char *cgit_fileurl(const char *reponame, const char *pagename,
6 const char *filename, const char *query);
7extern char *cgit_pageurl(const char *reponame, const char *pagename,
8 const char *query);
9
10extern void cgit_tree_link(char *name, char *title, char *class, char *head,
11 char *rev, char *path);
12extern void cgit_log_link(char *name, char *title, char *class, char *head,
13 char *rev, char *path, int ofs, char *grep,
14 char *pattern);
15extern void cgit_commit_link(char *name, char *title, char *class, char *head,
16 char *rev);
17extern void cgit_refs_link(char *name, char *title, char *class, char *head,
18 char *rev, char *path);
19extern void cgit_snapshot_link(char *name, char *title, char *class,
20 char *head, char *rev, char *archivename);
21extern void cgit_diff_link(char *name, char *title, char *class, char *head,
22 char *new_rev, char *old_rev, char *path);
23extern void cgit_object_link(struct object *obj);
24
25extern void cgit_print_error(char *msg);
26extern void cgit_print_date(time_t secs, char *format);
27extern void cgit_print_age(time_t t, time_t max_relative, char *format);
28extern void cgit_print_http_headers(struct cgit_context *ctx);
29extern void cgit_print_docstart(struct cgit_context *ctx);
30extern void cgit_print_docend();
31extern void cgit_print_pageheader(struct cgit_context *ctx);
32extern void cgit_print_filemode(unsigned short mode);
33extern 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
12static int write_compressed_tar_archive(struct archiver_args *args,const char *filter) 13static 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
diff --git a/ui-tag.c b/ui-tag.c
index 2998d02..ab2c66d 100644
--- a/ui-tag.c
+++ b/ui-tag.c
@@ -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
12static void print_tag_content(char *buf) 13static 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
32void cgit_print_tag(char *revname) 33void cgit_print_tag(char *revname)
33{ 34{
34 unsigned char sha1[20]; 35 unsigned char sha1[20];
diff --git a/ui-tree.c b/ui-tree.c
index 7912784..9be3140 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -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
12char *curr_rev; 13char *curr_rev;
13char *match_path; 14char *match_path;
14int header = 0; 15int header = 0;
15 16
16static void print_object(const unsigned char *sha1, char *path) 17static 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;