mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-06-01 21:18:38 +03:00
crash: prefer XDG cache dir if available
This commit is contained in:
@ -101,10 +101,23 @@ fn initThread(gpa: Allocator) !void {
|
||||
sentry.c.sentry_options_set_before_send(opts, beforeSend, null);
|
||||
|
||||
// Determine the Sentry cache directory.
|
||||
const cache_dir = if (builtin.os.tag == .macos)
|
||||
try internal_os.macos.cacheDir(alloc, "sentry")
|
||||
else
|
||||
try internal_os.xdg.cache(alloc, .{ .subdir = "ghostty/sentry" });
|
||||
const cache_dir = cache_dir: {
|
||||
// On macOS, we prefer to use the NSCachesDirectory value to be
|
||||
// a more idiomatic macOS application. But if XDG env vars are set
|
||||
// we will respect them.
|
||||
if (comptime builtin.os.tag == .macos) macos: {
|
||||
if (std.posix.getenv("XDG_CACHE_HOME") != null) break :macos;
|
||||
break :cache_dir try internal_os.macos.cacheDir(
|
||||
alloc,
|
||||
"sentry",
|
||||
);
|
||||
}
|
||||
|
||||
break :cache_dir try internal_os.xdg.cache(
|
||||
alloc,
|
||||
.{ .subdir = "ghostty/sentry" },
|
||||
);
|
||||
};
|
||||
sentry.c.sentry_options_set_database_path_n(
|
||||
opts,
|
||||
cache_dir.ptr,
|
||||
|
@ -25,10 +25,11 @@ pub fn appSupportDir(
|
||||
alloc: Allocator,
|
||||
sub_path: []const u8,
|
||||
) AppSupportDirError![]const u8 {
|
||||
return try makeCommonPath(alloc, .NSApplicationSupportDirectory, &.{
|
||||
build_config.bundle_id,
|
||||
sub_path,
|
||||
});
|
||||
return try commonDir(
|
||||
alloc,
|
||||
.NSApplicationSupportDirectory,
|
||||
&.{ build_config.bundle_id, sub_path },
|
||||
);
|
||||
}
|
||||
|
||||
pub const CacheDirError = Allocator.Error || error{AppleAPIFailed};
|
||||
@ -39,10 +40,11 @@ pub fn cacheDir(
|
||||
alloc: Allocator,
|
||||
sub_path: []const u8,
|
||||
) CacheDirError![]const u8 {
|
||||
return try makeCommonPath(alloc, .NSCachesDirectory, &.{
|
||||
build_config.bundle_id,
|
||||
sub_path,
|
||||
});
|
||||
return try commonDir(
|
||||
alloc,
|
||||
.NSCachesDirectory,
|
||||
&.{ build_config.bundle_id, sub_path },
|
||||
);
|
||||
}
|
||||
|
||||
pub const SetQosClassError = error{
|
||||
@ -101,7 +103,7 @@ pub const NSSearchPathDomainMask = enum(c_ulong) {
|
||||
NSUserDomainMask = 1,
|
||||
};
|
||||
|
||||
fn makeCommonPath(
|
||||
fn commonDir(
|
||||
alloc: Allocator,
|
||||
directory: NSSearchPathDirectory,
|
||||
sub_paths: []const []const u8,
|
||||
|
Reference in New Issue
Block a user