X-Git-Url: https://git.cameronkatri.com/cgit.git/blobdiff_plain/1649afdc9b2febe9ab7e1abe1956c5dcaff93aa1..b73df8098f261ecbd4bc5ba689f9766a1a75f9a0:/ui-tree.c diff --git a/ui-tree.c b/ui-tree.c index 67fd1bc..e6b3074 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -84,30 +84,30 @@ static void print_binary_buffer(char *buf, unsigned long size) html("\n"); } -static void print_object(const unsigned char *sha1, char *path, const char *basename, const char *rev) +static void print_object(const struct object_id *oid, char *path, const char *basename, const char *rev) { enum object_type type; char *buf; unsigned long size; - type = sha1_object_info(sha1, &size); + type = oid_object_info(the_repository, oid, &size); if (type == OBJ_BAD) { cgit_print_error_page(404, "Not found", - "Bad object name: %s", sha1_to_hex(sha1)); + "Bad object name: %s", oid_to_hex(oid)); return; } - buf = read_sha1_file(sha1, &type, &size); + buf = read_object_file(oid, &type, &size); if (!buf) { cgit_print_error_page(500, "Internal server error", - "Error reading object %s", sha1_to_hex(sha1)); + "Error reading object %s", oid_to_hex(oid)); return; } cgit_set_title_from_path(path); cgit_print_layout_start(); - htmlf("blob: %s (", sha1_to_hex(sha1)); + htmlf("blob: %s (", oid_to_hex(oid)); cgit_plain_link("plain", NULL, NULL, ctx.qry.head, rev, path); if (ctx.cfg.enable_blame) { @@ -127,6 +127,8 @@ static void print_object(const unsigned char *sha1, char *path, const char *base print_binary_buffer(buf, size); else print_text_buffer(basename, buf, size); + + free(buf); } struct single_tree_ctx { @@ -136,7 +138,7 @@ struct single_tree_ctx { size_t count; }; -static int single_tree_cb(const unsigned char *sha1, struct strbuf *base, +static int single_tree_cb(const struct object_id *oid, struct strbuf *base, const char *pathname, unsigned mode, int stage, void *cbdata) { @@ -151,12 +153,12 @@ static int single_tree_cb(const unsigned char *sha1, struct strbuf *base, } ctx->name = xstrdup(pathname); - hashcpy(ctx->oid.hash, sha1); + oidcpy(&ctx->oid, oid); strbuf_addf(ctx->path, "/%s", pathname); return 0; } -static void write_tree_link(const unsigned char *sha1, char *name, +static void write_tree_link(const struct object_id *oid, char *name, char *rev, struct strbuf *fullpath) { size_t initial_length = fullpath->len; @@ -169,7 +171,7 @@ static void write_tree_link(const unsigned char *sha1, char *name, .nr = 0 }; - hashcpy(tree_ctx.oid.hash, sha1); + oidcpy(&tree_ctx.oid, oid); while (tree_ctx.count == 1) { cgit_tree_link(name, NULL, "ls-dir", ctx.qry.head, rev, @@ -196,7 +198,7 @@ static void write_tree_link(const unsigned char *sha1, char *name, strbuf_setlen(fullpath, initial_length); } -static int ls_item(const unsigned char *sha1, struct strbuf *base, +static int ls_item(const struct object_id *oid, struct strbuf *base, const char *pathname, unsigned mode, int stage, void *cbdata) { struct walk_tree_context *walk_tree_ctx = cbdata; @@ -211,11 +213,11 @@ static int ls_item(const unsigned char *sha1, struct strbuf *base, ctx.qry.path ? "/" : "", name); if (!S_ISGITLINK(mode)) { - type = sha1_object_info(sha1, &size); + type = oid_object_info(the_repository, oid, &size); if (type == OBJ_BAD) { htmlf("