diff --git a/src/sys/unix/fdentry_impl.rs b/src/sys/unix/fdentry_impl.rs index de9494e948..019f6015c9 100644 --- a/src/sys/unix/fdentry_impl.rs +++ b/src/sys/unix/fdentry_impl.rs @@ -51,10 +51,7 @@ pub(crate) fn determine_type_rights( // we just make a `File` here for convenience; we don't want it to close when it drops let file = std::mem::ManuallyDrop::new(unsafe { std::fs::File::from_raw_fd(fd.as_raw_fd()) }); - let ft = file - .metadata() - .map_err(errno_from_ioerror)? - .file_type(); + let ft = file.metadata().map_err(errno_from_ioerror)?.file_type(); if ft.is_block_device() { ( host::__WASI_FILETYPE_BLOCK_DEVICE, @@ -110,9 +107,9 @@ pub(crate) fn determine_type_rights( } } else if ft.is_fifo() { ( - host::__WASI_FILETYPE_SOCKET_STREAM, - host::RIGHTS_SOCKET_BASE, - host::RIGHTS_SOCKET_INHERITING, + host::__WASI_FILETYPE_UNKNOWN, + host::RIGHTS_REGULAR_FILE_BASE, + host::RIGHTS_REGULAR_FILE_INHERITING, ) } else { return Err(host::__WASI_EINVAL); diff --git a/src/sys/unix/host_impl.rs b/src/sys/unix/host_impl.rs index eeecba5bb2..9402b8b550 100644 --- a/src/sys/unix/host_impl.rs +++ b/src/sys/unix/host_impl.rs @@ -158,7 +158,7 @@ pub(crate) fn filetype_from_nix(sflags: nix::sys::stat::SFlag) -> host::__wasi_f host::__WASI_FILETYPE_CHARACTER_DEVICE } else if sflags.contains(SFlag::S_IFBLK) { host::__WASI_FILETYPE_BLOCK_DEVICE - } else if sflags.contains(SFlag::S_IFIFO) | sflags.contains(SFlag::S_IFSOCK) { + } else if sflags.contains(SFlag::S_IFSOCK) { host::__WASI_FILETYPE_SOCKET_STREAM } else if sflags.contains(SFlag::S_IFDIR) { host::__WASI_FILETYPE_DIRECTORY @@ -171,31 +171,6 @@ pub(crate) fn filetype_from_nix(sflags: nix::sys::stat::SFlag) -> host::__wasi_f } } -pub(crate) fn nix_from_filetype(sflags: host::__wasi_filetype_t) -> nix::sys::stat::SFlag { - use nix::sys::stat::SFlag; - let mut nix_sflags = SFlag::empty(); - if sflags & host::__WASI_FILETYPE_CHARACTER_DEVICE != 0 { - nix_sflags.insert(SFlag::S_IFCHR); - } - if sflags & host::__WASI_FILETYPE_BLOCK_DEVICE != 0 { - nix_sflags.insert(SFlag::S_IFBLK); - } - if sflags & host::__WASI_FILETYPE_SOCKET_STREAM != 0 { - nix_sflags.insert(SFlag::S_IFIFO); - nix_sflags.insert(SFlag::S_IFSOCK); - } - if sflags & host::__WASI_FILETYPE_DIRECTORY != 0 { - nix_sflags.insert(SFlag::S_IFDIR); - } - if sflags & host::__WASI_FILETYPE_REGULAR_FILE != 0 { - nix_sflags.insert(SFlag::S_IFREG); - } - if sflags & host::__WASI_FILETYPE_SYMBOLIC_LINK != 0 { - nix_sflags.insert(SFlag::S_IFLNK); - } - nix_sflags -} - pub(crate) fn filestat_from_nix( filestat: nix::sys::stat::FileStat, ) -> Result { diff --git a/src/sys/unix/hostcalls_impl/fs.rs b/src/sys/unix/hostcalls_impl/fs.rs index 863d28e5f5..380cfb6a53 100644 --- a/src/sys/unix/hostcalls_impl/fs.rs +++ b/src/sys/unix/hostcalls_impl/fs.rs @@ -368,8 +368,6 @@ fn filetype(file: &File, metadata: &Metadata) -> Result Ok(host::__WASI_FILETYPE_CHARACTER_DEVICE) } else if ftype.is_block_device() { Ok(host::__WASI_FILETYPE_BLOCK_DEVICE) - } else if ftype.is_fifo() { - Ok(host::__WASI_FILETYPE_SOCKET_STREAM) } else if ftype.is_socket() { match socket::getsockopt(file.as_raw_fd(), socket::sockopt::SockType) .map_err(|err| err.as_errno().unwrap())