| ... | @@ -87,6 +87,13 @@ pub fn resolveGlobalCacheDir(allocator: *mem.Allocator) ![]u8 { | ... | @@ -87,6 +87,13 @@ pub fn resolveGlobalCacheDir(allocator: *mem.Allocator) ![]u8 { |
| 87 | return fs.getAppDataDir(allocator, appname); | 87 | return fs.getAppDataDir(allocator, appname); |
| 88 | } | 88 | } |
| 89 | | 89 | |
| | 90 | pub fn openGlobalCacheDir() !fs.Dir { |
| | 91 | var buf: [fs.MAX_PATH_BYTES]u8 = undefined; |
| | 92 | var fba = std.heap.FixedBufferAllocator.init(&buf); |
| | 93 | const path_name = try resolveGlobalCacheDir(&fba.allocator); |
| | 94 | return fs.cwd().makeOpenPath(path_name, .{}); |
| | 95 | } |
| | 96 | |
| 90 | var compiler_id_mutex = std.Mutex{}; | 97 | var compiler_id_mutex = std.Mutex{}; |
| 91 | var compiler_id: [16]u8 = undefined; | 98 | var compiler_id: [16]u8 = undefined; |
| 92 | var compiler_id_computed = false; | 99 | var compiler_id_computed = false; |
| ... | @@ -99,11 +106,7 @@ pub fn resolveCompilerId(gpa: *mem.Allocator) ![16]u8 { | ... | @@ -99,11 +106,7 @@ pub fn resolveCompilerId(gpa: *mem.Allocator) ![16]u8 { |
| 99 | return compiler_id; | 106 | return compiler_id; |
| 100 | compiler_id_computed = true; | 107 | compiler_id_computed = true; |
| 101 | | 108 | |
| 102 | const global_cache_dir = try resolveGlobalCacheDir(gpa); | 109 | var cache_dir = try openGlobalCacheDir(); |
| 103 | defer gpa.free(global_cache_dir); | | |
| 104 | | | |
| 105 | // TODO Introduce openGlobalCacheDir which returns a dir handle rather than a string. | | |
| 106 | var cache_dir = try fs.cwd().openDir(global_cache_dir, .{}); | | |
| 107 | defer cache_dir.close(); | 110 | defer cache_dir.close(); |
| 108 | | 111 | |
| 109 | var ch = try CacheHash.init(gpa, cache_dir, "exe"); | 112 | var ch = try CacheHash.init(gpa, cache_dir, "exe"); |