Read only the first line instead of loading the whole file

This commit is contained in:
tonymanou 2017-01-15 23:45:43 +01:00 committed by topjohnwu
parent cbb32f82eb
commit a5b573eaaa
2 changed files with 13 additions and 3 deletions

View File

@ -218,9 +218,8 @@ public class Async {
protected boolean unzipAndCheck() { protected boolean unzipAndCheck() {
ZipUtils.unzip(mCachedFile, mCachedFile.getParentFile(), "META-INF/com/google/android"); ZipUtils.unzip(mCachedFile, mCachedFile.getParentFile(), "META-INF/com/google/android");
List<String> ret; String line = Utils.readFirstLine(mCachedFile.getParent() + "/META-INF/com/google/android/updater-script");
ret = Utils.readFile(mCachedFile.getParent() + "/META-INF/com/google/android/updater-script"); return line != null && line.contains("#MAGISK");
return Utils.isValidShellResponse(ret) && ret.get(0).contains("#MAGISK");
} }
@Override @Override

View File

@ -75,6 +75,17 @@ public class Utils {
return ret; return ret;
} }
public static String readFirstLine(String path) {
List<String> ret;
String command = "head -1 " + path;
if (Shell.rootAccess()) {
ret = Shell.su(command);
} else {
ret = Shell.sh(command);
}
return isValidShellResponse(ret) ? ret.get(0) : null;
}
public static void dlAndReceive(Context context, DownloadReceiver receiver, String link, String filename) { public static void dlAndReceive(Context context, DownloadReceiver receiver, String link, String filename) {
if (isDownloading) { if (isDownloading) {
return; return;