aboutsummaryrefslogtreecommitdiff
path: root/lib/std/fs.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-09-01 10:13:04 +0200
committerGitHub <noreply@github.com>2023-09-01 10:13:04 +0200
commit5dc2db80554d2b50075ee7e9a9ee2ddf67e25a74 (patch)
treedeadbb575daaa4822d15d7f3d43e46b19ab3945a /lib/std/fs.zig
parent43b27d47c98e0ada00db828ddf410372c6ded66a (diff)
parent01f9cdd21a8f18941636c061a5985a040e4a4bcd (diff)
downloadzig-5dc2db80554d2b50075ee7e9a9ee2ddf67e25a74.tar.gz
zig-5dc2db80554d2b50075ee7e9a9ee2ddf67e25a74.zip
Merge pull request #17029 from squeek502/wasi-statFile-libc
Fix `Dir.statFile` for WASI when linking libc
Diffstat (limited to 'lib/std/fs.zig')
-rw-r--r--lib/std/fs.zig24
1 files changed, 10 insertions, 14 deletions
diff --git a/lib/std/fs.zig b/lib/std/fs.zig
index 4a0f37b855..6e91f3d591 100644
--- a/lib/std/fs.zig
+++ b/lib/std/fs.zig
@@ -2653,21 +2653,17 @@ pub const Dir = struct {
///
/// `sub_path` may be absolute, in which case `self` is ignored.
pub fn statFile(self: Dir, sub_path: []const u8) StatFileError!Stat {
- switch (builtin.os.tag) {
- .windows => {
- var file = try self.openFile(sub_path, .{});
- defer file.close();
- return file.stat();
- },
- .wasi => {
- const st = try os.fstatatWasi(self.fd, sub_path, os.wasi.LOOKUP_SYMLINK_FOLLOW);
- return Stat.fromSystem(st);
- },
- else => {
- const st = try os.fstatat(self.fd, sub_path, 0);
- return Stat.fromSystem(st);
- },
+ if (builtin.os.tag == .windows) {
+ var file = try self.openFile(sub_path, .{});
+ defer file.close();
+ return file.stat();
+ }
+ if (builtin.os.tag == .wasi and !builtin.link_libc) {
+ const st = try os.fstatatWasi(self.fd, sub_path, os.wasi.LOOKUP_SYMLINK_FOLLOW);
+ return Stat.fromSystem(st);
}
+ const st = try os.fstatat(self.fd, sub_path, 0);
+ return Stat.fromSystem(st);
}
const Permissions = File.Permissions;