manager: clean lkm remnants

ksud: clean clippy warnings
This commit is contained in:
rifsxd
2025-05-01 16:29:16 +06:00
parent 1336996129
commit 757d20166a
9 changed files with 169 additions and 125 deletions

View File

@@ -9,10 +9,10 @@ on:
required: false required: false
type: string type: string
default: ubuntu-latest default: ubuntu-latest
pack_lkm: # pack_lkm:
required: false # required: false
type: boolean # type: boolean
default: true # default: true
use_cache: use_cache:
required: false required: false
type: boolean type: boolean
@@ -29,11 +29,11 @@ jobs:
- name: Download Artifacts - name: Download Artifacts
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
- name: Prepare LKM Files # - name: Prepare LKM Files
if: ${{ inputs.pack_lkm }} # if: ${{ inputs.pack_lkm }}
run: | # run: |
cp android*-lkm/*_kernelsu.ko ./userspace/ksud_overlayfs/bin/aarch64/ # cp android*-lkm/*_kernelsu.ko ./userspace/ksud_overlayfs/bin/aarch64/
cp android*-lkm/*_kernelsu.ko ./userspace/ksud_magic/bin/aarch64/ # cp android*-lkm/*_kernelsu.ko ./userspace/ksud_magic/bin/aarch64/ // DISBAND LKM MODE
- name: Import susfsd Libraries - name: Import susfsd Libraries
run: | run: |

View File

@@ -378,12 +378,12 @@ fun SettingScreen(navigator: DestinationsNavigator) {
) )
} }
val lkmMode = Natives.version >= Natives.MINIMAL_SUPPORTED_KERNEL_LKM && Natives.isLkmMode // val lkmMode = Natives.version >= Natives.MINIMAL_SUPPORTED_KERNEL_LKM && Natives.isLkmMode
if (lkmMode) { // if (lkmMode) {
UninstallItem(navigator) { // UninstallItem(navigator) {
loadingDialog.withLoading(it) // loadingDialog.withLoading(it)
} // }
} // } // DISBAND LKM MODE
var showBottomsheet by remember { mutableStateOf(false) } var showBottomsheet by remember { mutableStateOf(false) }
@@ -511,107 +511,107 @@ fun SettingScreen(navigator: DestinationsNavigator) {
} }
} }
@Composable // @Composable
fun UninstallItem( // fun UninstallItem(
navigator: DestinationsNavigator, // navigator: DestinationsNavigator,
withLoading: suspend (suspend () -> Unit) -> Unit, // withLoading: suspend (suspend () -> Unit) -> Unit,
) { // ) {
val context = LocalContext.current // val context = LocalContext.current
val scope = rememberCoroutineScope() // val scope = rememberCoroutineScope()
val uninstallConfirmDialog = rememberConfirmDialog() // val uninstallConfirmDialog = rememberConfirmDialog()
val showTodo = { // val showTodo = {
Toast.makeText(context, "TODO", Toast.LENGTH_SHORT).show() // Toast.makeText(context, "TODO", Toast.LENGTH_SHORT).show()
} // }
val uninstallDialog = rememberUninstallDialog { uninstallType -> // val uninstallDialog = rememberUninstallDialog { uninstallType ->
scope.launch { // scope.launch {
val result = uninstallConfirmDialog.awaitConfirm( // val result = uninstallConfirmDialog.awaitConfirm(
title = context.getString(uninstallType.title), // title = context.getString(uninstallType.title),
content = context.getString(uninstallType.message) // content = context.getString(uninstallType.message)
) // )
if (result == ConfirmResult.Confirmed) { // if (result == ConfirmResult.Confirmed) {
withLoading { // withLoading {
when (uninstallType) { // when (uninstallType) {
UninstallType.TEMPORARY -> showTodo() // UninstallType.TEMPORARY -> showTodo()
UninstallType.PERMANENT -> navigator.navigate( // UninstallType.PERMANENT -> navigator.navigate(
FlashScreenDestination(FlashIt.FlashUninstall) // FlashScreenDestination(FlashIt.FlashUninstall)
) // )
UninstallType.RESTORE_STOCK_IMAGE -> navigator.navigate( // UninstallType.RESTORE_STOCK_IMAGE -> navigator.navigate(
FlashScreenDestination(FlashIt.FlashRestore) // FlashScreenDestination(FlashIt.FlashRestore)
) // )
UninstallType.NONE -> Unit // UninstallType.NONE -> Unit
} // }
} // }
} // }
} // }
} // }
val uninstall = stringResource(id = R.string.settings_uninstall) // val uninstall = stringResource(id = R.string.settings_uninstall)
ListItem( // ListItem(
leadingContent = { // leadingContent = {
Icon( // Icon(
Icons.Filled.Delete, // Icons.Filled.Delete,
uninstall // uninstall
) // )
}, // },
headlineContent = { Text(uninstall) }, // headlineContent = { Text(uninstall) },
modifier = Modifier.clickable { // modifier = Modifier.clickable {
uninstallDialog.show() // uninstallDialog.show()
} // }
) // )
} // }
enum class UninstallType(val title: Int, val message: Int, val icon: ImageVector) { // enum class UninstallType(val title: Int, val message: Int, val icon: ImageVector) {
TEMPORARY( // TEMPORARY(
R.string.settings_uninstall_temporary, // R.string.settings_uninstall_temporary,
R.string.settings_uninstall_temporary_message, // R.string.settings_uninstall_temporary_message,
Icons.Filled.Delete // Icons.Filled.Delete
), // ),
PERMANENT( // PERMANENT(
R.string.settings_uninstall_permanent, // R.string.settings_uninstall_permanent,
R.string.settings_uninstall_permanent_message, // R.string.settings_uninstall_permanent_message,
Icons.Filled.DeleteForever // Icons.Filled.DeleteForever
), // ),
RESTORE_STOCK_IMAGE( // RESTORE_STOCK_IMAGE(
R.string.settings_restore_stock_image, // R.string.settings_restore_stock_image,
R.string.settings_restore_stock_image_message, // R.string.settings_restore_stock_image_message,
Icons.AutoMirrored.Filled.Undo // Icons.AutoMirrored.Filled.Undo
), // ),
NONE(0, 0, Icons.Filled.Delete) // NONE(0, 0, Icons.Filled.Delete)
} // }
@OptIn(ExperimentalMaterial3Api::class) // @OptIn(ExperimentalMaterial3Api::class)
@Composable // @Composable
fun rememberUninstallDialog(onSelected: (UninstallType) -> Unit): DialogHandle { // fun rememberUninstallDialog(onSelected: (UninstallType) -> Unit): DialogHandle {
return rememberCustomDialog { dismiss -> // return rememberCustomDialog { dismiss ->
val options = listOf( // val options = listOf(
// UninstallType.TEMPORARY, // // UninstallType.TEMPORARY,
UninstallType.PERMANENT, // UninstallType.PERMANENT,
UninstallType.RESTORE_STOCK_IMAGE // UninstallType.RESTORE_STOCK_IMAGE
) // )
val listOptions = options.map { // val listOptions = options.map {
ListOption( // ListOption(
titleText = stringResource(it.title), // titleText = stringResource(it.title),
subtitleText = if (it.message != 0) stringResource(it.message) else null, // subtitleText = if (it.message != 0) stringResource(it.message) else null,
icon = IconSource(it.icon) // icon = IconSource(it.icon)
) // )
} // }
var selection = UninstallType.NONE // var selection = UninstallType.NONE
ListDialog(state = rememberUseCaseState(visible = true, onFinishedRequest = { // ListDialog(state = rememberUseCaseState(visible = true, onFinishedRequest = {
if (selection != UninstallType.NONE) { // if (selection != UninstallType.NONE) {
onSelected(selection) // onSelected(selection)
} // }
}, onCloseRequest = { // }, onCloseRequest = {
dismiss() // dismiss()
}), header = Header.Default( // }), header = Header.Default(
title = stringResource(R.string.settings_uninstall), // title = stringResource(R.string.settings_uninstall),
), selection = ListSelection.Single( // ), selection = ListSelection.Single(
showRadioButtons = false, // showRadioButtons = false,
options = listOptions, // options = listOptions,
) { index, _ -> // ) { index, _ ->
selection = options[index] // selection = options[index]
}) // })
} // }
} // } // DISBAND LKM MODE
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable

View File

@@ -7,6 +7,7 @@ use crate::{defs::BINARY_DIR, utils};
pub const RESETPROP_PATH: &str = concatcp!(BINARY_DIR, "resetprop"); pub const RESETPROP_PATH: &str = concatcp!(BINARY_DIR, "resetprop");
pub const BUSYBOX_PATH: &str = concatcp!(BINARY_DIR, "busybox"); pub const BUSYBOX_PATH: &str = concatcp!(BINARY_DIR, "busybox");
#[allow(dead_code)]
pub const BOOTCTL_PATH: &str = concatcp!(BINARY_DIR, "bootctl"); pub const BOOTCTL_PATH: &str = concatcp!(BINARY_DIR, "bootctl");
#[allow(dead_code)] #[allow(dead_code)]

View File

@@ -19,6 +19,7 @@ use crate::defs::{KSU_BACKUP_DIR, KSU_BACKUP_FILE_PREFIX};
use crate::{assets, utils}; use crate::{assets, utils};
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
fn ensure_gki_kernel() -> Result<()> { fn ensure_gki_kernel() -> Result<()> {
let version = get_kernel_version()?; let version = get_kernel_version()?;
let is_gki = version.0 == 5 && version.1 >= 10 || version.2 > 5; let is_gki = version.0 == 5 && version.1 >= 10 || version.2 > 5;
@@ -27,6 +28,7 @@ fn ensure_gki_kernel() -> Result<()> {
} }
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
pub fn get_kernel_version() -> Result<(i32, i32, i32)> { pub fn get_kernel_version() -> Result<(i32, i32, i32)> {
let uname = rustix::system::uname(); let uname = rustix::system::uname();
let version = uname.release().to_string_lossy(); let version = uname.release().to_string_lossy();
@@ -51,6 +53,7 @@ pub fn get_kernel_version() -> Result<(i32, i32, i32)> {
} }
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
fn parse_kmi(version: &str) -> Result<String> { fn parse_kmi(version: &str) -> Result<String> {
let re = Regex::new(r"(.* )?(\d+\.\d+)(\S+)?(android\d+)(.*)")?; let re = Regex::new(r"(.* )?(\d+\.\d+)(\S+)?(android\d+)(.*)")?;
let cap = re let cap = re
@@ -62,6 +65,7 @@ fn parse_kmi(version: &str) -> Result<String> {
} }
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
fn parse_kmi_from_uname() -> Result<String> { fn parse_kmi_from_uname() -> Result<String> {
let uname = rustix::system::uname(); let uname = rustix::system::uname();
let version = uname.release().to_string_lossy(); let version = uname.release().to_string_lossy();
@@ -69,6 +73,7 @@ fn parse_kmi_from_uname() -> Result<String> {
} }
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
fn parse_kmi_from_modules() -> Result<String> { fn parse_kmi_from_modules() -> Result<String> {
use std::io::BufRead; use std::io::BufRead;
// find a *.ko in /vendor/lib/modules // find a *.ko in /vendor/lib/modules
@@ -87,15 +92,18 @@ fn parse_kmi_from_modules() -> Result<String> {
} }
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
pub fn get_current_kmi() -> Result<String> { pub fn get_current_kmi() -> Result<String> {
parse_kmi_from_uname().or_else(|_| parse_kmi_from_modules()) parse_kmi_from_uname().or_else(|_| parse_kmi_from_modules())
} }
#[cfg(not(target_os = "android"))] #[cfg(not(target_os = "android"))]
#[allow(dead_code)]
pub fn get_current_kmi() -> Result<String> { pub fn get_current_kmi() -> Result<String> {
bail!("Unsupported platform") bail!("Unsupported platform")
} }
#[allow(dead_code)]
fn parse_kmi_from_kernel(kernel: &PathBuf, workdir: &Path) -> Result<String> { fn parse_kmi_from_kernel(kernel: &PathBuf, workdir: &Path) -> Result<String> {
use std::fs::{File, copy}; use std::fs::{File, copy};
use std::io::{BufReader, Read}; use std::io::{BufReader, Read};
@@ -129,6 +137,7 @@ fn parse_kmi_from_kernel(kernel: &PathBuf, workdir: &Path) -> Result<String> {
bail!("Try to choose LKM manually") bail!("Try to choose LKM manually")
} }
#[allow(dead_code)]
fn parse_kmi_from_boot(magiskboot: &Path, image: &PathBuf, workdir: &Path) -> Result<String> { fn parse_kmi_from_boot(magiskboot: &Path, image: &PathBuf, workdir: &Path) -> Result<String> {
let image_path = workdir.join("image"); let image_path = workdir.join("image");
@@ -153,6 +162,7 @@ fn parse_kmi_from_boot(magiskboot: &Path, image: &PathBuf, workdir: &Path) -> Re
parse_kmi_from_kernel(&image_path, workdir) parse_kmi_from_kernel(&image_path, workdir)
} }
#[allow(dead_code)]
fn do_cpio_cmd(magiskboot: &Path, workdir: &Path, cmd: &str) -> Result<()> { fn do_cpio_cmd(magiskboot: &Path, workdir: &Path, cmd: &str) -> Result<()> {
let status = Command::new(magiskboot) let status = Command::new(magiskboot)
.current_dir(workdir) .current_dir(workdir)
@@ -167,6 +177,7 @@ fn do_cpio_cmd(magiskboot: &Path, workdir: &Path, cmd: &str) -> Result<()> {
Ok(()) Ok(())
} }
#[allow(dead_code)]
fn is_magisk_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> { fn is_magisk_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
let status = Command::new(magiskboot) let status = Command::new(magiskboot)
.current_dir(workdir) .current_dir(workdir)
@@ -179,6 +190,7 @@ fn is_magisk_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
Ok(status.code() == Some(1)) Ok(status.code() == Some(1))
} }
#[allow(dead_code)]
fn is_kernelsu_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> { fn is_kernelsu_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
let status = Command::new(magiskboot) let status = Command::new(magiskboot)
.current_dir(workdir) .current_dir(workdir)
@@ -190,6 +202,7 @@ fn is_kernelsu_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
Ok(status.success()) Ok(status.success())
} }
#[allow(dead_code)]
fn dd<P: AsRef<Path>, Q: AsRef<Path>>(ifile: P, ofile: Q) -> Result<()> { fn dd<P: AsRef<Path>, Q: AsRef<Path>>(ifile: P, ofile: Q) -> Result<()> {
let status = Command::new("dd") let status = Command::new("dd")
.stdout(Stdio::null()) .stdout(Stdio::null())
@@ -206,6 +219,7 @@ fn dd<P: AsRef<Path>, Q: AsRef<Path>>(ifile: P, ofile: Q) -> Result<()> {
Ok(()) Ok(())
} }
#[allow(dead_code)]
pub fn restore( pub fn restore(
image: Option<PathBuf>, image: Option<PathBuf>,
magiskboot_path: Option<PathBuf>, magiskboot_path: Option<PathBuf>,
@@ -323,6 +337,7 @@ pub fn restore(
Ok(()) Ok(())
} }
#[allow(dead_code)]
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
pub fn patch( pub fn patch(
image: Option<PathBuf>, image: Option<PathBuf>,
@@ -342,6 +357,7 @@ pub fn patch(
result result
} }
#[allow(dead_code)]
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
fn do_patch( fn do_patch(
image: Option<PathBuf>, image: Option<PathBuf>,
@@ -528,6 +544,7 @@ fn do_patch(
Ok(()) Ok(())
} }
#[allow(dead_code)]
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
fn calculate_sha1(file_path: impl AsRef<Path>) -> Result<String> { fn calculate_sha1(file_path: impl AsRef<Path>) -> Result<String> {
use sha1::Digest; use sha1::Digest;
@@ -548,6 +565,7 @@ fn calculate_sha1(file_path: impl AsRef<Path>) -> Result<String> {
Ok(format!("{:x}", result)) Ok(format!("{:x}", result))
} }
#[allow(dead_code)]
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
fn do_backup(magiskboot: &Path, workdir: &Path, image: &str) -> Result<()> { fn do_backup(magiskboot: &Path, workdir: &Path, image: &str) -> Result<()> {
let sha1 = calculate_sha1(image)?; let sha1 = calculate_sha1(image)?;
@@ -568,6 +586,7 @@ fn do_backup(magiskboot: &Path, workdir: &Path, image: &str) -> Result<()> {
Ok(()) Ok(())
} }
#[allow(dead_code)]
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
fn clean_backup(sha1: &str) -> Result<()> { fn clean_backup(sha1: &str) -> Result<()> {
println!("- Clean up backup"); println!("- Clean up backup");
@@ -591,6 +610,7 @@ fn clean_backup(sha1: &str) -> Result<()> {
Ok(()) Ok(())
} }
#[allow(dead_code)]
fn flash_boot(bootdevice: &Option<String>, new_boot: PathBuf) -> Result<()> { fn flash_boot(bootdevice: &Option<String>, new_boot: PathBuf) -> Result<()> {
let Some(bootdevice) = bootdevice else { let Some(bootdevice) = bootdevice else {
bail!("boot device not found") bail!("boot device not found")
@@ -604,6 +624,7 @@ fn flash_boot(bootdevice: &Option<String>, new_boot: PathBuf) -> Result<()> {
Ok(()) Ok(())
} }
#[allow(dead_code)]
fn find_magiskboot(magiskboot_path: Option<PathBuf>, workdir: &Path) -> Result<PathBuf> { fn find_magiskboot(magiskboot_path: Option<PathBuf>, workdir: &Path) -> Result<PathBuf> {
let magiskboot = { let magiskboot = {
if which("magiskboot").is_ok() { if which("magiskboot").is_ok() {
@@ -628,6 +649,7 @@ fn find_magiskboot(magiskboot_path: Option<PathBuf>, workdir: &Path) -> Result<P
Ok(magiskboot) Ok(magiskboot)
} }
#[allow(dead_code)]
fn find_boot_image( fn find_boot_image(
image: &Option<PathBuf>, image: &Option<PathBuf>,
skip_init: bool, skip_init: bool,

View File

@@ -38,11 +38,11 @@ enum Commands {
/// Trigger `boot-complete` event /// Trigger `boot-complete` event
BootCompleted, BootCompleted,
// /// Install KernelSU Next userspace component to system /// Install KernelSU Next userspace component to system
// Install { Install {
// #[arg(long, default_value = None)] #[arg(long, default_value = None)]
// magiskboot: Option<PathBuf>, magiskboot: Option<PathBuf>,
// }, // DISBAND LKM MODE },
/// Uninstall KernelSU Next modules and itself(LKM Only) /// Uninstall KernelSU Next modules and itself(LKM Only)
Uninstall { Uninstall {
@@ -320,7 +320,7 @@ pub fn run() -> Result<()> {
Module::List => module::list_modules(), Module::List => module::list_modules(),
} }
} }
// Commands::Install { magiskboot } => utils::install(magiskboot), // DISBAND LKM MODE Commands::Install { magiskboot } => utils::install(magiskboot),
Commands::Uninstall { magiskboot } => utils::uninstall(magiskboot), Commands::Uninstall { magiskboot } => utils::uninstall(magiskboot),
Commands::Sepolicy { command } => match command { Commands::Sepolicy { command } => match command {
Sepolicy::Patch { sepolicy } => crate::sepolicy::live_patch(&sepolicy), Sepolicy::Patch { sepolicy } => crate::sepolicy::live_patch(&sepolicy),

View File

@@ -7,6 +7,8 @@ use crate::{defs::BINARY_DIR, utils};
pub const RESETPROP_PATH: &str = concatcp!(BINARY_DIR, "resetprop"); pub const RESETPROP_PATH: &str = concatcp!(BINARY_DIR, "resetprop");
pub const BUSYBOX_PATH: &str = concatcp!(BINARY_DIR, "busybox"); pub const BUSYBOX_PATH: &str = concatcp!(BINARY_DIR, "busybox");
#[allow(dead_code)]
pub const BOOTCTL_PATH: &str = concatcp!(BINARY_DIR, "bootctl"); pub const BOOTCTL_PATH: &str = concatcp!(BINARY_DIR, "bootctl");
#[allow(dead_code)] #[allow(dead_code)]

View File

@@ -19,6 +19,7 @@ use crate::defs::{KSU_BACKUP_DIR, KSU_BACKUP_FILE_PREFIX};
use crate::{assets, utils}; use crate::{assets, utils};
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
fn ensure_gki_kernel() -> Result<()> { fn ensure_gki_kernel() -> Result<()> {
let version = get_kernel_version()?; let version = get_kernel_version()?;
let is_gki = version.0 == 5 && version.1 >= 10 || version.2 > 5; let is_gki = version.0 == 5 && version.1 >= 10 || version.2 > 5;
@@ -27,6 +28,7 @@ fn ensure_gki_kernel() -> Result<()> {
} }
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
pub fn get_kernel_version() -> Result<(i32, i32, i32)> { pub fn get_kernel_version() -> Result<(i32, i32, i32)> {
let uname = rustix::system::uname(); let uname = rustix::system::uname();
let version = uname.release().to_string_lossy(); let version = uname.release().to_string_lossy();
@@ -92,10 +94,12 @@ pub fn get_current_kmi() -> Result<String> {
} }
#[cfg(not(target_os = "android"))] #[cfg(not(target_os = "android"))]
#[allow(dead_code)]
pub fn get_current_kmi() -> Result<String> { pub fn get_current_kmi() -> Result<String> {
bail!("Unsupported platform") bail!("Unsupported platform")
} }
#[allow(dead_code)]
fn parse_kmi_from_kernel(kernel: &PathBuf, workdir: &Path) -> Result<String> { fn parse_kmi_from_kernel(kernel: &PathBuf, workdir: &Path) -> Result<String> {
use std::fs::{File, copy}; use std::fs::{File, copy};
use std::io::{BufReader, Read}; use std::io::{BufReader, Read};
@@ -129,6 +133,7 @@ fn parse_kmi_from_kernel(kernel: &PathBuf, workdir: &Path) -> Result<String> {
bail!("Try to choose LKM manually") bail!("Try to choose LKM manually")
} }
#[allow(dead_code)]
fn parse_kmi_from_boot(magiskboot: &Path, image: &PathBuf, workdir: &Path) -> Result<String> { fn parse_kmi_from_boot(magiskboot: &Path, image: &PathBuf, workdir: &Path) -> Result<String> {
let image_path = workdir.join("image"); let image_path = workdir.join("image");
@@ -153,6 +158,7 @@ fn parse_kmi_from_boot(magiskboot: &Path, image: &PathBuf, workdir: &Path) -> Re
parse_kmi_from_kernel(&image_path, workdir) parse_kmi_from_kernel(&image_path, workdir)
} }
#[allow(dead_code)]
fn do_cpio_cmd(magiskboot: &Path, workdir: &Path, cmd: &str) -> Result<()> { fn do_cpio_cmd(magiskboot: &Path, workdir: &Path, cmd: &str) -> Result<()> {
let status = Command::new(magiskboot) let status = Command::new(magiskboot)
.current_dir(workdir) .current_dir(workdir)
@@ -167,6 +173,7 @@ fn do_cpio_cmd(magiskboot: &Path, workdir: &Path, cmd: &str) -> Result<()> {
Ok(()) Ok(())
} }
#[allow(dead_code)]
fn is_magisk_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> { fn is_magisk_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
let status = Command::new(magiskboot) let status = Command::new(magiskboot)
.current_dir(workdir) .current_dir(workdir)
@@ -179,6 +186,7 @@ fn is_magisk_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
Ok(status.code() == Some(1)) Ok(status.code() == Some(1))
} }
#[allow(dead_code)]
fn is_kernelsu_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> { fn is_kernelsu_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
let status = Command::new(magiskboot) let status = Command::new(magiskboot)
.current_dir(workdir) .current_dir(workdir)
@@ -190,6 +198,7 @@ fn is_kernelsu_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
Ok(status.success()) Ok(status.success())
} }
#[allow(dead_code)]
fn dd<P: AsRef<Path>, Q: AsRef<Path>>(ifile: P, ofile: Q) -> Result<()> { fn dd<P: AsRef<Path>, Q: AsRef<Path>>(ifile: P, ofile: Q) -> Result<()> {
let status = Command::new("dd") let status = Command::new("dd")
.stdout(Stdio::null()) .stdout(Stdio::null())
@@ -323,6 +332,7 @@ pub fn restore(
Ok(()) Ok(())
} }
#[allow(dead_code)]
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
pub fn patch( pub fn patch(
image: Option<PathBuf>, image: Option<PathBuf>,
@@ -342,6 +352,7 @@ pub fn patch(
result result
} }
#[allow(dead_code)]
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
fn do_patch( fn do_patch(
image: Option<PathBuf>, image: Option<PathBuf>,
@@ -529,6 +540,7 @@ fn do_patch(
} }
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
fn calculate_sha1(file_path: impl AsRef<Path>) -> Result<String> { fn calculate_sha1(file_path: impl AsRef<Path>) -> Result<String> {
use sha1::Digest; use sha1::Digest;
use std::io::Read; use std::io::Read;
@@ -549,6 +561,7 @@ fn calculate_sha1(file_path: impl AsRef<Path>) -> Result<String> {
} }
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
fn do_backup(magiskboot: &Path, workdir: &Path, image: &str) -> Result<()> { fn do_backup(magiskboot: &Path, workdir: &Path, image: &str) -> Result<()> {
let sha1 = calculate_sha1(image)?; let sha1 = calculate_sha1(image)?;
let filename = format!("{KSU_BACKUP_FILE_PREFIX}{sha1}"); let filename = format!("{KSU_BACKUP_FILE_PREFIX}{sha1}");
@@ -569,6 +582,7 @@ fn do_backup(magiskboot: &Path, workdir: &Path, image: &str) -> Result<()> {
} }
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
#[allow(dead_code)]
fn clean_backup(sha1: &str) -> Result<()> { fn clean_backup(sha1: &str) -> Result<()> {
println!("- Clean up backup"); println!("- Clean up backup");
let backup_name = format!("{}{}", KSU_BACKUP_FILE_PREFIX, sha1); let backup_name = format!("{}{}", KSU_BACKUP_FILE_PREFIX, sha1);
@@ -591,6 +605,7 @@ fn clean_backup(sha1: &str) -> Result<()> {
Ok(()) Ok(())
} }
#[allow(dead_code)]
fn flash_boot(bootdevice: &Option<String>, new_boot: PathBuf) -> Result<()> { fn flash_boot(bootdevice: &Option<String>, new_boot: PathBuf) -> Result<()> {
let Some(bootdevice) = bootdevice else { let Some(bootdevice) = bootdevice else {
bail!("boot device not found") bail!("boot device not found")
@@ -604,6 +619,7 @@ fn flash_boot(bootdevice: &Option<String>, new_boot: PathBuf) -> Result<()> {
Ok(()) Ok(())
} }
#[allow(dead_code)]
fn find_magiskboot(magiskboot_path: Option<PathBuf>, workdir: &Path) -> Result<PathBuf> { fn find_magiskboot(magiskboot_path: Option<PathBuf>, workdir: &Path) -> Result<PathBuf> {
let magiskboot = { let magiskboot = {
if which("magiskboot").is_ok() { if which("magiskboot").is_ok() {
@@ -628,6 +644,7 @@ fn find_magiskboot(magiskboot_path: Option<PathBuf>, workdir: &Path) -> Result<P
Ok(magiskboot) Ok(magiskboot)
} }
#[allow(dead_code)]
fn find_boot_image( fn find_boot_image(
image: &Option<PathBuf>, image: &Option<PathBuf>,
skip_init: bool, skip_init: bool,
@@ -677,6 +694,7 @@ fn find_boot_image(
Ok((bootimage, bootdevice)) Ok((bootimage, bootdevice))
} }
#[allow(dead_code)]
fn post_ota() -> Result<()> { fn post_ota() -> Result<()> {
use crate::defs::ADB_DIR; use crate::defs::ADB_DIR;
use assets::BOOTCTL_PATH; use assets::BOOTCTL_PATH;

View File

@@ -34,11 +34,11 @@ enum Commands {
/// Trigger `boot-complete` event /// Trigger `boot-complete` event
BootCompleted, BootCompleted,
// /// Install KernelSU Next userspace component to system /// Install KernelSU Next userspace component to system
// Install { Install {
// #[arg(long, default_value = None)] #[arg(long, default_value = None)]
// magiskboot: Option<PathBuf>, magiskboot: Option<PathBuf>,
// }, // DISBAND LKM MODE },
/// Uninstall KernelSU Next modules and itself(LKM Only) /// Uninstall KernelSU Next modules and itself(LKM Only)
Uninstall { Uninstall {
@@ -327,7 +327,7 @@ pub fn run() -> Result<()> {
Module::Shrink => module::shrink_ksu_images(), Module::Shrink => module::shrink_ksu_images(),
} }
} }
// Commands::Install { magiskboot } => utils::install(magiskboot), // DISBAND LKM MODE Commands::Install { magiskboot } => utils::install(magiskboot), // DISBAND LKM MODE
Commands::Uninstall { magiskboot } => utils::uninstall(magiskboot), Commands::Uninstall { magiskboot } => utils::uninstall(magiskboot),
Commands::Sepolicy { command } => match command { Commands::Sepolicy { command } => match command {
Sepolicy::Patch { sepolicy } => crate::sepolicy::live_patch(&sepolicy), Sepolicy::Patch { sepolicy } => crate::sepolicy::live_patch(&sepolicy),

View File

@@ -12,6 +12,7 @@ pub const PROFILE_TEMPLATE_DIR: &str = concatcp!(PROFILE_DIR, "templates/");
pub const KSURC_PATH: &str = concatcp!(WORKING_DIR, ".ksurc"); pub const KSURC_PATH: &str = concatcp!(WORKING_DIR, ".ksurc");
pub const KSU_OVERLAY_SOURCE: &str = "KSU"; pub const KSU_OVERLAY_SOURCE: &str = "KSU";
pub const DAEMON_PATH: &str = concatcp!(ADB_DIR, "ksud"); pub const DAEMON_PATH: &str = concatcp!(ADB_DIR, "ksud");
#[allow(dead_code)]
pub const MAGISKBOOT_PATH: &str = concatcp!(BINARY_DIR, "magiskboot"); pub const MAGISKBOOT_PATH: &str = concatcp!(BINARY_DIR, "magiskboot");
#[cfg(target_os = "android")] #[cfg(target_os = "android")]