From 46b7abed99e957008c01c02cf612aa526ba92f04 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Fri, 31 Jul 2009 16:55:27 +0200 Subject: ui-tree: add support for source-filter option This new option is used to specify an external command which will be executed when displaying blob content in the tree view. Blob content will be written to STDIN of the filter and STDOUT from the filter will be included verbatim in the html output from cgit. The file name of the blob will be passed as the only argument to the filter command. Signed-off-by: Lars Hjemli --- ui-tree.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'ui-tree.c') diff --git a/ui-tree.c b/ui-tree.c index 553dbaa..816e121 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -15,13 +15,23 @@ char *curr_rev; char *match_path; int header = 0; -static void print_text_buffer(char *buf, unsigned long size) +static void print_text_buffer(const char *name, char *buf, unsigned long size) { unsigned long lineno, idx; const char *numberfmt = "%1$d\n"; html("\n"); + if (ctx.cfg.source_filter) { + html("
");
+		ctx.cfg.source_filter->argv[1] = xstrdup(name);
+		cgit_open_filter(ctx.cfg.source_filter);
+		write(STDOUT_FILENO, buf, size);
+		cgit_close_filter(ctx.cfg.source_filter);
+		html("
\n"); + return; + } + html("
");
 	idx = 0;
 	lineno = 0;
@@ -65,7 +75,7 @@ static void print_binary_buffer(char *buf, unsigned long size)
 	html("\n");
 }
 
-static void print_object(const unsigned char *sha1, char *path)
+static void print_object(const unsigned char *sha1, char *path, const char *basename)
 {
 	enum object_type type;
 	char *buf;
@@ -93,7 +103,7 @@ static void print_object(const unsigned char *sha1, char *path)
 	if (buffer_is_binary(buf, size))
 		print_binary_buffer(buf, size);
 	else
-		print_text_buffer(buf, size);
+		print_text_buffer(basename, buf, size);
 }
 
 
@@ -213,7 +223,7 @@ static int walk_tree(const unsigned char *sha1, const char *base, int baselen,
 			ls_head();
 			return READ_TREE_RECURSIVE;
 		} else {
-			print_object(sha1, buffer);
+			print_object(sha1, buffer, pathname);
 			return 0;
 		}
 	}
-- 
cgit v1.2.3-24-g4f1b


From e976df27952ca1e450c1c3d420532ac9f5e3036b Mon Sep 17 00:00:00 2001
From: Lars Hjemli 
Date: Sun, 9 Aug 2009 13:22:00 +0200
Subject: Add support for repo.commit-filter and repo.source-filter

These options can be used to override the default commit- and source-
filter settings per repository.

Signed-off-by: Lars Hjemli 
---
 ui-tree.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

(limited to 'ui-tree.c')

diff --git a/ui-tree.c b/ui-tree.c
index 816e121..caf6a9e 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -22,12 +22,12 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size)
 		"%1$d\n";
 
 	html("\n");
-	if (ctx.cfg.source_filter) {
+	if (ctx.repo->source_filter) {
 		html("
");
-		ctx.cfg.source_filter->argv[1] = xstrdup(name);
-		cgit_open_filter(ctx.cfg.source_filter);
+		ctx.repo->source_filter->argv[1] = xstrdup(name);
+		cgit_open_filter(ctx.repo->source_filter);
 		write(STDOUT_FILENO, buf, size);
-		cgit_close_filter(ctx.cfg.source_filter);
+		cgit_close_filter(ctx.repo->source_filter);
 		html("
\n"); return; } -- cgit v1.2.3-24-g4f1b