about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--cmd.c2
-rw-r--r--ui-commit.c2
-rw-r--r--ui-patch.c6
-rw-r--r--ui-patch.h2
-rw-r--r--ui-shared.c4
-rw-r--r--ui-shared.h2
6 files changed, 10 insertions, 8 deletions
diff --git a/cmd.c b/cmd.c
index 893ae25..605876b 100644
--- a/cmd.c
+++ b/cmd.c
@@ -90,7 +90,7 @@ static void repolist_fn(struct cgit_context *ctx)
 
 static void patch_fn(struct cgit_context *ctx)
 {
-	cgit_print_patch(ctx->qry.sha1);
+	cgit_print_patch(ctx->qry.sha1, ctx->qry.path);
 }
 
 static void plain_fn(struct cgit_context *ctx)
diff --git a/ui-commit.c b/ui-commit.c
index 2f4c6d4..b3a2063 100644
--- a/ui-commit.c
+++ b/ui-commit.c
@@ -60,7 +60,7 @@ void cgit_print_commit(char *hex, const char *prefix)
 	tmp = sha1_to_hex(commit->object.sha1);
 	cgit_commit_link(tmp, NULL, NULL, ctx.qry.head, tmp, 0);
 	html(" (");
-	cgit_patch_link("patch", NULL, NULL, NULL, tmp);
+	cgit_patch_link("patch", NULL, NULL, NULL, tmp, prefix);
 	html(") (");
 	if ((ctx.qry.ssdiff && !ctx.cfg.ssdiff) || (!ctx.qry.ssdiff && ctx.cfg.ssdiff))
 		cgit_commit_link("unidiff", NULL, NULL, ctx.qry.head, tmp, 1);
diff --git a/ui-patch.c b/ui-patch.c
index 2a8f7a5..25dc9fe 100644
--- a/ui-patch.c
+++ b/ui-patch.c
@@ -77,7 +77,7 @@ static void filepair_cb(struct diff_filepair *pair)
 		html("Binary files differ\n");
 }
 
-void cgit_print_patch(char *hex)
+void cgit_print_patch(char *hex, const char *prefix)
 {
 	struct commit *commit;
 	struct commitinfo *info;
@@ -122,7 +122,9 @@ void cgit_print_patch(char *hex)
 			html("\n");
 	}
 	html("---\n");
-	cgit_diff_tree(old_sha1, sha1, filepair_cb, NULL);
+	if (prefix)
+		htmlf("(limited to '%s')\n\n", prefix);
+	cgit_diff_tree(old_sha1, sha1, filepair_cb, prefix);
 	html("--\n");
 	htmlf("cgit %s\n", CGIT_VERSION);
 	cgit_free_commitinfo(info);
diff --git a/ui-patch.h b/ui-patch.h
index 9f68212..1641cea 100644
--- a/ui-patch.h
+++ b/ui-patch.h
@@ -1,6 +1,6 @@
 #ifndef UI_PATCH_H
 #define UI_PATCH_H
 
-extern void cgit_print_patch(char *hex);
+extern void cgit_print_patch(char *hex, const char *prefix);
 
 #endif /* UI_PATCH_H */
diff --git a/ui-shared.c b/ui-shared.c
index 4fa506f..d5c4c10 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -388,9 +388,9 @@ void cgit_diff_link(const char *name, const char *title, const char *class,
 }
 
 void cgit_patch_link(const char *name, const char *title, const char *class,
-		     const char *head, const char *rev)
+		     const char *head, const char *rev, const char *path)
 {
-	reporevlink("patch", name, title, class, head, rev, NULL);
+	reporevlink("patch", name, title, class, head, rev, path);
 }
 
 void cgit_stats_link(const char *name, const char *title, const char *class,
diff --git a/ui-shared.h b/ui-shared.h
index 3df5464..c0e5c55 100644
--- a/ui-shared.h
+++ b/ui-shared.h
@@ -32,7 +32,7 @@ extern void cgit_commit_link(char *name, const char *title,
 			     const char *rev, int toggle_ssdiff);
 extern void cgit_patch_link(const char *name, const char *title,
 			    const char *class, const char *head,
-			    const char *rev);
+			    const char *rev, const char *path);
 extern void cgit_refs_link(const char *name, const char *title,
 			   const char *class, const char *head,
 			   const char *rev, const char *path);