AB Cache dir: If device doesn't have /data/cache for FBE, we should
try /persist if in the fstab.
Change-Id: I70dd19538b7f9b8cf61c46f6c8167057eec3342b
diff --git a/twrp-functions.cpp b/twrp-functions.cpp
index 0730ca8..28a0f0c 100755
--- a/twrp-functions.cpp
+++ b/twrp-functions.cpp
@@ -535,7 +535,7 @@
if (!TWFunc::Path_Exists(recoveryDir)) {
LOGINFO("Recreating %s folder.\n", recoveryDir.c_str());
- if (mkdir(recoveryDir.c_str(), S_IRWXU | S_IRWXG | S_IWGRP | S_IXGRP) != 0) {
+ if (!Create_Dir_Recursive(recoveryDir, S_IRWXU | S_IRWXG | S_IWGRP | S_IXGRP, 0, 0)) {
LOGINFO("Unable to create %s folder.\n", recoveryDir.c_str());
}
}
@@ -1171,7 +1171,15 @@
std::string TWFunc::get_cache_dir() {
if (PartitionManager.Find_Partition_By_Path(NON_AB_CACHE_DIR) == NULL) {
- return AB_CACHE_DIR;
+ if (PartitionManager.Find_Partition_By_Path(NON_AB_CACHE_DIR) == NULL) {
+ if (PartitionManager.Find_Partition_By_Path(PERSIST_CACHE_DIR) == NULL) {
+ LOGINFO("Unable to find a directory to store TWRP logs.");
+ return "";
+ }
+ return PERSIST_CACHE_DIR;
+ } else {
+ return AB_CACHE_DIR;
+ }
}
else {
return NON_AB_CACHE_DIR;