You've already forked ReZygisk
mirror of
https://github.com/PerformanC/ReZygisk.git
synced 2025-09-06 06:37:01 +00:00
improve: magisk binary check code
This commit improves and simplifies the code that checks in which path the "magisk" binary is by using loops instead of hardcoded "if"s.
This commit is contained in:
@@ -30,55 +30,38 @@ char *magisk_managers[] = {
|
||||
|
||||
enum magisk_variants variant = Official;
|
||||
/* INFO: Longest path */
|
||||
static char path_to_magisk[sizeof(DEBUG_RAMDISK_MAGISK)];
|
||||
static char path_to_magisk[sizeof(DEBUG_RAMDISK_MAGISK)] = { 0 };
|
||||
bool is_using_sulist = false;
|
||||
|
||||
void magisk_get_existence(struct root_impl_state *state) {
|
||||
struct stat s;
|
||||
if (stat(SBIN_MAGISK, &s) != 0) {
|
||||
const char *magisk_files[] = {
|
||||
SBIN_MAGISK,
|
||||
BITLESS_SBIN_MAGISK,
|
||||
DEBUG_RAMDISK_MAGISK,
|
||||
BITLESS_DEBUG_RAMDISK_MAGISK
|
||||
};
|
||||
|
||||
for (size_t i = 0; i < sizeof(magisk_files) / sizeof(magisk_files[0]); i++) {
|
||||
if (access(magisk_files[i], F_OK) != 0) {
|
||||
if (errno != ENOENT) {
|
||||
LOGE("Failed to stat Magisk /sbin/magisk binary: %s\n", strerror(errno));
|
||||
LOGE("Failed to access Magisk binary: %s\n", strerror(errno));
|
||||
}
|
||||
errno = 0;
|
||||
|
||||
if (stat(BITLESS_SBIN_MAGISK, &s) != 0) {
|
||||
if (errno != ENOENT) {
|
||||
LOGE("Failed to stat Magisk %s binary: %s\n", BITLESS_SBIN_MAGISK, strerror(errno));
|
||||
continue;
|
||||
}
|
||||
errno = 0;
|
||||
|
||||
if (stat(DEBUG_RAMDISK_MAGISK, &s) != 0) {
|
||||
if (errno != ENOENT) {
|
||||
LOGE("Failed to stat Magisk %s binary: %s\n", DEBUG_RAMDISK_MAGISK, strerror(errno));
|
||||
strcpy(path_to_magisk, magisk_files[i]);
|
||||
|
||||
break;
|
||||
}
|
||||
errno = 0;
|
||||
|
||||
if (stat(BITLESS_DEBUG_RAMDISK_MAGISK, &s) != 0) {
|
||||
if (errno != ENOENT) {
|
||||
LOGE("Failed to stat Magisk /debug_ramdisk/magisk binary: %s\n", strerror(errno));
|
||||
}
|
||||
errno = 0;
|
||||
|
||||
if (path_to_magisk[0] == '\0') {
|
||||
state->state = Inexistent;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* INFO: /debug_ramdisk/magisk64 (or 32) doesn't exist but /debug_ramdisk/magisk does */
|
||||
strcpy(path_to_magisk, BITLESS_DEBUG_RAMDISK_MAGISK);
|
||||
} else {
|
||||
/* INFO: /sbin/magisk doesn't exist but /debug_ramdisk/magisk does */
|
||||
strcpy(path_to_magisk, DEBUG_RAMDISK_MAGISK);
|
||||
}
|
||||
} else {
|
||||
/* INFO: /sbin/magisk64 (or 32) doesn't exist but /sbin/magisk does */
|
||||
strcpy(path_to_magisk, BITLESS_SBIN_MAGISK);
|
||||
}
|
||||
} else {
|
||||
/* INFO: /sbin/magisk64 (or 32) exists */
|
||||
strcpy(path_to_magisk, SBIN_MAGISK);
|
||||
}
|
||||
|
||||
char *argv[4] = { "magisk", "-v", NULL, NULL };
|
||||
|
||||
char magisk_info[128];
|
||||
|
||||
Reference in New Issue
Block a user