authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-05-29 13:18:10 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-05-29 13:18:10 -07:00
logef7e2dfec90b7189ea59deb3ba464494f1793bf3
tree04241b431bce5cffc98067430553f952da0acccc
parentf06b9b6a9d5a3f467e68bf9a845e3f0df950baa0

add UserAndAt.email_md5


1 files changed, 20 insertions(+), 3 deletions(-)

git.zig+20-3
...@@ -178,10 +178,26 @@ fn parseCommitUserAndAt(input: string) !Commit.UserAndAt {...@@ -178,10 +178,26 @@ fn parseCommitUserAndAt(input: string) !Commit.UserAndAt {
178 _ = tz_part;178 _ = tz_part;
179 std.debug.assert(email_part[0] == '<');179 std.debug.assert(email_part[0] == '<');
180 std.debug.assert(email_part[email_part.len - 1] == '>');180 std.debug.assert(email_part[email_part.len - 1] == '>');
181 const name = name_part;
182 const email = std.mem.trim(u8, email_part, "<>");
183 const at = time.DateTime.initUnix(try std.fmt.parseInt(u64, time_part, 10));
184 const email_md5 = blk: {
185 const Algo = std.crypto.hash.Md5;
186 var h = Algo.init(.{});
187 var out: [Algo.digest_length]u8 = undefined;
188 h.update(email);
189 h.final(&out);
190 var res: [Algo.digest_length * 2]u8 = undefined;
191 var fbs = std.io.fixedBufferStream(&res);
192 try std.fmt.format(fbs.writer(), "{x}", .{std.fmt.fmtSliceHexLower(&out)});
193 break :blk res;
194 };
195
181 return .{196 return .{
182 .name = name_part,197 .name = name,
183 .email = std.mem.trim(u8, email_part, "<>"),198 .email = email,
184 .at = time.DateTime.initUnix(try std.fmt.parseInt(u64, time_part, 10)),199 .email_md5 = email_md5,
200 .at = at,
185 };201 };
186}202}
187203
...@@ -196,6 +212,7 @@ pub const Commit = struct {...@@ -196,6 +212,7 @@ pub const Commit = struct {
196 pub const UserAndAt = struct {212 pub const UserAndAt = struct {
197 name: string,213 name: string,
198 email: string,214 email: string,
215 email_md5: [std.crypto.hash.Md5.digest_length * 2]u8,
199 at: time.DateTime,216 at: time.DateTime,
200 };217 };
201};218};