From 51659bde16d05c69c4b6ab616a96dcda542c25e0 Mon Sep 17 00:00:00 2001 From: teesh3rt Date: Sun, 30 Mar 2025 13:29:10 +0300 Subject: [PATCH] feat: add get_username to user --- coreutils/src/commands/whoami.rs | 6 ++---- utils/src/cross/user/unix.rs | 4 ++++ utils/src/cross/user/win.rs | 12 +++++++++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/coreutils/src/commands/whoami.rs b/coreutils/src/commands/whoami.rs index dd67b7a..0f501da 100644 --- a/coreutils/src/commands/whoami.rs +++ b/coreutils/src/commands/whoami.rs @@ -1,6 +1,6 @@ use boxutils::args::ArgParser; use boxutils::commands::Command; -use std::env; +use boxutils::cross::user; pub struct WhoAmI; @@ -13,9 +13,7 @@ impl Command for WhoAmI { return; } - let username = env::var("USER") // Unix - .or_else(|_| env::var("USERNAME")) // Windows - .unwrap_or_else(|_| "unknown".to_string()); + let username = user::get_username().unwrap_or_else(|| "unknown".to_string()); println!("{}", username); } diff --git a/utils/src/cross/user/unix.rs b/utils/src/cross/user/unix.rs index a76164e..7566111 100644 --- a/utils/src/cross/user/unix.rs +++ b/utils/src/cross/user/unix.rs @@ -35,3 +35,7 @@ impl UserPrivileges { pub fn is_admin() -> bool { UserPrivileges::is_root() } + +pub fn get_username() -> Option { + std::env::var("USER").ok() +} diff --git a/utils/src/cross/user/win.rs b/utils/src/cross/user/win.rs index c9919f1..97fded9 100644 --- a/utils/src/cross/user/win.rs +++ b/utils/src/cross/user/win.rs @@ -1,10 +1,10 @@ #![allow(dead_code)] #![cfg(windows)] -use std::ptr; use std::ffi::c_void; use std::mem::{size_of, zeroed}; use std::os::raw::c_ulong; +use std::ptr; #[link(name = "advapi32")] unsafe extern "system" { @@ -44,7 +44,9 @@ impl AccessToken { return None; } - Some(Self { handle: token_handle }) + Some(Self { + handle: token_handle, + }) } /// Checks if the token is elevated (i.e., running as an administrator). @@ -80,4 +82,8 @@ pub fn is_admin() -> bool { } else { false } -} \ No newline at end of file +} + +pub fn get_username() -> Option { + std::env::var("USERNAME").ok() +}