authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-06-20 22:09:47-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-06-20 22:09:47-04:00
logfaf783e5959a09fb2a1680f8bb7558db96dcbed9
treeaf5d6b5650fe48c56d22a38e54db74e3871c98a8
parent225f1968426d333834465dae526b3d2ae242cd8f

implement new stat functionality for WASI


1 files changed, 20 insertions(+), 9 deletions(-)

lib/std/fs/file.zig+20-9
...@@ -282,15 +282,26 @@ pub const File = struct {...@@ -282,15 +282,26 @@ pub const File = struct {
282 .inode = st.ino,282 .inode = st.ino,
283 .size = @bitCast(u64, st.size),283 .size = @bitCast(u64, st.size),
284 .mode = st.mode,284 .mode = st.mode,
285 .kind = switch (st.mode & os.S_IFMT) {285 .kind = switch (builtin.os.tag) {
286 os.S_IFBLK => .BlockDevice,286 .wasi => switch (st.filetype) {
287 os.S_IFCHR => .CharacterDevice,287 os.FILETYPE_BLOCK_DEVICE => Kind.BlockDevice,
288 os.S_IFDIR => .Directory,288 os.FILETYPE_CHARACTER_DEVICE => Kind.CharacterDevice,
289 os.S_IFIFO => .NamedPipe,289 os.FILETYPE_DIRECTORY => Kind.Directory,
290 os.S_IFLNK => .SymLink,290 os.FILETYPE_SYMBOLIC_LINK => Kind.SymLink,
291 os.S_IFREG => .File,291 os.FILETYPE_REGULAR_FILE => Kind.File,
292 os.S_IFSOCK => .UnixDomainSocket,292 os.FILETYPE_SOCKET_STREAM, os.FILETYPE_SOCKET_DGRAM => Kind.UnixDomainSocket,
293 else => .Unknown,293 else => Kind.Unknown,
294 },
295 else => switch (st.mode & os.S_IFMT) {
296 os.S_IFBLK => Kind.BlockDevice,
297 os.S_IFCHR => Kind.CharacterDevice,
298 os.S_IFDIR => Kind.Directory,
299 os.S_IFIFO => Kind.NamedPipe,
300 os.S_IFLNK => Kind.SymLink,
301 os.S_IFREG => Kind.File,
302 os.S_IFSOCK => Kind.UnixDomainSocket,
303 else => Kind.Unknown,
304 },
294 },305 },
295 .atime = @as(i128, atime.tv_sec) * std.time.ns_per_s + atime.tv_nsec,306 .atime = @as(i128, atime.tv_sec) * std.time.ns_per_s + atime.tv_nsec,
296 .mtime = @as(i128, mtime.tv_sec) * std.time.ns_per_s + mtime.tv_nsec,307 .mtime = @as(i128, mtime.tv_sec) * std.time.ns_per_s + mtime.tv_nsec,