From 577012ff51c67e68dd77cf8552f74af01f2eb00a Mon Sep 17 00:00:00 2001 From: ErrorNoInternet Date: Thu, 15 Aug 2024 17:09:25 +0800 Subject: [PATCH] perf: get rid of duplicate uname syscall --- src/main.rs | 5 +++-- src/release.rs | 4 ++-- src/system.rs | 11 +++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index b9fc182..3da592e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,10 +17,11 @@ use color_eyre::Report; fn main() -> Result<(), Report> { color_eyre::install()?; + let utsname = nix::sys::utsname::uname()?; let fields = Fields { - user_info: get_username_and_hostname(), + user_info: get_username_and_hostname(&utsname), os_name: get_os_pretty_name()?, - kernel_version: get_system_info()?, + kernel_version: get_system_info(&utsname)?, shell: get_shell(), desktop: get_desktop_info(), uptime: get_current()?, diff --git a/src/release.rs b/src/release.rs index d64921c..7600d0e 100644 --- a/src/release.rs +++ b/src/release.rs @@ -1,11 +1,11 @@ use color_eyre::Result; +use nix::sys::utsname::UtsName; use std::{ fs::File, io::{self, Read}, }; -pub fn get_system_info() -> nix::Result { - let utsname = nix::sys::utsname::uname()?; +pub fn get_system_info(utsname: &UtsName) -> nix::Result { Ok(format!( "{} {} ({})", utsname.sysname().to_str().unwrap_or("Unknown"), diff --git a/src/system.rs b/src/system.rs index f40dba5..65a5397 100644 --- a/src/system.rs +++ b/src/system.rs @@ -1,5 +1,5 @@ use color_eyre::Result; -use nix::sys::statvfs::statvfs; +use nix::sys::{statvfs::statvfs, utsname::UtsName}; use std::{ env, @@ -9,10 +9,13 @@ use std::{ use crate::colors::{CYAN, GREEN, RED, RESET, YELLOW}; -pub fn get_username_and_hostname() -> String { +pub fn get_username_and_hostname(utsname: &UtsName) -> String { let username = env::var("USER").unwrap_or("unknown_user".to_string()); - let hostname = nix::unistd::gethostname().unwrap_or("unknown_host".to_string().into()); - let hostname = hostname.to_string_lossy(); + let hostname = utsname + .nodename() + .to_str() + .unwrap_or("unknown_host") + .to_string(); format!("{YELLOW}{username}{RED}@{GREEN}{hostname}") }