Make system read only show no matter what on first TWRP boot
Initial value for tw_mount_system_ro is now 2. If the value of
tw_mount_system_ro is 2 during boot, then we will show the system
read only prompt and ignore the value from the lifetime writes
check.
Note: Changed the value of FILE_VERSION which will trigger the
data manager to throw out previous settings and start with default
values so that existing TWRP users will get the prompt at least
once.
Change-Id: I447767b64617f855156a19a5dc15c4ece6dff7b8
diff --git a/data.cpp b/data.cpp
index 6e39bc3..d7b02f1 100644
--- a/data.cpp
+++ b/data.cpp
@@ -65,7 +65,7 @@
void gui_notifyVarChange(const char *name, const char* value);
}
-#define FILE_VERSION 0x00010001
+#define FILE_VERSION 0x00010010
using namespace std;
@@ -881,7 +881,7 @@
mConstValues.insert(make_pair("tw_has_mtp", "0"));
mConstValues.insert(make_pair("tw_mtp_enabled", "0"));
#endif
- mValues.insert(make_pair("tw_mount_system_ro", make_pair("1", 1)));
+ mValues.insert(make_pair("tw_mount_system_ro", make_pair("2", 1)));
mValues.insert(make_pair("tw_never_show_system_ro_page", make_pair("0", 1)));
pthread_mutex_unlock(&m_valuesLock);
diff --git a/gui/devices/landscape/res/landscape.xml b/gui/devices/landscape/res/landscape.xml
index b416691..c75be3c 100644
--- a/gui/devices/landscape/res/landscape.xml
+++ b/gui/devices/landscape/res/landscape.xml
@@ -3664,7 +3664,7 @@
<object type="text">
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
- <text>TWRP has detected an unmodified system partition.</text>
+ <text>Keep System Read Only?</text>
</object>
<object type="text">
diff --git a/gui/devices/portrait/res/portrait.xml b/gui/devices/portrait/res/portrait.xml
index cf113ef..969044c 100644
--- a/gui/devices/portrait/res/portrait.xml
+++ b/gui/devices/portrait/res/portrait.xml
@@ -3675,7 +3675,7 @@
<object type="text">
<placement x="%center_x%" y="%row1_header_y%" placement="5" />
- <text>TWRP has detected an unmodified system partition.</text>
+ <text>Keep System Read Only?</text>
</object>
<object type="text">
diff --git a/gui/devices/watch/res/watch.xml b/gui/devices/watch/res/watch.xml
index 7fae5f3..28198fb 100644
--- a/gui/devices/watch/res/watch.xml
+++ b/gui/devices/watch/res/watch.xml
@@ -3664,7 +3664,7 @@
<object type="text">
<placement x="%center_x%" y="%row1_header_y%" placement="5" />
- <text>TWRP has detected an unmodified system partition.</text>
+ <text>Keep System Read Only?</text>
</object>
<object type="text">
diff --git a/twrp.cpp b/twrp.cpp
index e34c9b3..091de19 100644
--- a/twrp.cpp
+++ b/twrp.cpp
@@ -335,18 +335,17 @@
// Check if system has never been changed
TWPartition* sys = PartitionManager.Find_Partition_By_Path("/system");
if (sys) {
- if (DataManager::GetIntValue("tw_mount_system_ro") != 0) {
- if (sys->Check_Lifetime_Writes() == 0) {
- if (DataManager::GetIntValue("tw_never_show_system_ro_page") == 0) {
- DataManager::SetValue("tw_back", "main");
- if (gui_startPage("system_readonly", 1, 1) != 0) {
- LOGERR("Failed to start system_readonly GUI page.\n");
- }
+ if ((DataManager::GetIntValue("tw_mount_system_ro") == 0 && sys->Check_Lifetime_Writes() == 0) || DataManager::GetIntValue("tw_mount_system_ro") == 2) {
+ if (DataManager::GetIntValue("tw_never_show_system_ro_page") == 0) {
+ DataManager::SetValue("tw_back", "main");
+ if (gui_startPage("system_readonly", 1, 1) != 0) {
+ LOGERR("Failed to start system_readonly GUI page.\n");
}
- } else {
- DataManager::SetValue("tw_mount_system_ro", 0);
+ } else if (DataManager::GetIntValue("tw_mount_system_ro") == 0) {
sys->Change_Mount_Read_Only(false);
}
+ } else if (DataManager::GetIntValue("tw_mount_system_ro") == 1) {
+ // Do nothing, user selected to leave system read only
} else {
sys->Change_Mount_Read_Only(false);
}