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;