From 955fcc7a522b8ee0b961c07c8cf31d3681035b2f Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:56:09 +0000 Subject: [PATCH] sort: remove unsafe --- src/uu/sort/Cargo.toml | 4 +++- src/uu/sort/src/sort.rs | 15 +++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/uu/sort/Cargo.toml b/src/uu/sort/Cargo.toml index e65f70d5a..184f6776b 100644 --- a/src/uu/sort/Cargo.toml +++ b/src/uu/sort/Cargo.toml @@ -36,7 +36,9 @@ thiserror = { workspace = true } unicode-width = { workspace = true } uucore = { workspace = true, features = ["fs", "parser-size", "version-cmp"] } fluent = { workspace = true } -nix = { workspace = true } + +[target.'cfg(unix)'.dependencies] +nix = { workspace = true, features = ["resource"] } [dev-dependencies] divan = { workspace = true } diff --git a/src/uu/sort/src/sort.rs b/src/uu/sort/src/sort.rs index c25ef4814..3b967d042 100644 --- a/src/uu/sort/src/sort.rs +++ b/src/uu/sort/src/sort.rs @@ -25,8 +25,6 @@ use clap::{Arg, ArgAction, Command}; use custom_str_cmp::custom_str_cmp; use ext_sort::ext_sort; use fnv::FnvHasher; -#[cfg(target_os = "linux")] -use nix::libc::{RLIMIT_NOFILE, getrlimit, rlimit}; use numeric_str_cmp::{NumInfo, NumInfoParseSettings, human_numeric_str_cmp, numeric_str_cmp}; use rand::{Rng, rng}; use rayon::prelude::*; @@ -1075,14 +1073,11 @@ fn make_sort_mode_arg(mode: &'static str, short: char, help: String) -> Arg { #[cfg(target_os = "linux")] fn get_rlimit() -> UResult { - let mut limit = rlimit { - rlim_cur: 0, - rlim_max: 0, - }; - match unsafe { getrlimit(RLIMIT_NOFILE, &raw mut limit) } { - 0 => Ok(limit.rlim_cur as usize), - _ => Err(UUsageError::new(2, translate!("sort-failed-fetch-rlimit"))), - } + use nix::sys::resource::{Resource, getrlimit}; + + getrlimit(Resource::RLIMIT_NOFILE) + .map(|(rlim_cur, _)| rlim_cur as usize) + .map_err(|_| UUsageError::new(2, translate!("sort-failed-fetch-rlimit"))) } const STDIN_FILE: &str = "-";