From e0af9afa64caeebffeef69af4a72ca2bd38bf86b Mon Sep 17 00:00:00 2001 From: Laurent Cheylus Date: Thu, 6 Nov 2025 10:16:11 +0100 Subject: [PATCH 1/2] uptime: fix build errors on OpenBSD Signed-off-by: Laurent Cheylus --- src/uu/uptime/src/uptime.rs | 2 +- src/uucore/src/lib/features/uptime.rs | 32 ++++++++++++--------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/uu/uptime/src/uptime.rs b/src/uu/uptime/src/uptime.rs index d6f38c3b835..ca53d418adc 100644 --- a/src/uu/uptime/src/uptime.rs +++ b/src/uu/uptime/src/uptime.rs @@ -168,7 +168,7 @@ fn uptime_with_file(file_path: &OsString) -> UResult<()> { #[cfg(target_os = "openbsd")] { - let upsecs = get_uptime(None); + let upsecs = get_uptime(None)?; if upsecs >= 0 { print_uptime(Some(upsecs))?; } else { diff --git a/src/uucore/src/lib/features/uptime.rs b/src/uucore/src/lib/features/uptime.rs index 38991a923b8..f9fe2875fb3 100644 --- a/src/uucore/src/lib/features/uptime.rs +++ b/src/uucore/src/lib/features/uptime.rs @@ -75,7 +75,7 @@ pub fn get_uptime(_boot_time: Option) -> UResult { Ok(uptime) } else { - Err(UptimeError::SystemUptime) + Err(UptimeError::SystemUptime)? } } @@ -213,27 +213,23 @@ pub fn get_nusers() -> usize { pub fn get_nusers(file: &str) -> usize { use utmp_classic::{UtmpEntry, parse_from_path}; - let mut nusers = 0; - let entries = match parse_from_path(file) { - Some(e) => e, - None => return 0, + Ok(e) => e, + Err(_) => return 0, }; - for entry in entries { - if let UtmpEntry::UTMP { - line: _, - user, - host: _, - time: _, - } = entry - { - if !user.is_empty() { - nusers += 1; - } - } + if entries.is_empty() { + return 0; } - nusers + + // Count entries that have a non-empty user field + entries + .iter() + .filter_map(|entry| match entry { + UtmpEntry::UTMP { user, .. } if !user.is_empty() => Some(()), + _ => None, + }) + .count() } /// Get the number of users currently logged in From 7b1fbc0234ed43c85bcc30f13e019c50ddf53bd6 Mon Sep 17 00:00:00 2001 From: Laurent Cheylus Date: Thu, 6 Nov 2025 10:16:28 +0100 Subject: [PATCH 2/2] tests: fix error for uptime on OpenBSD Signed-off-by: Laurent Cheylus --- tests/by-util/test_uptime.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/by-util/test_uptime.rs b/tests/by-util/test_uptime.rs index e179f64eb3d..b80efd1a00a 100644 --- a/tests/by-util/test_uptime.rs +++ b/tests/by-util/test_uptime.rs @@ -6,7 +6,6 @@ // spell-checker:ignore bincode serde utmp runlevel testusr testx #![allow(clippy::cast_possible_wrap, clippy::unreadable_literal)] -#[cfg(not(target_os = "openbsd"))] use uutests::at_and_ucmd; use uutests::util::TestScenario; use uutests::{new_ucmd, util_name};