From bf32d82ae73e2244a81593b65015658311ab08fe Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Wed, 26 Aug 2026 19:13:36 +0200 Subject: [PATCH] Feat: Ersetzt is_run_as_root durch die Implementation von Crate sudo_ctdra --- Cargo.lock | 11 ++++++++++- Cargo.toml | 2 +- src/lib.rs | 23 +---------------------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a2179f7..2983cb7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,8 +13,8 @@ name = "config-ctdra" version = "1.0.2" dependencies = [ "confy", - "libc", "serde", + "sudo-ctdra", ] [[package]] @@ -141,6 +141,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "sudo-ctdra" +version = "1.0.0" +source = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/" +checksum = "2c2746122bbe36f821de70db3ca4ad24edfb77118fc6a6bc7693082b50d23e5f" +dependencies = [ + "libc", +] + [[package]] name = "syn" version = "3.0.4" diff --git a/Cargo.toml b/Cargo.toml index 455f119..3426470 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ description = "Einfache, threadsichere Konfigurationsverwaltung für Rust mit au [dependencies] confy = "2.0.0" serde = { version = "1.0.229", features = ["derive"] } -libc = "1.0.0-alpha.4" +sudo-ctdra = { version = "1.0.0", registry = "gitea" } [profile.release] debug = "none" diff --git a/src/lib.rs b/src/lib.rs index b46990c..8473b72 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,6 +36,7 @@ use std::sync::{OnceLock, RwLock}; pub use confy::ConfyError; use serde::de::DeserializeOwned; use serde::Serialize; +use sudo_ctdra::is_run_as_root; /// Optionaler benutzerdefinierter Programmname für die Konfigurationspfade. static PROGRAM_NAME: OnceLock>> = OnceLock::new(); @@ -56,28 +57,6 @@ static GLOBAL_CONFIGS: OnceLock bool { - #[cfg(target_os = "windows")] - { - std::process::Command::new("net") - .args(["session"]) - .output() - .map(|output| output.status.success()) - .unwrap_or(false) - } - - #[cfg(not(target_os = "windows"))] - { - unsafe { libc::geteuid() == 0 } - } -} - /// Setzt den Programmnamen für die Pfadermittlung explizit. pub fn set_program_name(name: impl Into) { let lock = PROGRAM_NAME.get_or_init(|| RwLock::new(None));