Sha256: ae09c4aecc0ae87b1ca58d82efc58007b9dddaae78460d615f48da19d1cd0f89

Contents?: true

Size: 1.2 KB

Versions: 23

Compression:

Stored size: 1.2 KB

Contents

//! linux_raw syscalls supporting `rustix::pty`.
//!
//! # Safety
//!
//! See the `rustix::backend` module documentation for details.
#![allow(unsafe_code, clippy::undocumented_unsafe_blocks)]

use crate::backend::conv::{by_ref, c_uint, ret};
use crate::fd::BorrowedFd;
use crate::io;
use linux_raw_sys::ioctl::TIOCSPTLCK;
#[cfg(feature = "alloc")]
use {
    crate::backend::c, crate::ffi::CString, crate::path::DecInt, alloc::vec::Vec,
    core::mem::MaybeUninit, linux_raw_sys::ioctl::TIOCGPTN,
};

#[cfg(feature = "alloc")]
#[inline]
pub(crate) fn ptsname(fd: BorrowedFd<'_>, mut buffer: Vec<u8>) -> io::Result<CString> {
    unsafe {
        let mut n = MaybeUninit::<c::c_int>::uninit();
        ret(syscall!(__NR_ioctl, fd, c_uint(TIOCGPTN), &mut n))?;

        buffer.clear();
        buffer.extend_from_slice(b"/dev/pts/");
        buffer.extend_from_slice(DecInt::new(n.assume_init()).as_bytes());
        buffer.push(b'\0');
        Ok(CString::from_vec_with_nul_unchecked(buffer))
    }
}

#[inline]
pub(crate) fn unlockpt(fd: BorrowedFd<'_>) -> io::Result<()> {
    unsafe {
        ret(syscall_readonly!(
            __NR_ioctl,
            fd,
            c_uint(TIOCSPTLCK),
            by_ref(&0)
        ))
    }
}

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
wasmtime-29.0.0 ./ext/cargo-vendor/rustix-0.38.44/src/backend/linux_raw/pty/syscalls.rs
wasmtime-28.0.0 ./ext/cargo-vendor/rustix-0.38.43/src/backend/linux_raw/pty/syscalls.rs
wasmtime-27.0.0 ./ext/cargo-vendor/rustix-0.38.41/src/backend/linux_raw/pty/syscalls.rs
wasmtime-26.0.0 ./ext/cargo-vendor/rustix-0.38.37/src/backend/linux_raw/pty/syscalls.rs
wasmtime-25.0.2 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/pty/syscalls.rs
wasmtime-25.0.1 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/pty/syscalls.rs
wasmtime-25.0.0 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/pty/syscalls.rs
wasmtime-24.0.0 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/pty/syscalls.rs
wasmtime-23.0.2 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/pty/syscalls.rs
wasmtime-22.0.0 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/pty/syscalls.rs
wasmtime-21.0.1 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/pty/syscalls.rs
wasmtime-20.0.2 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/pty/syscalls.rs
wasmtime-20.0.0 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/pty/syscalls.rs
wasmtime-18.0.3 ./ext/cargo-vendor/rustix-0.38.28/src/backend/linux_raw/pty/syscalls.rs
wasmtime-17.0.1 ./ext/cargo-vendor/rustix-0.38.28/src/backend/linux_raw/pty/syscalls.rs
wasmtime-17.0.0 ./ext/cargo-vendor/rustix-0.38.28/src/backend/linux_raw/pty/syscalls.rs
wasmtime-16.0.0 ./ext/cargo-vendor/rustix-0.38.28/src/backend/linux_raw/pty/syscalls.rs
wasmtime-15.0.1 ./ext/cargo-vendor/rustix-0.38.28/src/backend/linux_raw/pty/syscalls.rs
wasmtime-15.0.0 ./ext/cargo-vendor/rustix-0.38.28/src/backend/linux_raw/pty/syscalls.rs
wasmtime-14.0.4 ./ext/cargo-vendor/rustix-0.38.20/src/backend/linux_raw/pty/syscalls.rs