zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 482343f2e253f2078627e696fb98ff0e1d8e82df (tree)
parent f98352eecf1db704b0e59ced1c6741734c3990ac
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Sun, 19 Oct 2025 20:48:24 -0700

std.Io.Threaded: implement dirStatPath for Windows

Diffstat:
Mlib/std/Io/Threaded.zig | 17++++++++++++++++-
Mlib/std/fs/Dir.zig | 5-----
2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig @@ -171,7 +171,7 @@ pub fn io(t: *Threaded) Io { .dirStat = dirStat, .dirStatPath = switch (builtin.os.tag) { .linux => dirStatPathLinux, - .windows => @panic("TODO"), + .windows => dirStatPathWindows, .wasi => dirStatPathWasi, else => dirStatPathPosix, }, @@ -1079,6 +1079,21 @@ fn dirStatPathPosix( } } +fn dirStatPathWindows( + userdata: ?*anyopaque, + dir: Io.Dir, + sub_path: []const u8, + options: Io.Dir.StatPathOptions, +) Io.Dir.StatPathError!Io.File.Stat { + const t: *Threaded = @ptrCast(@alignCast(userdata)); + const t_io = t.io(); + var file = try dir.openFile(t_io, sub_path, .{ + .follow_symlinks = options.follow_symlinks, + }); + defer file.close(t_io); + return file.stat(t_io); +} + fn dirStatPathWasi( userdata: ?*anyopaque, dir: Io.Dir, diff --git a/lib/std/fs/Dir.zig b/lib/std/fs/Dir.zig @@ -2332,11 +2332,6 @@ pub const StatFileError = File.OpenError || File.StatError || posix.FStatAtError /// Deprecated in favor of `Io.Dir.statPath`. pub fn statFile(self: Dir, sub_path: []const u8) StatFileError!Stat { - if (native_os == .windows) { - var file = try self.openFile(sub_path, .{}); - defer file.close(); - return file.stat(); - } var threaded: Io.Threaded = .init_single_threaded; const io = threaded.io(); return Io.Dir.statPath(.{ .handle = self.fd }, io, sub_path, .{});