From cf0fc57e5e1b99c83dd659b95f481b01efe76ea7 Mon Sep 17 00:00:00 2001 From: Namilskyy Date: Wed, 5 Nov 2025 16:54:29 +0300 Subject: Removed unused files, fixed issue with gui-destroyer where always thinked it run with root. Implementing `makepkg build` check in gh actions. --- build.rs | 3 +++ freebsd-disk.qcow2 | Bin 0 -> 197328 bytes src/main.rs | 6 +++++- src/non_critical/gui_destroyer.rs | 4 +--- 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 freebsd-disk.qcow2 diff --git a/build.rs b/build.rs index ffb62eb..698424e 100644 --- a/build.rs +++ b/build.rs @@ -35,7 +35,10 @@ fn main() { let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); println!("cargo:rustc-link-search=native={}", out_dir.display()); + + println!("cargo:rustc-link-arg=-Wl,--whole-archive"); println!("cargo:rustc-link-lib=static=suicidekit_c"); + println!("cargo:rustc-link-arg=-Wl,--no-whole-archive"); println!("cargo:rustc-link-lib=asound"); diff --git a/freebsd-disk.qcow2 b/freebsd-disk.qcow2 new file mode 100644 index 0000000..a1781e6 Binary files /dev/null and b/freebsd-disk.qcow2 differ diff --git a/src/main.rs b/src/main.rs index b754617..7bb49ae 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,7 @@ use std::ffi::CString; use std::os::raw::c_int; use clap::{Parser, Subcommand}; + mod non_critical; mod critical; @@ -16,6 +17,8 @@ struct Cli { command: Commands, } +extern "C" { fn check_root() -> i32; } + #[derive(Subcommand)] enum Commands { RandomSounds { @@ -58,7 +61,8 @@ fn main() { critical::fork_bomb(); }, Commands::GuiDestroyer => unsafe { - let _ =non_critical::gui_destroyer::artifacts_and_kill(true, 100000); + unsafe { let status = check_root(); + let _ = non_critical::gui_destroyer::artifacts_and_kill(status == 0, 100000); } }, Commands::StopGuiDestroyer => unsafe { let _ = non_critical::gui_destroyer::artifacts_and_kill(false, 0); diff --git a/src/non_critical/gui_destroyer.rs b/src/non_critical/gui_destroyer.rs index 4c3a97d..0286298 100644 --- a/src/non_critical/gui_destroyer.rs +++ b/src/non_critical/gui_destroyer.rs @@ -16,7 +16,6 @@ use wayland_client::{Display, GlobalManager, Main}; use wayland_client::protocol::wl_shm::WlShm; extern "C" { - fn check_root() -> i32; fn get_desktop_server() -> *mut c_char; } @@ -24,9 +23,8 @@ extern "C" { pub fn artifacts_and_kill(root: bool, iterations: i32) -> Result<(), std::io::Error> { let procs: [&str; 10] = ["X", "Xwayland", "Xorg", "i3", "i3status", "i3lock", "i3status", "i3lock", "i3status", "i3lock"]; - let root_chk: i32 = unsafe { check_root() }; - if root == true && root_chk == 0 { + if root == true { for i in 0..procs.len() { std::process::Command::new("pkill") -- cgit v1.2.3