diff --git a/data.cpp b/data.cpp
index cf8349ba..0ece4e79 100755
--- a/data.cpp
+++ b/data.cpp
@@ -1038,33 +1038,38 @@ void DataManager::Output_Version(void)
string Path;
char version[255];
- if (!PartitionManager.Mount_By_Path("/cache", false)) {
- LOGINFO("Unable to mount '%s' to write version number.\n", Path.c_str());
- return;
- }
- if (!TWFunc::Path_Exists("/cache/recovery/.")) {
- LOGINFO("Recreating /cache/recovery folder.\n");
- if (mkdir("/cache/recovery", S_IRWXU | S_IRWXG | S_IWGRP | S_IXGRP) != 0) {
- LOGERR("DataManager::Output_Version -- Unable to make /cache/recovery\n");
+ std::string cacheDir = TWFunc::get_cache_dir();
+ std::string recoveryCacheDir = cacheDir + "recovery/";
+
+ if (cacheDir == NON_AB_CACHE_DIR) {
+ if (!PartitionManager.Mount_By_Path(NON_AB_CACHE_DIR, false)) {
+ LOGINFO("Unable to mount '%s' to write version number.\n", Path.c_str());
return;
}
}
- Path = "/cache/recovery/.version";
- if (TWFunc::Path_Exists(Path)) {
- unlink(Path.c_str());
+ if (!TWFunc::Path_Exists(recoveryCacheDir)) {
+ LOGINFO("Recreating %s folder.\n", recoveryCacheDir.c_str());
+ if (mkdir(recoveryCacheDir.c_str(), S_IRWXU | S_IRWXG | S_IWGRP | S_IXGRP) != 0) {
+ LOGERR("DataManager::Output_Version -- Unable to make %s: %s\n", recoveryCacheDir.c_str(), strerror(errno));
+ return;
+ }
}
- FILE *fp = fopen(Path.c_str(), "w");
+ std::string verPath = recoveryCacheDir + ".version";
+ if (TWFunc::Path_Exists(verPath)) {
+ unlink(verPath.c_str());
+ }
+ FILE *fp = fopen(verPath.c_str(), "w");
if (fp == NULL) {
- gui_msg(Msg(msg::kError, "error_opening_strerr=Error opening: '{1}' ({2})")(Path)(strerror(errno)));
+ gui_msg(Msg(msg::kError, "error_opening_strerr=Error opening: '{1}' ({2})")(verPath)(strerror(errno)));
return;
}
strcpy(version, TW_VERSION_STR);
fwrite(version, sizeof(version[0]), strlen(version) / sizeof(version[0]), fp);
fclose(fp);
- TWFunc::copy_file("/etc/recovery.fstab", "/cache/recovery/recovery.fstab", 0644);
+ TWFunc::copy_file("/etc/recovery.fstab", recoveryCacheDir + "recovery.fstab", 0644);
PartitionManager.Output_Storage_Fstab();
sync();
- LOGINFO("Version number saved to '%s'\n", Path.c_str());
+ LOGINFO("Version number saved to '%s'\n", verPath.c_str());
#endif
}
@@ -1077,10 +1082,6 @@ void DataManager::ReadSettingsFile(void)
GetValue(TW_IS_ENCRYPTED, is_enc);
GetValue(TW_HAS_DATA_MEDIA, has_data_media);
- if (is_enc == 1 && has_data_media == 1) {
- LOGINFO("Cannot load settings -- encrypted.\n");
- return;
- }
memset(mkdir_path, 0, sizeof(mkdir_path));
memset(settings_file, 0, sizeof(settings_file));
diff --git a/gui/action.cpp b/gui/action.cpp
index 11d9580f..4b644a9b 100755
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -490,6 +490,8 @@ void GUIAction::operation_start(const string operation_name)
DataManager::SetValue("tw_operation", operation_name);
DataManager::SetValue("tw_operation_state", 0);
DataManager::SetValue("tw_operation_status", 0);
+ bool tw_ab_device = TWFunc::get_cache_dir() != NON_AB_CACHE_DIR;
+ DataManager::SetValue("tw_ab_device", tw_ab_device);
}
void GUIAction::operation_end(const int operation_status)
@@ -1059,7 +1061,6 @@ int GUIAction::wipe(std::string arg)
{
operation_start("Format");
DataManager::SetValue("tw_partition", arg);
-
int ret_val = false;
if (simulate) {
diff --git a/gui/theme/common/landscape.xml b/gui/theme/common/landscape.xml
index f6f14bc5..d1bce168 100755
--- a/gui/theme/common/landscape.xml
+++ b/gui/theme/common/landscape.xml
@@ -527,8 +527,9 @@
+
+