aboutsummaryrefslogtreecommitdiff
path: root/git2d/session.c
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-04-05 11:19:17 +0800
committerRunxi Yu <me@runxiyu.org>2025-04-05 11:19:25 +0800
commitcde5824d3ddc0cec9c3a37f146b7075c3d4ffdd7 (patch)
treeabc33d625866a6ba007d9e67e02bd3633b6f7377 /git2d/session.c
parentgit2d: Note to pass integer instead of the string (diff)
downloadforge-cde5824d3ddc0cec9c3a37f146b7075c3d4ffdd7.tar.gz
forge-cde5824d3ddc0cec9c3a37f146b7075c3d4ffdd7.tar.zst
forge-cde5824d3ddc0cec9c3a37f146b7075c3d4ffdd7.zip
git2d: Accept an uint command
Diffstat (limited to 'git2d/session.c')
-rw-r--r--git2d/session.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/git2d/session.c b/git2d/session.c
index 8627428..8cfe8fc 100644
--- a/git2d/session.c
+++ b/git2d/session.c
@@ -37,10 +37,27 @@ session(void *_conn)
goto close;
}
+ uint64_t cmd = 0;
+ err = bare_get_uint(&reader, &cmd);
+ if (err != BARE_ERROR_NONE) {
+ bare_put_uint(&writer, 2);
+ goto free_repo;
+ }
+ switch (cmd) {
+ case 1:
+ break;
+ case 0:
+ bare_put_uint(&writer, 3);
+ goto free_repo;
+ default:
+ bare_put_uint(&writer, 3);
+ goto free_repo;
+ }
+
git_object *obj = NULL;
err = git_revparse_single(&obj, repo, "HEAD^{tree}");
if (err != 0) {
- bare_put_uint(&writer, 2);
+ bare_put_uint(&writer, 4);
goto free_repo;
}
git_tree *tree = (git_tree *) obj;
@@ -50,27 +67,27 @@ session(void *_conn)
git_tree_entry *entry = NULL;
err = git_tree_entry_bypath(&entry, tree, "README.md");
if (err != 0) {
- bare_put_uint(&writer, 3);
+ bare_put_uint(&writer, 5);
goto free_tree;
}
git_otype objtype = git_tree_entry_type(entry);
if (objtype != GIT_OBJECT_BLOB) {
- bare_put_uint(&writer, 4);
+ bare_put_uint(&writer, 6);
goto free_tree_entry;
}
git_object *obj2 = NULL;
err = git_tree_entry_to_object(&obj2, repo, entry);
if (err != 0) {
- bare_put_uint(&writer, 5);
+ bare_put_uint(&writer, 7);
goto free_tree_entry;
}
git_blob *blob = (git_blob *) obj2;
const void *content = git_blob_rawcontent(blob);
if (content == NULL) {
- bare_put_uint(&writer, 6);
+ bare_put_uint(&writer, 8);
goto free_blob;
}
@@ -81,12 +98,12 @@ session(void *_conn)
git_revwalk *walker = NULL;
if (git_revwalk_new(&walker, repo) != 0) {
- bare_put_uint(&writer, 7);
+ bare_put_uint(&writer, 9);
goto free_blob;
}
if (git_revwalk_push_head(walker) != 0) {
- bare_put_uint(&writer, 8);
+ bare_put_uint(&writer, 9);
goto free_blob;
}