| ... | @@ -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, |