From 589269c0b3ca74a29f5889fa6e781e59cef7efdb Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Thu, 2 Jul 2026 21:56:01 -0300 Subject: wasm replay ui --- dump.zig | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'dump.zig') diff --git a/dump.zig b/dump.zig index 5a55f04f..9c1dceec 100644 --- a/dump.zig +++ b/dump.zig @@ -1,4 +1,5 @@ const std = @import("std"); +const builtin = @import("builtin"); pub const default_path = "/tmp/pardes-dump.zon"; pub const magic = "pardes-dump"; @@ -104,13 +105,30 @@ pub fn writeFile(io: std.Io, gpa: std.mem.Allocator, path: []const u8, state: St pub fn readFile(io: std.Io, gpa: std.mem.Allocator, path: []const u8) !State { const bytes = try std.Io.Dir.cwd().readFileAlloc(io, path, gpa, .limited(64 * 1024 * 1024)); defer gpa.free(bytes); + return readZon(gpa, bytes, path); +} + +pub fn readZon(gpa: std.mem.Allocator, bytes: []const u8, label: []const u8) !State { const source = try gpa.dupeZ(u8, bytes); defer gpa.free(source); + return readZonZ(gpa, source, label); +} + +pub fn readZonZ(gpa: std.mem.Allocator, source: [:0]const u8, label: []const u8) !State { + if (builtin.os.tag == .emscripten) { + const state = std.zon.parse.fromSliceAlloc(State, gpa, source, null, .{}) catch |err| { + std.log.err("parse dump {s}: {s}", .{ label, @errorName(err) }); + return err; + }; + errdefer std.zon.parse.free(gpa, state); + try validate(state); + return state; + } var diag: std.zon.parse.Diagnostics = .{}; defer diag.deinit(gpa); const state = std.zon.parse.fromSliceAlloc(State, gpa, source, &diag, .{}) catch |err| { - std.log.err("parse dump {s}: {f}", .{ path, diag }); + std.log.err("parse dump {s}: {f}", .{ label, diag }); return err; }; errdefer std.zon.parse.free(gpa, state); -- cgit v1.3