summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--ui-plain.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ui-plain.c b/ui-plain.c
index 5addd9e..e08b15b 100644
--- a/ui-plain.c
+++ b/ui-plain.c
@@ -37,25 +37,26 @@ static void print_object(const unsigned char *sha1, const char *path)
37 cgit_print_http_headers(&ctx); 37 cgit_print_http_headers(&ctx);
38 html_raw(buf, size); 38 html_raw(buf, size);
39 match = 1; 39 match = 1;
40} 40}
41 41
42static int walk_tree(const unsigned char *sha1, const char *base, int baselen, 42static int walk_tree(const unsigned char *sha1, const char *base, int baselen,
43 const char *pathname, unsigned mode, int stage, 43 const char *pathname, unsigned mode, int stage,
44 void *cbdata) 44 void *cbdata)
45{ 45{
46 if (S_ISDIR(mode)) 46 if (S_ISDIR(mode))
47 return READ_TREE_RECURSIVE; 47 return READ_TREE_RECURSIVE;
48 48
49 if (S_ISREG(mode)) 49 if (S_ISREG(mode) && !strncmp(base, match_path, baselen) &&
50 !strcmp(pathname, match_path + baselen))
50 print_object(sha1, pathname); 51 print_object(sha1, pathname);
51 52
52 return 0; 53 return 0;
53} 54}
54 55
55void cgit_print_plain(struct cgit_context *ctx) 56void cgit_print_plain(struct cgit_context *ctx)
56{ 57{
57 const char *rev = ctx->qry.sha1; 58 const char *rev = ctx->qry.sha1;
58 unsigned char sha1[20]; 59 unsigned char sha1[20];
59 struct commit *commit; 60 struct commit *commit;
60 const char *paths[] = {ctx->qry.path, NULL}; 61 const char *paths[] = {ctx->qry.path, NULL};
61 62