From 81759fa57aa895d67da6b8c875dbc63cf66074b4 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Sat, 22 Mar 2025 23:53:46 +0800 Subject: [PATCH 1/2] Use makePath to create any missing intermediate directories for app dir https://github.com/lightpanda-io/browser/issues/486 --- src/app.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app.zig b/src/app.zig index 94883b65..0385fece 100644 --- a/src/app.zig +++ b/src/app.zig @@ -67,7 +67,7 @@ fn getAndMakeAppDir(allocator: Allocator) ?[]const u8 { return null; }; - std.fs.makeDirAbsolute(app_dir_path) catch |err| switch (err) { + std.fs.cwd().makePath(app_dir_path) catch |err| switch (err) { error.PathAlreadyExists => return app_dir_path, else => { allocator.free(app_dir_path); From 3d6dd06b99b6179688cd3de9c5f47af20a48460b Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Sat, 22 Mar 2025 23:58:57 +0800 Subject: [PATCH 2/2] Generate non-persisted iid if app_path is null --- src/telemetry/telemetry.zig | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/telemetry/telemetry.zig b/src/telemetry/telemetry.zig index 126f7ab0..9143be7d 100644 --- a/src/telemetry/telemetry.zig +++ b/src/telemetry/telemetry.zig @@ -60,7 +60,11 @@ fn TelemetryT(comptime P: type) type { } fn getOrCreateId(app_dir_path_: ?[]const u8) ?[36]u8 { - const app_dir_path = app_dir_path_ orelse return null; + const app_dir_path = app_dir_path_ orelse { + var id: [36]u8 = undefined; + uuidv4(&id); + return id; + }; var buf: [37]u8 = undefined; var dir = std.fs.openDirAbsolute(app_dir_path, .{}) catch |err| { @@ -146,6 +150,10 @@ test "telemetry: getOrCreateId" { std.fs.cwd().deleteFile("/tmp/" ++ IID_FILE) catch {}; const id3 = getOrCreateId("/tmp/").?; try testing.expectEqual(false, std.mem.eql(u8, &id1, &id3)); + + const id4 = getOrCreateId(null).?; + try testing.expectEqual(false, std.mem.eql(u8, &id1, &id4)); + try testing.expectEqual(false, std.mem.eql(u8, &id3, &id4)); } test "telemetry: sends event to provider" {