public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
To: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
Cc: Proxmox Backup Server development discussion
	<pbs-devel@lists.proxmox.com>
Subject: Re: [pbs-devel] [PATCH proxmox v2 1/2] sys: Use safe wrapper for libc::isatty
Date: Mon, 27 Nov 2023 14:15:03 +0100	[thread overview]
Message-ID: <z5ffev7ivvahifyoplpixyjxnls57f6fep7rrekifhkmjkz72q@3v72bdrfmrtt> (raw)
In-Reply-To: <1701076239.pskhtz7vig.astroid@yuna.none>

On Mon, Nov 27, 2023 at 10:15:02AM +0100, Fabian Grünbichler wrote:
> On November 20, 2023 9:16 am, Maximiliano Sandoval R wrote:
> > Use the `std::io::IsTerminal` trait introduced in Rust 1.70.
> > 
> > Internally it calls `libc::isatty`, see [1, 2]. Note that it switches
> > the comparison from `== 1` to `!= 0` which shouldn't make a difference
> > assuming that libc::isatty upholds the promises made in its man page.
> > 
> > The MSRV was set on the workspace to reflect this change.
> > 
> > [1] https://doc.rust-lang.org/src/std/io/stdio.rs.html#1079
> > [2] https://doc.rust-lang.org/src/std/sys/unix/io.rs.html#79
> > 
> > Signed-off-by: Maximiliano Sandoval R <m.sandoval@proxmox.com>
> > ---
> > Differences from v1:
> >   - Rebased
> >   - Set MSRV to 1.70
> > 
> > 
> >  Cargo.toml                   |  1 +
> >  proxmox-sys/src/linux/tty.rs | 20 +++++++-------------
> >  2 files changed, 8 insertions(+), 13 deletions(-)
> > 
> > diff --git a/Cargo.toml b/Cargo.toml
> > index d4d532b..b89d9d7 100644
> > --- a/Cargo.toml
> > +++ b/Cargo.toml
> > @@ -42,6 +42,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 fdea162..375e0ec 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,14 @@ 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.
> >  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.
> >  pub fn stdin_isatty() -> bool {
> > -    unsafe { libc::isatty(std::io::stdin().as_raw_fd()) == 1 }
> > +    std::io::stdin().is_terminal()
> >  }
> 
> do we still need these two? I assume everything calling this would then
> do something with stdin/stdout anyway, and could just as well call
> is_terminal() on them? might be a candidate for deprecation, since the
> original reason for their existence (pulling out the `unsafe` part into
> a helper) is gone..

Is this actually the case code-wise, though? Because generally speaking
this could just be to check whether we should use table-output or colors
etc (though we don't have colors... but anyway, we might just want to
know what stdout is and then still use println!() ...)?
But I don't mind deprecating them on the grounds of them being quite
trivial now.




  parent reply	other threads:[~2023-11-27 13:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-20  8:16 Maximiliano Sandoval R
2023-11-20  8:16 ` [pbs-devel] [PATCH proxmox v2 2/2] router: " Maximiliano Sandoval R
2023-11-27  9:15 ` [pbs-devel] [PATCH proxmox v2 1/2] sys: " Fabian Grünbichler
2023-11-27 10:09   ` Maximiliano Sandoval
2023-11-27 13:15   ` Wolfgang Bumiller [this message]
2024-02-16 14:59 Maximiliano Sandoval

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=z5ffev7ivvahifyoplpixyjxnls57f6fep7rrekifhkmjkz72q@3v72bdrfmrtt \
    --to=w.bumiller@proxmox.com \
    --cc=f.gruenbichler@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal