Skip to main content

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    let bridge = if let Some(t) = env.tty() {
13        t
14    } else {
15        return Errno::Notsup;
16    };
17
18    let state = bridge.tty_get();
19    let state = Tty {
20        cols: state.cols,
21        rows: state.rows,
22        width: state.width,
23        height: state.height,
24        stdin_tty: state.stdin_tty,
25        stdout_tty: state.stdout_tty,
26        stderr_tty: state.stderr_tty,
27        echo: state.echo,
28        line_buffered: state.line_buffered,
29    };
30
31    let memory = unsafe { env.memory_view(&ctx) };
32    wasi_try_mem!(tty_state.write(&memory, state));
33
34    Errno::Success
35}