]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-tree.c
ui-tree: replace 'unsigned char sha1[20]' with 'struct object_id oid'
[ps-cgit] / ui-tree.c
index 5c31e6abe426cf91d68f9e695a5064209e80467f..b310242283e40f096d301a4b6c83a68577a30d45 100644 (file)
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -324,22 +324,25 @@ static int walk_tree(const unsigned char *sha1, struct strbuf *base,
                const char *pathname, unsigned mode, int stage, void *cbdata)
 {
        struct walk_tree_context *walk_tree_ctx = cbdata;
-       static char buffer[PATH_MAX];
 
        if (walk_tree_ctx->state == 0) {
-               memcpy(buffer, base->buf, base->len);
-               strcpy(buffer + base->len, pathname);
-               if (strcmp(walk_tree_ctx->match_path, buffer))
+               struct strbuf buffer = STRBUF_INIT;
+
+               strbuf_addbuf(&buffer, base);
+               strbuf_addstr(&buffer, pathname);
+               if (strcmp(walk_tree_ctx->match_path, buffer.buf))
                        return READ_TREE_RECURSIVE;
 
                if (S_ISDIR(mode)) {
                        walk_tree_ctx->state = 1;
-                       set_title_from_path(buffer);
+                       set_title_from_path(buffer.buf);
+                       strbuf_release(&buffer);
                        ls_head();
                        return READ_TREE_RECURSIVE;
                } else {
                        walk_tree_ctx->state = 2;
-                       print_object(sha1, buffer, pathname, walk_tree_ctx->curr_rev);
+                       print_object(sha1, buffer.buf, pathname, walk_tree_ctx->curr_rev);
+                       strbuf_release(&buffer);
                        return 0;
                }
        }
@@ -354,7 +357,7 @@ static int walk_tree(const unsigned char *sha1, struct strbuf *base,
  */
 void cgit_print_tree(const char *rev, char *path)
 {
-       unsigned char sha1[20];
+       struct object_id oid;
        struct commit *commit;
        struct pathspec_item path_items = {
                .match = path,
@@ -372,12 +375,12 @@ void cgit_print_tree(const char *rev, char *path)
        if (!rev)
                rev = ctx.qry.head;
 
-       if (get_sha1(rev, sha1)) {
+       if (get_oid(rev, &oid)) {
                cgit_print_error_page(404, "Not found",
                        "Invalid revision name: %s", rev);
                return;
        }
-       commit = lookup_commit_reference(sha1);
+       commit = lookup_commit_reference(oid.hash);
        if (!commit || parse_commit(commit)) {
                cgit_print_error_page(404, "Not found",
                        "Invalid commit reference: %s", rev);