diff options
author | 2021-06-12 00:49:46 -0700 | |
---|---|---|
committer | 2021-06-12 00:49:46 -0700 | |
commit | f43234bc300b7e9d9d572dc1b7d8e156ad01576a (patch) | |
tree | 8b49104e19295799d25bcb4a20f87029bc6fa306 /src/cache.zig | |
parent | 223410eab3c18be989e520a7aeac470bf941dd6b (diff) | |
download | bun-f43234bc300b7e9d9d572dc1b7d8e156ad01576a.tar.gz bun-f43234bc300b7e9d9d572dc1b7d8e156ad01576a.tar.zst bun-f43234bc300b7e9d9d572dc1b7d8e156ad01576a.zip |
little kqueue fs watcher
Former-commit-id: f93472101aa7338b3cdfc9db5c936d010f4cda82
Diffstat (limited to 'src/cache.zig')
-rw-r--r-- | src/cache.zig | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/cache.zig b/src/cache.zig index c28312fbf..07b4b152b 100644 --- a/src/cache.zig +++ b/src/cache.zig @@ -69,6 +69,7 @@ pub fn NewCache(comptime cache_files: bool) type { path: string, dirname_fd: StoredFileDescriptorType, comptime use_shared_buffer: bool, + _file_handle: ?StoredFileDescriptorType, ) !Entry { var rfs = _fs.fs; @@ -82,16 +83,18 @@ pub fn NewCache(comptime cache_files: bool) type { } } - var file_handle: std.fs.File = undefined; + var file_handle: std.fs.File = if (_file_handle) |__file| std.fs.File{ .handle = __file } else undefined; - if (FeatureFlags.store_file_descriptors and dirname_fd > 0) { - file_handle = try std.fs.Dir.openFile(std.fs.Dir{ .fd = dirname_fd }, std.fs.path.basename(path), .{ .read = true }); - } else { - file_handle = try std.fs.openFileAbsolute(path, .{ .read = true }); + if (_file_handle == null) { + if (FeatureFlags.store_file_descriptors and dirname_fd > 0) { + file_handle = try std.fs.Dir.openFile(std.fs.Dir{ .fd = dirname_fd }, std.fs.path.basename(path), .{ .read = true }); + } else { + file_handle = try std.fs.openFileAbsolute(path, .{ .read = true }); + } } defer { - if (rfs.needToCloseFiles()) { + if (rfs.needToCloseFiles() and _file_handle == null) { file_handle.close(); } } |