Use SHELL environment

This commit is contained in:
Mygod
2020-07-07 03:55:44 +08:00
parent 2047e02ec7
commit 293140f64e
2 changed files with 5 additions and 2 deletions

View File

@@ -19,12 +19,14 @@ import java.io.FileOutputStream
import java.io.InterruptedIOException
import java.util.concurrent.Executor
val SHELL = System.getenv("SHELL") ?: "sh"
@Parcelize
class Dump(val path: String, val cacheDir: File = app.deviceStorage.codeCacheDir) : RootCommandNoResult {
@Suppress("BlockingMethodInNonBlockingContext")
override suspend fun execute() = withContext(Dispatchers.IO) {
FileOutputStream(path, true).use { out ->
val process = ProcessBuilder("sh").redirectErrorStream(true).start()
val process = ProcessBuilder(SHELL).redirectErrorStream(true).start()
process.outputStream.bufferedWriter().use { commands ->
// https://android.googlesource.com/platform/external/iptables/+/android-7.0.0_r1/iptables/Android.mk#34
val iptablesSave = if (Build.VERSION.SDK_INT < 24) File(cacheDir, "iptables-save").absolutePath.also {

View File

@@ -16,7 +16,7 @@ object RoutingCommands {
class Clean : RootCommandOneWay {
@Suppress("BlockingMethodInNonBlockingContext")
override suspend fun execute() = withContext(Dispatchers.IO) {
val process = ProcessBuilder("sh").redirectErrorStream(true).start()
val process = ProcessBuilder(SHELL).redirectErrorStream(true).start()
process.outputStream.bufferedWriter().use(Routing.Companion::appendCleanCommands)
when (val code = process.waitFor()) {
0 -> { }
@@ -48,6 +48,7 @@ object RoutingCommands {
class Process(val command: List<String>, private val redirect: Boolean = false) : RootCommand<ProcessResult> {
@Suppress("BlockingMethodInNonBlockingContext")
override suspend fun execute() = withContext(Dispatchers.IO) {
val command = if (command[0] == "sh") listOf(SHELL) + command.drop(1) else command
val process = ProcessBuilder(command).redirectErrorStream(redirect).start()
coroutineScope {
val output = async { process.inputStream.bufferedReader().readText() }