main()1 fn main() {
2     #[link(wasm_import_module = "wasi_snapshot_preview1")]
3     unsafe extern "C" {
4         #[cfg_attr(target_arch = "wasm32", link_name = "adapter_open_badfd")]
5         fn adapter_open_badfd(fd: *mut u32) -> wasip1::Errno;
6 
7         #[cfg_attr(target_arch = "wasm32", link_name = "adapter_close_badfd")]
8         fn adapter_close_badfd(fd: u32) -> wasip1::Errno;
9     }
10 
11     unsafe {
12         let mut fd = 0;
13         assert_eq!(adapter_open_badfd(&mut fd), wasip1::ERRNO_SUCCESS);
14 
15         assert_eq!(wasip1::fd_close(fd), Err(wasip1::ERRNO_BADF));
16 
17         assert_eq!(wasip1::fd_fdstat_get(fd).map(drop), Err(wasip1::ERRNO_BADF));
18 
19         assert_eq!(
20             wasip1::fd_fdstat_set_rights(fd, 0, 0),
21             Err(wasip1::ERRNO_BADF)
22         );
23 
24         let mut buffer = [0_u8; 1];
25         assert_eq!(
26             wasip1::fd_read(
27                 fd,
28                 &[wasip1::Iovec {
29                     buf: buffer.as_mut_ptr(),
30                     buf_len: 1
31                 }]
32             ),
33             Err(wasip1::ERRNO_BADF)
34         );
35 
36         assert_eq!(
37             wasip1::fd_write(
38                 fd,
39                 &[wasip1::Ciovec {
40                     buf: buffer.as_ptr(),
41                     buf_len: 1
42                 }]
43             ),
44             Err(wasip1::ERRNO_BADF)
45         );
46 
47         assert_eq!(adapter_close_badfd(fd), wasip1::ERRNO_SUCCESS);
48     }
49 }
50