manager: also detect susfs variant

This commit is contained in:
Rifat Azad
2024-12-23 01:07:21 +06:00
parent 74876b3b40
commit 2538f51bb4
5 changed files with 32 additions and 20 deletions

1
manager/.gitignore vendored
View File

@@ -8,3 +8,4 @@ captures
.cxx .cxx
local.properties local.properties
key.jks key.jks
setup.sh

View File

@@ -372,15 +372,16 @@ private fun InfoCard() {
} }
InfoCardItem(stringResource(R.string.home_kernel), InfoCardItem(
uname.release, label = stringResource(R.string.home_kernel),
content = uname.release,
icon = Icons.Filled.Memory, icon = Icons.Filled.Memory,
) )
Spacer(Modifier.height(16.dp)) Spacer(Modifier.height(16.dp))
InfoCardItem( InfoCardItem(
stringResource(R.string.home_android), label = stringResource(R.string.home_android),
"${Build.VERSION.RELEASE} (${Build.VERSION.SDK_INT})", content = "${Build.VERSION.RELEASE} (${Build.VERSION.SDK_INT})",
icon = Icons.Filled.Android, icon = Icons.Filled.Android,
) )
@@ -388,8 +389,8 @@ private fun InfoCard() {
Spacer(Modifier.height(16.dp)) Spacer(Modifier.height(16.dp))
val managerVersion = getManagerVersion(context) val managerVersion = getManagerVersion(context)
InfoCardItem( InfoCardItem(
stringResource(R.string.home_manager_version), label = stringResource(R.string.home_manager_version),
"${managerVersion.first}-next (${managerVersion.second})", content = "${managerVersion.first}-next (${managerVersion.second})",
icon = Icons.AutoMirrored.Filled.Article, icon = Icons.AutoMirrored.Filled.Article,
) )
@@ -405,7 +406,7 @@ private fun InfoCard() {
if (suSFS != "Unsupported") { if (suSFS != "Unsupported") {
InfoCardItem( InfoCardItem(
label = stringResource(R.string.home_susfs_version), label = stringResource(R.string.home_susfs_version),
content = getSuSFSVersion(), content = "${getSuSFSVersion()} (${getSuSFSVariant()})",
icon = Icons.Filled.SettingsSuggest, icon = Icons.Filled.SettingsSuggest,
) )
} }

View File

@@ -127,14 +127,18 @@ private fun getSuSFSPath(): String {
fun getSuSFS(): String { fun getSuSFS(): String {
val shell = getRootShell() val shell = getRootShell()
val result = ShellUtils.fastCmd(shell, "${getSuSFSPath()} support") val result = ShellUtils.fastCmd(shell, "${getSuSFSPath()} support")
return result return result
} }
fun getSuSFSVersion(): String { fun getSuSFSVersion(): String {
val shell = getRootShell() val shell = getRootShell()
val result = ShellUtils.fastCmd(shell, "${getSuSFSPath()} version") val result = ShellUtils.fastCmd(shell, "${getSuSFSPath()} version")
return result
}
fun getSuSFSVariant(): String {
val shell = getRootShell()
val result = ShellUtils.fastCmd(shell, "${getSuSFSPath()} variant")
return result return result
} }

View File

@@ -5,10 +5,12 @@
#define KERNEL_SU_OPTION 0xDEADBEEF #define KERNEL_SU_OPTION 0xDEADBEEF
#define CMD_SUSFS_SHOW_VERSION 0x555e1 #define CMD_SUSFS_SHOW_VERSION 0x555e1
#define CMD_SUSFS_SHOW_VARIANT 0x555e3
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
int error = -1; int error = -1;
char version[16]; char version[16];
char variant[16];
// Check for arguments // Check for arguments
if (argc < 2) { if (argc < 2) {
@@ -17,26 +19,30 @@ int main(int argc, char *argv[]) {
} }
// If 'version' is given, show version // If 'version' is given, show version
if (strcmp(argv[1], "version") == 0) { if (strcmp(argv[1], "support") == 0) {
prctl(KERNEL_SU_OPTION, CMD_SUSFS_SHOW_VERSION, version, NULL, &error);
if (!error) {
printf("%s\n", version);
} else {
printf("Unsupported\n");
}
}
// If 'support' is given, check if version starts with 'v'
else if (strcmp(argv[1], "support") == 0) {
prctl(KERNEL_SU_OPTION, CMD_SUSFS_SHOW_VERSION, version, NULL, &error); prctl(KERNEL_SU_OPTION, CMD_SUSFS_SHOW_VERSION, version, NULL, &error);
if (!error) { if (!error) {
if (version[0] == 'v') { if (version[0] == 'v') {
printf("Supported\n"); printf("Supported\n");
} else {
printf("Unsupported\n");
} }
} else { } else {
printf("Unsupported\n"); printf("Unsupported\n");
} }
} else if (strcmp(argv[1], "version") == 0) {
prctl(KERNEL_SU_OPTION, CMD_SUSFS_SHOW_VERSION, version, NULL, &error);
if (!error) {
printf("%s\n", version);
} else {
printf("Invalid\n");
}
} else if (strcmp(argv[1], "variant") == 0) {
prctl(KERNEL_SU_OPTION, CMD_SUSFS_SHOW_VARIANT, variant, NULL, &error);
if (!error) {
printf("%s\n", variant);
} else {
printf("Invalid\n");
}
} else { } else {
fprintf(stderr, "Invalid argument: %s\n", argv[1]); fprintf(stderr, "Invalid argument: %s\n", argv[1]);
return 1; return 1;