diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-06-20 22:09:47 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-06-20 22:09:47 -0400 |
| commit | faf783e5959a09fb2a1680f8bb7558db96dcbed9 (patch) | |
| tree | af5d6b5650fe48c56d22a38e54db74e3871c98a8 /lib/std/fs | |
| parent | 225f1968426d333834465dae526b3d2ae242cd8f (diff) | |
| download | zig-faf783e5959a09fb2a1680f8bb7558db96dcbed9.tar.gz zig-faf783e5959a09fb2a1680f8bb7558db96dcbed9.zip | |
implement new stat functionality for WASI
Diffstat (limited to 'lib/std/fs')
| -rw-r--r-- | lib/std/fs/file.zig | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/lib/std/fs/file.zig b/lib/std/fs/file.zig index f0304c332a..160f8314b9 100644 --- a/lib/std/fs/file.zig +++ b/lib/std/fs/file.zig @@ -282,15 +282,26 @@ pub const File = struct { .inode = st.ino, .size = @bitCast(u64, st.size), .mode = st.mode, - .kind = switch (st.mode & os.S_IFMT) { - os.S_IFBLK => .BlockDevice, - os.S_IFCHR => .CharacterDevice, - os.S_IFDIR => .Directory, - os.S_IFIFO => .NamedPipe, - os.S_IFLNK => .SymLink, - os.S_IFREG => .File, - os.S_IFSOCK => .UnixDomainSocket, - else => .Unknown, + .kind = switch (builtin.os.tag) { + .wasi => switch (st.filetype) { + os.FILETYPE_BLOCK_DEVICE => Kind.BlockDevice, + os.FILETYPE_CHARACTER_DEVICE => Kind.CharacterDevice, + os.FILETYPE_DIRECTORY => Kind.Directory, + os.FILETYPE_SYMBOLIC_LINK => Kind.SymLink, + os.FILETYPE_REGULAR_FILE => Kind.File, + os.FILETYPE_SOCKET_STREAM, os.FILETYPE_SOCKET_DGRAM => Kind.UnixDomainSocket, + else => Kind.Unknown, + }, + else => switch (st.mode & os.S_IFMT) { + os.S_IFBLK => Kind.BlockDevice, + os.S_IFCHR => Kind.CharacterDevice, + os.S_IFDIR => Kind.Directory, + os.S_IFIFO => Kind.NamedPipe, + os.S_IFLNK => Kind.SymLink, + os.S_IFREG => Kind.File, + os.S_IFSOCK => Kind.UnixDomainSocket, + else => Kind.Unknown, + }, }, .atime = @as(i128, atime.tv_sec) * std.time.ns_per_s + atime.tv_nsec, .mtime = @as(i128, mtime.tv_sec) * std.time.ns_per_s + mtime.tv_nsec, |
