uucore: replace nix of buf_copy by rustix

This commit is contained in:
Sylvestre Ledru
2026-04-12 13:31:23 +02:00
parent b6e4c455ec
commit f936e2267d
+13 -13
View File
@@ -31,10 +31,10 @@ impl<T> FdWritable for T where T: Write + AsFd + AsRawFd {}
const SPLICE_SIZE: usize = 1024 * 128; const SPLICE_SIZE: usize = 1024 * 128;
const BUF_SIZE: usize = 1024 * 16; const BUF_SIZE: usize = 1024 * 16;
/// Conversion from a `nix::Error` into our `Error` which implements `UError`. /// Conversion from a `rustix::io::Errno` into our `Error` which implements `UError`.
impl From<nix::Error> for Error { impl From<rustix::io::Errno> for Error {
fn from(error: nix::Error) -> Self { fn from(error: rustix::io::Errno) -> Self {
Self::Io(std::io::Error::from_raw_os_error(error as i32)) Self::Io(std::io::Error::from(error))
} }
} }
@@ -126,19 +126,19 @@ pub(crate) fn copy_exact(
write_fd: &impl AsFd, write_fd: &impl AsFd,
num_bytes: usize, num_bytes: usize,
) -> std::io::Result<usize> { ) -> std::io::Result<usize> {
use nix::unistd;
let mut left = num_bytes; let mut left = num_bytes;
let mut buf = [0; BUF_SIZE]; let mut buf = [0; BUF_SIZE];
let mut written = 0; let mut total_written = 0;
while left > 0 { while left > 0 {
let read = unistd::read(read_fd, &mut buf)?; let n_read = rustix::io::read(read_fd, &mut buf)?;
assert_ne!(read, 0, "unexpected end of pipe"); assert_ne!(n_read, 0, "unexpected end of pipe");
while written < read { let mut written = 0;
let n = unistd::write(write_fd, &buf[written..read])?; while written < n_read {
let n = rustix::io::write(write_fd, &buf[written..n_read])?;
written += n; written += n;
} }
left -= read; total_written += written;
left -= n_read;
} }
Ok(written) Ok(total_written)
} }