treesummaryrefslogcommitdiff
diff options
context:
space:
mode:
authorpatrick-scho2024-08-22 11:23:26 +0200
committerpatrick-scho2024-08-22 11:23:26 +0200
commitefdfc67c25639929fb63ef7f6e18474690546599 (patch)
tree25eccf2a4535e625220f8898028196c7842727b3
parent5fee30bf784534a6f8d62a8f9be70f3bd6471f66 (diff)
downloadziggit-efdfc67c25639929fb63ef7f6e18474690546599.tar.gz
ziggit-efdfc67c25639929fb63ef7f6e18474690546599.zip
Create type for object parse return enum
-rw-r--r--git.zig11
1 files changed, 9 insertions, 2 deletions
diff --git a/git.zig b/git.zig
index c45963e..37933c9 100644
--- a/git.zig
+++ b/git.zig
@@ -23,6 +23,11 @@ const Tree = std.ArrayList(TreeEntry);
const Blob = struct {
data: []u8,
};
+const ParsedObject = union(enum) {
+ c: Commit,
+ t: Tree,
+ b: Blob,
+};
const Object = struct {
kind: u3,
data: []u8,
@@ -33,7 +38,7 @@ const Object = struct {
.data = data,
};
}
- pub fn parse(self: Object, alloc: Alloc) !union(enum) { c: Commit, t: Tree, b: Blob } {
+ pub fn parse(self: Object, alloc: Alloc) !ParsedObject {
switch (self.kind) {
1 => {
const authorOffset = std.mem.indexOf(u8, self.data, "author ") orelse return error.InvalidCommitFormat;
@@ -350,7 +355,9 @@ const PackFile = struct {
const pckReader = self.pckFile.reader().any();
try self.pckFile.seekTo(offset);
- return try self.readObject(pckReader);
+ const o = try self.readObject(pckReader);
+
+ return o;
}
return null;
}