From e502b9169fdec30200a631cd42dfd3a092e0948e Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Sun, 9 Jun 2019 19:59:58 +0200 Subject: [PATCH] Respect failsafe sessions in ACTION_EXECUTE --- .../main/java/com/termux/app/TermuxActivity.java | 3 +-- .../main/java/com/termux/app/TermuxService.java | 15 +++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/termux/app/TermuxActivity.java b/app/src/main/java/com/termux/app/TermuxActivity.java index 10db474f..8297231b 100644 --- a/app/src/main/java/com/termux/app/TermuxActivity.java +++ b/app/src/main/java/com/termux/app/TermuxActivity.java @@ -590,8 +590,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection new AlertDialog.Builder(this).setTitle(R.string.max_terminals_reached_title).setMessage(R.string.max_terminals_reached_message) .setPositiveButton(android.R.string.ok, null).show(); } else { - String executablePath = (failSafe ? "/system/bin/sh" : null); - TerminalSession newSession = mTermService.createTermSession(executablePath, null, null, failSafe); + TerminalSession newSession = mTermService.createTermSession(null, null, null, failSafe); if (sessionName != null) { newSession.mSessionName = sessionName; } diff --git a/app/src/main/java/com/termux/app/TermuxService.java b/app/src/main/java/com/termux/app/TermuxService.java index 1104205d..747fd438 100644 --- a/app/src/main/java/com/termux/app/TermuxService.java +++ b/app/src/main/java/com/termux/app/TermuxService.java @@ -136,7 +136,8 @@ public final class TermuxService extends Service implements SessionChangedCallba mBackgroundTasks.add(task); updateNotification(); } else { - TerminalSession newSession = createTermSession(executablePath, arguments, cwd, false); + boolean failsafe = intent.getBooleanExtra(TermuxActivity.TERMUX_FAILSAFE_SESSION_ACTION, false); + TerminalSession newSession = createTermSession(executablePath, arguments, cwd, failsafe); // Transform executable path to session name, e.g. "/bin/do-something.sh" => "do something.sh". if (executablePath != null) { @@ -271,11 +272,13 @@ public final class TermuxService extends Service implements SessionChangedCallba boolean isLoginShell = false; if (executablePath == null) { - for (String shellBinary : new String[]{"login", "bash", "zsh"}) { - File shellFile = new File(PREFIX_PATH + "/bin/" + shellBinary); - if (shellFile.canExecute()) { - executablePath = shellFile.getAbsolutePath(); - break; + if (!failSafe) { + for (String shellBinary : new String[]{"login", "bash", "zsh"}) { + File shellFile = new File(PREFIX_PATH + "/bin/" + shellBinary); + if (shellFile.canExecute()) { + executablePath = shellFile.getAbsolutePath(); + break; + } } }