From 9fcf3ee48bb7fb2478cb15eede3e40902470de1e Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Wed, 14 Aug 2024 17:18:54 +0200 Subject: [PATCH] yes: adapt to API changes of uucore/pipes --- src/uu/yes/src/splice.rs | 10 ++++++++-- src/uu/yes/src/yes.rs | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/uu/yes/src/splice.rs b/src/uu/yes/src/splice.rs index a95fc35af..5537d55e1 100644 --- a/src/uu/yes/src/splice.rs +++ b/src/uu/yes/src/splice.rs @@ -20,13 +20,19 @@ //! make any effort to rescue data from the pipe if splice() fails, we can //! just fall back and start over from the beginning. -use std::{io, os::unix::io::AsRawFd}; +use std::{ + io, + os::fd::{AsFd, AsRawFd}, +}; use nix::{errno::Errno, libc::S_IFIFO, sys::stat::fstat}; use uucore::pipes::{pipe, splice_exact, vmsplice}; -pub(crate) fn splice_data(bytes: &[u8], out: &impl AsRawFd) -> Result<()> { +pub(crate) fn splice_data(bytes: &[u8], out: &T) -> Result<()> +where + T: AsRawFd + AsFd, +{ let is_pipe = fstat(out.as_raw_fd())?.st_mode as nix::libc::mode_t & S_IFIFO != 0; if is_pipe { diff --git a/src/uu/yes/src/yes.rs b/src/uu/yes/src/yes.rs index b1d8f9f49..b344feaa8 100644 --- a/src/uu/yes/src/yes.rs +++ b/src/uu/yes/src/yes.rs @@ -9,6 +9,8 @@ use clap::{builder::ValueParser, crate_version, Arg, ArgAction, Command}; use std::error::Error; use std::ffi::OsString; use std::io::{self, Write}; +#[cfg(any(target_os = "linux", target_os = "android"))] +use std::os::fd::AsFd; use uucore::error::{UResult, USimpleError}; #[cfg(unix)] use uucore::signals::enable_pipe_errors; @@ -118,7 +120,7 @@ pub fn exec(bytes: &[u8]) -> io::Result<()> { #[cfg(any(target_os = "linux", target_os = "android"))] { - match splice::splice_data(bytes, &stdout) { + match splice::splice_data(bytes, &stdout.as_fd()) { Ok(_) => return Ok(()), Err(splice::Error::Io(err)) => return Err(err), Err(splice::Error::Unsupported) => (),