diff --git a/app/src/main/java/com/topjohnwu/magisk/MagiskManager.java b/app/src/main/java/com/topjohnwu/magisk/MagiskManager.java index 545413e37..017a05098 100644 --- a/app/src/main/java/com/topjohnwu/magisk/MagiskManager.java +++ b/app/src/main/java/com/topjohnwu/magisk/MagiskManager.java @@ -31,11 +31,8 @@ import com.topjohnwu.magisk.utils.Shell; import com.topjohnwu.magisk.utils.Topic; import com.topjohnwu.magisk.utils.Utils; -import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; import java.util.List; import java.util.Locale; import java.util.Map; @@ -229,23 +226,14 @@ public class MagiskManager extends Application { } } - File utils = new File(getFilesDir(), Utils.UTIL_FUNCTIONS); - - try (InputStream in = getAssets().open(Utils.UTIL_FUNCTIONS); - OutputStream out = new FileOutputStream(utils) - ) { - int read; - byte[] bytes = new byte[4096]; - while ((read = in.read(bytes)) != -1) { - out.write(bytes, 0, read); - } + try (InputStream in = getAssets().open(Utils.UTIL_FUNCTIONS)) { + shell.loadInputStream(in); } catch (IOException e) { e.printStackTrace(); } shell.su_raw( "export PATH=" + BUSYBOXPATH + ":$PATH", - ". " + utils, "mount_partitions", "BOOTIMAGE=", "find_boot_image", diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java b/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java index 822b6cbdd..e8afee71e 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java @@ -9,6 +9,7 @@ import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collection; @@ -132,6 +133,19 @@ public class Shell { return rootStatus > 0; } + public void loadInputStream(InputStream in) { + try { + int read; + byte[] bytes = new byte[4096]; + while ((read = in.read(bytes)) != -1) { + STDIN.write(bytes, 0, read); + } + STDIN.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } + public List sh(String... commands) { List res = new ArrayList<>(); if (!isValid) return res;