summaryrefslogtreecommitdiffstats
path: root/gui/action.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/action.cpp')
-rw-r--r--gui/action.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/gui/action.cpp b/gui/action.cpp
index aee56849f..3e19a6132 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -14,6 +14,7 @@
#include <time.h>
#include <unistd.h>
#include <stdlib.h>
+#include <sys/wait.h>
#include <string>
#include <sstream>
@@ -28,7 +29,6 @@ extern "C" {
#include "../extra-functions.h"
#include "../variables.h"
-int install_zip_package(const char* zip_path_filename);
void fix_perms();
void wipe_dalvik_cache(void);
int check_backup_name(int show_error);
@@ -53,7 +53,6 @@ int gui_start();
#include "rapidxml.hpp"
#include "objects.hpp"
-
void curtainClose(void);
GUIAction::GUIAction(xml_node<>* node)
@@ -159,7 +158,7 @@ void GUIAction::simulate_progress_bar(void)
}
}
-int GUIAction::flash_zip(std::string filename, std::string pageName, const int simulate)
+int GUIAction::flash_zip(std::string filename, std::string pageName, const int simulate, int* wipe_cache)
{
int ret_val = 0;
@@ -177,7 +176,10 @@ int GUIAction::flash_zip(std::string filename, std::string pageName, const int s
int fd = -1;
ZipArchive zip;
- if (mzOpenZipArchive(filename.c_str(), &zip))
+ if (!PartitionManager.Mount_By_Path(filename, true))
+ return -1;
+
+ if (mzOpenZipArchive(filename.c_str(), &zip))
{
LOGE("Unable to open zip file.\n");
return -1;
@@ -195,14 +197,14 @@ int GUIAction::flash_zip(std::string filename, std::string pageName, const int s
!PageManager::LoadPackage("install", "/tmp/twrp.zip", "main"))
{
mzCloseZipArchive(&zip);
- PageManager::SelectPackage("install");
+ PageManager::SelectPackage("install");
gui_changePage("main");
}
else
{
// In this case, we just use the default page
mzCloseZipArchive(&zip);
- gui_changePage(pageName);
+ gui_changePage(pageName);
}
if (fd >= 0)
close(fd);
@@ -210,7 +212,7 @@ int GUIAction::flash_zip(std::string filename, std::string pageName, const int s
if (simulate) {
simulate_progress_bar();
} else {
- ret_val = install_zip_package(filename.c_str());
+ ret_val = TWinstall_zip(filename.c_str(), wipe_cache);
// Now, check if we need to ensure TWRP remains installed...
struct stat st;
@@ -624,14 +626,14 @@ int GUIAction::doAction(Action action, int isThreaded /* = 0 */)
if (function == "flash")
{
- int i, ret_val = 0;
+ int i, ret_val = 0, wipe_cache = 0;
for (i=0; i<zip_queue_index; i++) {
operation_start("Flashing");
DataManager::SetValue("tw_filename", zip_queue[i]);
DataManager::SetValue(TW_ZIP_INDEX, (i + 1));
- ret_val = flash_zip(zip_queue[i], arg, simulate);
+ ret_val = flash_zip(zip_queue[i], arg, simulate, &wipe_cache);
if (ret_val != 0) {
ui_print("Error flashing zip '%s'\n", zip_queue[i].c_str());
i = 10; // Error flashing zip - exit queue
@@ -641,6 +643,9 @@ int GUIAction::doAction(Action action, int isThreaded /* = 0 */)
zip_queue_index = 0;
DataManager::SetValue(TW_ZIP_QUEUE_COUNT, zip_queue_index);
+ if (wipe_cache)
+ PartitionManager.Wipe_By_Path("/cache");
+
if (DataManager::GetIntValue(TW_HAS_INJECTTWRP) == 1 && DataManager::GetIntValue(TW_INJECT_AFTER_ZIP) == 1) {
operation_start("ReinjectTWRP");
ui_print("Injecting TWRP into boot image...\n");