diff --git a/Cargo.toml b/Cargo.toml index de79f7ca..58d5a67e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,6 +44,7 @@ license = "AGPL-3" repository = "https://git.proxmox.com/?p=proxmox.git" homepage = "https://proxmox.com" exclude = [ "debian" ] +rust-version = "1.70" [workspace.dependencies] # any features enabled here are enabled on all members using 'workspace = true'! diff --git a/proxmox-sys/src/linux/tty.rs b/proxmox-sys/src/linux/tty.rs index fdea1629..9a1e4679 100644 --- a/proxmox-sys/src/linux/tty.rs +++ b/proxmox-sys/src/linux/tty.rs @@ -1,4 +1,4 @@ -use std::io::{self, Read, Write}; +use std::io::{self, IsTerminal, Read, Write}; use std::mem::MaybeUninit; use std::os::unix::io::{AsRawFd, OwnedFd}; @@ -25,20 +25,16 @@ pub fn stdout_terminal_size() -> (usize, usize) { (winsize.ws_row as usize, winsize.ws_col as usize) } -/// Returns whether the current stdout is a tty . -/// # Safety -/// -/// uses unsafe call to libc::isatty +/// Returns whether the current stdout is a tty. +#[deprecated(note = "Use std::io::stdout().is_terminal()")] pub fn stdout_isatty() -> bool { - unsafe { libc::isatty(std::io::stdin().as_raw_fd()) == 1 } + std::io::stdout().is_terminal() } -/// Returns whether the current stdin is a tty . -/// # Safety -/// -/// uses unsafe call to libc::isatty +/// Returns whether the current stdin is a tty. +#[deprecated(note = "Use std::io::stdin().is_terminal()")] pub fn stdin_isatty() -> bool { - unsafe { libc::isatty(std::io::stdin().as_raw_fd()) == 1 } + std::io::stdin().is_terminal() } pub enum TtyOutput { @@ -75,7 +71,7 @@ impl TtyOutput { /// Get an output file descriptor for the current terminal. pub fn open() -> io::Result> { let stdout = std::io::stdout(); - if unsafe { libc::isatty(stdout.as_raw_fd()) } == 1 { + if stdout.is_terminal() { Ok(Some(TtyOutput::Stdout(stdout))) } else { match crate::fd::open( @@ -97,7 +93,7 @@ impl TtyOutput { /// first. pub fn read_password(query: &str) -> Result, Error> { let input = std::io::stdin(); - if unsafe { libc::isatty(input.as_raw_fd()) } != 1 { + if !input.is_terminal() { let mut out = String::new(); input.read_line(&mut out)?; return Ok(out.into_bytes());