wasmer_wasix/syscalls/wasix/
tty_get.rs

1use super::*;
2use crate::syscalls::*;
3
4/// ### `tty_get()`
5/// Retrieves the current state of the TTY
6#[instrument(level = "trace", skip_all, ret)]
7pub fn tty_get<M: MemorySize>(
8    ctx: FunctionEnvMut<'_, WasiEnv>,
9    tty_state: WasmPtr<Tty, M>,
10) -> Errno {
11    let env = ctx.data();
12
13    let env = ctx.data();
14    let bridge = if let Some(t) = env.runtime.tty() {
15        t
16    } else {
17        return Errno::Notsup;
18    };
19
20    let state = bridge.tty_get();
21    let state = Tty {
22        cols: state.cols,
23        rows: state.rows,
24        width: state.width,
25        height: state.height,
26        stdin_tty: state.stdin_tty,
27        stdout_tty: state.stdout_tty,
28        stderr_tty: state.stderr_tty,
29        echo: state.echo,
30        line_buffered: state.line_buffered,
31    };
32
33    let memory = unsafe { env.memory_view(&ctx) };
34    wasi_try_mem!(tty_state.write(&memory, state));
35
36    Errno::Success
37}