| ... | @@ -232,22 +232,10 @@ fn parseCommitUserAndAt(input: string) !Commit.UserAndAt { | ... | @@ -232,22 +232,10 @@ fn parseCommitUserAndAt(input: string) !Commit.UserAndAt { |
| 232 | const name = name_part; | 232 | const name = name_part; |
| 233 | const email = std.mem.trim(u8, email_part, "<>"); | 233 | const email = std.mem.trim(u8, email_part, "<>"); |
| 234 | const at = time.DateTime.initUnix(try std.fmt.parseInt(u64, time_part, 10)); | 234 | const at = time.DateTime.initUnix(try std.fmt.parseInt(u64, time_part, 10)); |
| 235 | const email_md5 = blk: { | | |
| 236 | const Algo = std.crypto.hash.Md5; | | |
| 237 | var h = Algo.init(.{}); | | |
| 238 | var out: [Algo.digest_length]u8 = undefined; | | |
| 239 | h.update(email); | | |
| 240 | h.final(&out); | | |
| 241 | var res: [Algo.digest_length * 2]u8 = undefined; | | |
| 242 | var fbs = std.io.fixedBufferStream(&res); | | |
| 243 | try std.fmt.format(fbs.writer(), "{x}", .{std.fmt.fmtSliceHexLower(&out)}); | | |
| 244 | break :blk res; | | |
| 245 | }; | | |
| 246 | | 235 | |
| 247 | return .{ | 236 | return .{ |
| 248 | .name = name, | 237 | .name = name, |
| 249 | .email = email, | 238 | .email = email, |
| 250 | .email_md5 = email_md5, | | |
| 251 | .at = at, | 239 | .at = at, |
| 252 | }; | 240 | }; |
| 253 | } | 241 | } |
| ... | @@ -262,7 +250,6 @@ pub const Commit = struct { | ... | @@ -262,7 +250,6 @@ pub const Commit = struct { |
| 262 | pub const UserAndAt = struct { | 250 | pub const UserAndAt = struct { |
| 263 | name: string, | 251 | name: string, |
| 264 | email: string, | 252 | email: string, |
| 265 | email_md5: [std.crypto.hash.Md5.digest_length * 2]u8, | | |
| 266 | at: time.DateTime, | 253 | at: time.DateTime, |
| 267 | }; | 254 | }; |
| 268 | }; | 255 | }; |