all repos — cgit @ c1633c6befb6762e1ac9434a29980e4df5ffee21

a hyperfast web frontend for git written in c

Update git to v1.7.6.5

struct pathspec is now used in more places.

Signed-off-by: John Keeping <john@keeping.me.uk>
John Keeping john@keeping.me.uk
Sat, 02 Mar 2013 12:32:11 +0000
commit

c1633c6befb6762e1ac9434a29980e4df5ffee21

parent

bfc14d067da0fdf65f306fcd9a65829d9694dbeb

3 files changed, 43 insertions(+), 12 deletions(-)

jump to
M ui-blob.cui-blob.c

@@ -32,7 +32,14 @@ enum object_type type;

char *buf; unsigned long size; struct commit *commit; - const char *paths[] = {path, NULL}; + struct pathspec_item path_items = { + .match = path, + .len = strlen(path) + }; + struct pathspec paths = { + .nr = 1, + .items = &path_items + }; if (get_sha1(head, sha1)) return -1; type = sha1_object_info(sha1, &size);

@@ -41,7 +48,7 @@ commit = lookup_commit_reference(sha1);

match_path = path; matched_sha1 = sha1; found_path = 0; - read_tree_recursive(commit->tree, "", 0, 0, paths, walk_tree, NULL); + read_tree_recursive(commit->tree, "", 0, 0, &paths, walk_tree, NULL); if (!found_path) return -1; type = sha1_object_info(sha1, &size);

@@ -63,7 +70,14 @@ enum object_type type;

char *buf; unsigned long size; struct commit *commit; - const char *paths[] = {path, NULL}; + struct pathspec_item path_items = { + .match = path, + .len = strlen(path) + }; + struct pathspec paths = { + .nr = 1, + .items = &path_items + }; if (hex) { if (get_sha1_hex(hex, sha1)){

@@ -83,7 +97,7 @@ if((!hex) && type == OBJ_COMMIT && path) {

commit = lookup_commit_reference(sha1); match_path = path; matched_sha1 = sha1; - read_tree_recursive(commit->tree, "", 0, 0, paths, walk_tree, NULL); + read_tree_recursive(commit->tree, "", 0, 0, &paths, walk_tree, NULL); type = sha1_object_info(sha1,&size); }
M ui-plain.cui-plain.c

@@ -197,7 +197,14 @@ {

const char *rev = ctx->qry.sha1; unsigned char sha1[20]; struct commit *commit; - const char *paths[] = {ctx->qry.path, NULL}; + struct pathspec_item path_items = { + .match = ctx->qry.path, + .len = ctx->qry.path ? strlen(ctx->qry.path) : 0 + }; + struct pathspec paths = { + .nr = 1, + .items = &path_items + }; if (!rev) rev = ctx->qry.head;

@@ -211,14 +218,14 @@ if (!commit || parse_commit(commit)) {

html_status(404, "Not found", 0); return; } - if (!paths[0]) { - paths[0] = ""; + if (!path_items.match) { + path_items.match = ""; match_baselen = -1; print_dir(commit->tree->object.sha1, "", 0, ""); } else - match_baselen = basedir_len(paths[0]); - read_tree_recursive(commit->tree, "", 0, 0, paths, walk_tree, NULL); + match_baselen = basedir_len(path_items.match); + read_tree_recursive(commit->tree, "", 0, 0, &paths, walk_tree, NULL); if (!match) html_status(404, "Not found", 0); else if (match == 2)
M ui-tree.cui-tree.c

@@ -202,6 +202,9 @@

static void ls_tree(const unsigned char *sha1, char *path) { struct tree *tree; + struct pathspec paths = { + .nr = 0 + }; tree = parse_tree_indirect(sha1); if (!tree) {

@@ -211,7 +214,7 @@ return;

} ls_head(); - read_tree_recursive(tree, "", 0, 1, NULL, ls_item, NULL); + read_tree_recursive(tree, "", 0, 1, &paths, ls_item, NULL); ls_tail(); }

@@ -252,7 +255,14 @@ void cgit_print_tree(const char *rev, char *path)

{ unsigned char sha1[20]; struct commit *commit; - const char *paths[] = {path, NULL}; + struct pathspec_item path_items = { + .match = path, + .len = path ? strlen(path) : 0 + }; + struct pathspec paths = { + .nr = path ? 1 : 0, + .items = &path_items + }; if (!rev) rev = ctx.qry.head;

@@ -274,6 +284,6 @@ return;

} match_path = path; - read_tree_recursive(commit->tree, "", 0, 0, paths, walk_tree, NULL); + read_tree_recursive(commit->tree, "", 0, 0, &paths, walk_tree, NULL); ls_tail(); }