Reboot to recovery when running as recovery

This commit is contained in:
topjohnwu
2019-03-30 06:49:29 -04:00
parent 7a133eaf03
commit df4161ffcc
5 changed files with 17 additions and 11 deletions

View File

@@ -728,7 +728,10 @@ void late_start(int client) {
if (access(SECURE_DIR, F_OK) != 0)
xmkdir(SECURE_DIR, 0700);
// And reboot to make proper setup possible
exec_command_sync("/system/bin/reboot");
if (RECOVERY_MODE)
exec_command_sync("/system/bin/reboot", "recovery");
else
exec_command_sync("/system/bin/reboot");
}
auto_start_magiskhide();

View File

@@ -23,7 +23,8 @@
#include <flags.h>
int SDK_INT = -1;
struct stat SERVER_STAT;
bool RECOVERY_MODE = false;
static struct stat SERVER_STAT;
static void verify_client(int client, pid_t pid) {
// Verify caller is the same as server
@@ -123,6 +124,13 @@ static void main_daemon() {
return true;
});
// Load config status
parse_prop_file(MAGISKTMP "/config", [](auto key, auto val) -> bool {
if (key == "RECOVERYMODE" && val == "true")
RECOVERY_MODE = true;
return true;
});
struct sockaddr_un sun;
socklen_t len = setup_sockaddr(&sun, MAIN_SOCKET);
fd = xsocket(AF_LOCAL, SOCK_STREAM | SOCK_CLOEXEC, 0);