Revert "Implement autodetection for SAR, based on the installed system"

Change-Id: I9e6c549013c1d5564d0a2e369510535e3869dff6
diff --git a/partition.cpp b/partition.cpp
index be01b15..64b461c 100755
--- a/partition.cpp
+++ b/partition.cpp
@@ -274,7 +274,7 @@
 	// Do nothing
 }
 
-bool TWPartition::Process_Fstab_Line(const char *fstab_line, bool Display_Error, std::map<string, Flags_Map> *twrp_flags, bool Sar_Detect) {
+bool TWPartition::Process_Fstab_Line(const char *fstab_line, bool Display_Error, std::map<string, Flags_Map> *twrp_flags) {
 	char full_line[MAX_FSTAB_LINE_LENGTH];
 	char twflags[MAX_FSTAB_LINE_LENGTH] = "";
 	char* ptr;
@@ -320,12 +320,11 @@
 			Mount_Point = ptr;
 			if (fstab_version == 2 && Is_Super == false) {
 				additional_entry = PartitionManager.Find_Partition_By_Path(Mount_Point);
-				if (!Sar_Detect && additional_entry) {
+				if (additional_entry) {
 					LOGINFO("Found an additional entry for '%s'\n", Mount_Point.c_str());
 				}
 			}
-			if(!Sar_Detect)
-				LOGINFO("Processing '%s'\n", Mount_Point.c_str());
+			LOGINFO("Processing '%s'\n", Mount_Point.c_str());
 			Backup_Path = Mount_Point;
 			Storage_Path = Mount_Point;
 			Display_Name = ptr + 1;
@@ -424,13 +423,11 @@
 	if (Primary_Block_Device.find("*") != string::npos)
 		Wildcard_Block_Device = true;
 
-	if (Sar_Detect) {
-		if(Is_File_System(Fstab_File_System) && (Mount_Point == "/" || Mount_Point == "/system" || Mount_Point == "/system_root"))
-			Find_Actual_Block_Device();
-		else
-			return true;
-	} else if (Mount_Point == "auto") {
-		Mount_Point = "/auto" + to_string(auto_index);
+	if (Mount_Point == "auto") {
+		Mount_Point = "/auto";
+		char autoi[5];
+		sprintf(autoi, "%i", auto_index);
+		Mount_Point += autoi;
 		Backup_Path = Mount_Point;
 		Storage_Path = Mount_Point;
 		Backup_Name = Mount_Point.substr(1);
@@ -455,13 +452,18 @@
 		Setup_File_System(Display_Error);
 		Backup_Name = Display_Name = Mount_Point.substr(1, Mount_Point.size() - 1);
 		if (Mount_Point == "/" || Mount_Point == "/system" || Mount_Point == "/system_root") {
+			Mount_Point = PartitionManager.Get_Android_Root_Path();
+			Backup_Path = Mount_Point;
+			Storage_Path = Mount_Point;
 			Display_Name = "System";
 			Backup_Name = "system";
 			Backup_Display_Name = Display_Name;
 			Storage_Name = Display_Name;
-			Wipe_Available_in_GUI = true;
-			Can_Be_Backed_Up = true;
+			Wipe_Available_in_GUI = false;
+			Can_Be_Backed_Up = false;
+			Can_Be_Wiped = false;
 			Mount_Read_Only = true;
+			Make_Dir(PartitionManager.Get_Android_Root_Path(), true);
 		} else if (Mount_Point == "/product") {
 			Display_Name = "Product";
 			Backup_Name = "Product";
@@ -629,24 +631,6 @@
 		}
 	}
 
-	if (Is_File_System(Fstab_File_System) && (Mount_Point == "/" || Mount_Point == "/system" || Mount_Point == "/system_root")) {
-		if (Sar_Detect) {
-			Mount_Point = "/s";
-			Mount_Read_Only = true;
-			Can_Be_Mounted = true;
-		} else {
-			Mount_Point = PartitionManager.Get_Android_Root_Path();
-			Backup_Path = Mount_Point;
-			Storage_Path = Mount_Point;
-			Make_Dir(Mount_Point, Display_Error);
-		}
-		if (Is_Super) {
-			Can_Be_Backed_Up = false;
-			Can_Be_Wiped = false;
-			Wipe_Available_in_GUI = false;
-		}
-	}
-
 	return true;
 }
 
@@ -1596,24 +1580,10 @@
 		string Command = "/system/bin/mount -o bind '" + Symlink_Path + "' '" + Symlink_Mount_Point + "'";
 		TWFunc::Exec_Cmd(Command);
 	}
-
- #ifndef TW_NO_BIND_SYSTEM
-	if (Mount_Point == "/system_root") {
-		unlink("/system");
-		mkdir("/system", 0755);
-		mount("/system_root/system", "/system", "auto", MS_BIND, NULL);
-	}
-#endif
 	return true;
 }
 
 bool TWPartition::UnMount(bool Display_Error) {
-	if (Mount_Point == "/system_root") {
-		if (umount("/system") == -1)
-			umount2("/system", MNT_DETACH);
-		rmdir("/system");
-		symlink("/system_root/system", "/system");
-	}
 	if (Is_Mounted()) {
 		int never_unmount_system;
 
@@ -2960,7 +2930,7 @@
 		TWPartition *part = new TWPartition;
 		char buffer[MAX_FSTAB_LINE_LENGTH];
 		sprintf(buffer, "%s %s-%i auto defaults defaults", item.c_str(), Mount_Point.c_str(), ++mount_point_index);
-		part->Process_Fstab_Line(buffer, false, NULL, false);
+		part->Process_Fstab_Line(buffer, false, NULL);
 		char display[MAX_FSTAB_LINE_LENGTH];
 		sprintf(display, "%s %i", Storage_Name.c_str(), mount_point_index);
 		part->Storage_Name = display;
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index b19742e..34fd39f 100755
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -134,7 +134,7 @@
 #endif
 }
 
-int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error, bool Sar_Detect) {
+int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error) {
 	FILE *fstabFile;
 	char fstab_line[MAX_FSTAB_LINE_LENGTH];
 	TWPartition* settings_partition = NULL;
@@ -223,7 +223,7 @@
 			fstab_line[line_size] = '\n';
 
 		TWPartition* partition = new TWPartition();
-		if (partition->Process_Fstab_Line(fstab_line, Display_Error, &twrp_flags, Sar_Detect))
+		if (partition->Process_Fstab_Line(fstab_line, Display_Error, &twrp_flags))
 			Partitions.push_back(partition);
 		else
 			delete partition;
@@ -238,7 +238,7 @@
 		for (std::map<string, Flags_Map>::iterator mapit=twrp_flags.begin(); mapit!=twrp_flags.end(); mapit++) {
 			if (Find_Partition_By_Path(mapit->first) == NULL) {
 				TWPartition* partition = new TWPartition();
-				if (partition->Process_Fstab_Line(mapit->second.fstab_line, Display_Error, NULL, Sar_Detect))
+				if (partition->Process_Fstab_Line(mapit->second.fstab_line, Display_Error, NULL))
 					Partitions.push_back(partition);
 				else
 					delete partition;
@@ -255,13 +255,6 @@
 
 	std::vector<TWPartition*>::iterator iter;
 	for (iter = Partitions.begin(); iter != Partitions.end(); iter++) {
-		if (Sar_Detect) {
-			if ((*iter)->Mount_Point == "/s")
-				return true;
-			else
-				continue;
-		}
-
 		(*iter)->Partition_Post_Processing(Display_Error);
 
 		if ((*iter)->Is_Storage) {
@@ -2934,9 +2927,7 @@
 }
 
 string TWPartitionManager::Get_Android_Root_Path() {
-	if (property_get_bool("ro.twrp.sar", false))
-		return "/system_root";
-	return "/system";
+	return "/system_root";
 }
 
 void TWPartitionManager::Remove_Uevent_Devices(const string& Mount_Point) {
diff --git a/partitions.hpp b/partitions.hpp
index be8dcd7..ba7eec3 100755
--- a/partitions.hpp
+++ b/partitions.hpp
@@ -175,7 +175,7 @@
 	void Set_Block_Device(std::string block_device);						  // Allow super partition setup to change block device
 
 private:
-	bool Process_Fstab_Line(const char *fstab_line, bool Display_Error, std::map<string, Flags_Map> *twrp_flags, bool Sar_Detect); // Processes a fstab line
+	bool Process_Fstab_Line(const char *fstab_line, bool Display_Error, std::map<string, Flags_Map> *twrp_flags); // Processes a fstab line
 	void Setup_Data_Partition(bool Display_Error);                            // Setup data partition after fstab processed
 	void Set_FBE_Status();													  // Set FBE status of partition
 	void Setup_Cache_Partition(bool Display_Error);                           // Setup cache partition after fstab processed
@@ -301,7 +301,7 @@
 	~TWPartitionManager() {}
 
 public:
-	int Process_Fstab(string Fstab_Filename, bool Display_Error, bool Sar_Detect);             // Parses the fstab and populates the partitions
+	int Process_Fstab(string Fstab_Filename, bool Display_Error);             // Parses the fstab and populates the partitions
 	int Write_Fstab();                                                        // Creates /etc/fstab file that's used by the command line for mount commands
 	void Decrypt_Data();													  // Decrypt Data if enabled
 	void Output_Partition_Logging();                                          // Outputs partition information to the log
diff --git a/twrp.cpp b/twrp.cpp
index dfdf93b..b767af6 100755
--- a/twrp.cpp
+++ b/twrp.cpp
@@ -149,51 +149,8 @@
 	if (!TWFunc::Path_Exists(fstab_filename)) {
 		fstab_filename = "/etc/recovery.fstab";
 	}
-
-	// Begin SAR detection
-	{
-		TWPartitionManager SarPartitionManager;
-		printf("=> Processing %s for SAR-detection\n", fstab_filename.c_str());
-		if (!SarPartitionManager.Process_Fstab(fstab_filename, 1, 1)) {
-			LOGERR("Failing out of recovery due to problem with fstab.\n");
-			return -1;
-		}
-
-		mkdir("/s", 0755);
-
-#if defined(AB_OTA_UPDATER) || defined(__ANDROID_API_Q__)
-		bool fallback_sar = true;
-#else
-		bool fallback_sar = property_get_bool("ro.build.system_root_image", false);
-#endif
-
-		if(SarPartitionManager.Mount_By_Path("/s", false)) {
-			if (TWFunc::Path_Exists("/s/build.prop")) {
-				LOGINFO("SAR-DETECT: Non-SAR System detected\n");
-				property_set("ro.twrp.sar", "0");
-				rmdir("/system_root");
-			} else if (TWFunc::Path_Exists("/s/system/build.prop")) {
-				LOGINFO("SAR-DETECT: SAR System detected\n");
-				property_set("ro.twrp.sar", "1");
-			} else {
-				LOGINFO("SAR-DETECT: No build.prop found, falling back to %s\n", fallback_sar ? "SAR" : "Non-SAR");
-				property_set("ro.twrp.sar", fallback_sar ? "1" : "0");
-			}
-
-			SarPartitionManager.UnMount_By_Path("/s", false);
-		} else {
-			LOGINFO("SAR-DETECT: Could not mount system partition, falling back to %s\n", fallback_sar ? "SAR":"Non-SAR");
-			property_set("ro.twrp.sar", fallback_sar ? "1" : "0");
-		}
-
-		rmdir("/s");
-
-		TWFunc::check_and_run_script("/system/bin/sarsetup.sh", "boot");
-	}
-	// End SAR detection
-
 	printf("=> Processing %s\n", fstab_filename.c_str());
-	if (!PartitionManager.Process_Fstab(fstab_filename, 1, 0)) {
+	if (!PartitionManager.Process_Fstab(fstab_filename, 1)) {
 		LOGERR("Failing out of recovery due to problem with fstab.\n");
 		return -1;
 	}