repack: move sbin to /system ramdisk and update repacking
for android-10

This will support updating the ramdisk to a different
compression format and co-exist with magisk.

We are also cleaning up and removing non android-10
api makefile actions.

We are also moving twrp repacking to its own class. We
check the new ramdisk format and if it's different
we have magisk compress using the new ramdisk format.

Change-Id: I770030aae7797e75817178b2f0fccd9f39dc23af
diff --git a/partition.cpp b/partition.cpp
index e76e955..a8a8e45 100755
--- a/partition.cpp
+++ b/partition.cpp
@@ -1460,11 +1460,11 @@
 
 	// Check the current file system before mounting
 	Check_FS_Type();
-	if (Current_File_System == "exfat" && TWFunc::Path_Exists("/sbin/exfat-fuse")) {
-		string cmd = "/sbin/exfat-fuse -o big_writes,max_read=131072,max_write=131072 " + Actual_Block_Device + " " + Mount_Point;
+	if (Current_File_System == "exfat" && TWFunc::Path_Exists("/system/bin/exfat-fuse")) {
+		string cmd = "/system/bin/exfat-fuse -o big_writes,max_read=131072,max_write=131072 " + Actual_Block_Device + " " + Mount_Point;
 		LOGINFO("cmd: %s\n", cmd.c_str());
 		string result;
-		if (TWFunc::Exec_Cmd(cmd, result) != 0) {
+		if (TWFunc::Exec_Cmd(cmd, result, false) != 0) {
 			LOGINFO("exfat-fuse failed to mount with result '%s', trying vfat\n", result.c_str());
 			Current_File_System = "vfat";
 		} else {
@@ -1478,19 +1478,19 @@
 		}
 	}
 
-	if (Current_File_System == "ntfs" && (TWFunc::Path_Exists("/sbin/ntfs-3g") || TWFunc::Path_Exists("/sbin/mount.ntfs"))) {
+	if (Current_File_System == "ntfs" && (TWFunc::Path_Exists("/system/bin/ntfs-3g") || TWFunc::Path_Exists("/system/bin/mount.ntfs"))) {
 		string cmd;
 		string Ntfsmount_Binary = "";
 
-		if (TWFunc::Path_Exists("/sbin/ntfs-3g"))
+		if (TWFunc::Path_Exists("/system/bin/ntfs-3g"))
 			Ntfsmount_Binary = "ntfs-3g";
-		else if (TWFunc::Path_Exists("/sbin/mount.ntfs"))
+		else if (TWFunc::Path_Exists("/system/bin/mount.ntfs"))
 			Ntfsmount_Binary = "mount.ntfs";
 
 		if (Mount_Read_Only)
-			cmd = "/sbin/" + Ntfsmount_Binary + " -o ro " + Actual_Block_Device + " " + Mount_Point;
+			cmd = "/system/bin/" + Ntfsmount_Binary + " -o ro " + Actual_Block_Device + " " + Mount_Point;
 		else
-			cmd = "/sbin/" + Ntfsmount_Binary + " " + Actual_Block_Device + " " + Mount_Point;
+			cmd = "/system/bin/" + Ntfsmount_Binary + " " + Actual_Block_Device + " " + Mount_Point;
 		LOGINFO("cmd: '%s'\n", cmd.c_str());
 
 		if (TWFunc::Exec_Cmd(cmd) == 0) {
@@ -1579,7 +1579,7 @@
 		Update_Size(Display_Error);
 
 	if (!Symlink_Mount_Point.empty() && TWFunc::Path_Exists(Symlink_Path)) {
-		string Command = "mount -o bind '" + Symlink_Path + "' '" + Symlink_Mount_Point + "'";
+		string Command = "/system/bin/mount -o bind '" + Symlink_Path + "' '" + Symlink_Mount_Point + "'";
 		TWFunc::Exec_Cmd(Command);
 	}
 
@@ -1747,15 +1747,15 @@
 bool TWPartition::Can_Repair() {
 	if (Mount_Read_Only)
 		return false;
-	if (Current_File_System == "vfat" && TWFunc::Path_Exists("/sbin/fsck.fat"))
+	if (Current_File_System == "vfat" && TWFunc::Path_Exists("/system/bin/fsck.fat"))
 		return true;
-	else if ((Current_File_System == "ext2" || Current_File_System == "ext3" || Current_File_System == "ext4") && TWFunc::Path_Exists("/sbin/e2fsck"))
+	else if ((Current_File_System == "ext2" || Current_File_System == "ext3" || Current_File_System == "ext4") && TWFunc::Path_Exists("/system/bin/e2fsck"))
 		return true;
-	else if (Current_File_System == "exfat" && TWFunc::Path_Exists("/sbin/fsck.exfat"))
+	else if (Current_File_System == "exfat" && TWFunc::Path_Exists("/system/bin/fsck.exfat"))
 		return true;
-	else if (Current_File_System == "f2fs" && TWFunc::Path_Exists("/sbin/fsck.f2fs"))
+	else if (Current_File_System == "f2fs" && TWFunc::Path_Exists("/system/bin/fsck.f2fs"))
 		return true;
-	else if (Current_File_System == "ntfs" && (TWFunc::Path_Exists("/sbin/ntfsfix") || TWFunc::Path_Exists("/sbin/fsck.ntfs")))
+	else if (Current_File_System == "ntfs" && (TWFunc::Path_Exists("/system/bin/ntfsfix") || TWFunc::Path_Exists("/system/bin/fsck.ntfs")))
 		return true;
 	return false;
 }
@@ -1764,7 +1764,7 @@
 	string command;
 
 	if (Current_File_System == "vfat") {
-		if (!TWFunc::Path_Exists("/sbin/fsck.fat")) {
+		if (!TWFunc::Path_Exists("/system/bin/fsck.fat")) {
 			gui_msg(Msg(msg::kError, "repair_not_exist={1} does not exist! Cannot repair!")("fsck.fat"));
 			return false;
 		}
@@ -1772,7 +1772,7 @@
 			return false;
 		gui_msg(Msg("repairing_using=Repairing {1} using {2}...")(Display_Name)("fsck.fat"));
 		Find_Actual_Block_Device();
-		command = "/sbin/fsck.fat -y " + Actual_Block_Device;
+		command = "/system/bin/fsck.fat -y " + Actual_Block_Device;
 		LOGINFO("Repair command: %s\n", command.c_str());
 		if (TWFunc::Exec_Cmd(command) == 0) {
 			gui_msg("done=Done.");
@@ -1783,7 +1783,7 @@
 		}
 	}
 	if (Current_File_System == "ext2" || Current_File_System == "ext3" || Current_File_System == "ext4") {
-		if (!TWFunc::Path_Exists("/sbin/e2fsck")) {
+		if (!TWFunc::Path_Exists("/system/bin/e2fsck")) {
 			gui_msg(Msg(msg::kError, "repair_not_exist={1} does not exist! Cannot repair!")("e2fsck"));
 			return false;
 		}
@@ -1791,7 +1791,7 @@
 			return false;
 		gui_msg(Msg("repairing_using=Repairing {1} using {2}...")(Display_Name)("e2fsck"));
 		Find_Actual_Block_Device();
-		command = "/sbin/e2fsck -fp " + Actual_Block_Device;
+		command = "/system/bin/e2fsck -fp " + Actual_Block_Device;
 		LOGINFO("Repair command: %s\n", command.c_str());
 		if (TWFunc::Exec_Cmd(command) == 0) {
 			gui_msg("done=Done.");
@@ -1802,7 +1802,7 @@
 		}
 	}
 	if (Current_File_System == "exfat") {
-		if (!TWFunc::Path_Exists("/sbin/fsck.exfat")) {
+		if (!TWFunc::Path_Exists("/system/bin/fsck.exfat")) {
 			gui_msg(Msg(msg::kError, "repair_not_exist={1} does not exist! Cannot repair!")("fsck.exfat"));
 			return false;
 		}
@@ -1810,7 +1810,7 @@
 			return false;
 		gui_msg(Msg("repairing_using=Repairing {1} using {2}...")(Display_Name)("fsck.exfat"));
 		Find_Actual_Block_Device();
-		command = "/sbin/fsck.exfat " + Actual_Block_Device;
+		command = "/system/bin/fsck.exfat " + Actual_Block_Device;
 		LOGINFO("Repair command: %s\n", command.c_str());
 		if (TWFunc::Exec_Cmd(command) == 0) {
 			gui_msg("done=Done.");
@@ -1821,7 +1821,7 @@
 		}
 	}
 	if (Current_File_System == "f2fs") {
-		if (!TWFunc::Path_Exists("/sbin/fsck.f2fs")) {
+		if (!TWFunc::Path_Exists("/system/bin/fsck.f2fs")) {
 			gui_msg(Msg(msg::kError, "repair_not_exist={1} does not exist! Cannot repair!")("fsck.f2fs"));
 			return false;
 		}
@@ -1829,7 +1829,7 @@
 			return false;
 		gui_msg(Msg("repairing_using=Repairing {1} using {2}...")(Display_Name)("fsck.f2fs"));
 		Find_Actual_Block_Device();
-		command = "/sbin/fsck.f2fs " + Actual_Block_Device;
+		command = "/system/bin/fsck.f2fs " + Actual_Block_Device;
 		LOGINFO("Repair command: %s\n", command.c_str());
 		if (TWFunc::Exec_Cmd(command) == 0) {
 			gui_msg("done=Done.");
@@ -1841,9 +1841,9 @@
 	}
 	if (Current_File_System == "ntfs") {
 		string Ntfsfix_Binary;
-		if (TWFunc::Path_Exists("/sbin/ntfsfix"))
+		if (TWFunc::Path_Exists("/system/bin/ntfsfix"))
 			Ntfsfix_Binary = "ntfsfix";
-		else if (TWFunc::Path_Exists("/sbin/fsck.ntfs"))
+		else if (TWFunc::Path_Exists("/system/bin/fsck.ntfs"))
 			Ntfsfix_Binary = "fsck.ntfs";
 		else {
 			gui_msg(Msg(msg::kError, "repair_not_exist={1} does not exist! Cannot repair!")("ntfsfix"));
@@ -1853,7 +1853,7 @@
 			return false;
 		gui_msg(Msg("repairing_using=Repairing {1} using {2}...")(Display_Name)(Ntfsfix_Binary));
 		Find_Actual_Block_Device();
-		command = "/sbin/" + Ntfsfix_Binary + " " + Actual_Block_Device;
+		command = "/system/bin/" + Ntfsfix_Binary + " " + Actual_Block_Device;
 		LOGINFO("Repair command: %s\n", command.c_str());
 		if (TWFunc::Exec_Cmd(command) == 0) {
 			gui_msg("done=Done.");
@@ -1869,7 +1869,7 @@
 bool TWPartition::Can_Resize() {
 	if (Mount_Read_Only)
 		return false;
-	if ((Current_File_System == "ext2" || Current_File_System == "ext3" || Current_File_System == "ext4") && TWFunc::Path_Exists("/sbin/resize2fs"))
+	if ((Current_File_System == "ext2" || Current_File_System == "ext3" || Current_File_System == "ext4") && TWFunc::Path_Exists("/system/bin/resize2fs"))
 		return true;
 	return false;
 }
@@ -1883,7 +1883,7 @@
 			gui_msg(Msg(msg::kError, "cannot_resize=Cannot resize {1}.")(Display_Name));
 			return false;
 		}
-		if (!TWFunc::Path_Exists("/sbin/resize2fs")) {
+		if (!TWFunc::Path_Exists("/system/bin/resize2fs")) {
 			LOGINFO("resize2fs does not exist! Cannot resize!\n");
 			gui_msg(Msg(msg::kError, "cannot_resize=Cannot resize {1}.")(Display_Name));
 			return false;
@@ -1894,7 +1894,7 @@
 			return false;
 		gui_msg(Msg("resizing=Resizing {1} using {2}...")(Display_Name)("resize2fs"));
 		Find_Actual_Block_Device();
-		command = "/sbin/resize2fs " + Actual_Block_Device;
+		command = "/system/bin/resize2fs " + Actual_Block_Device;
 		if (Length != 0) {
 			unsigned long long Actual_Size = IOCTL_Get_Block_Size();
 			if (Actual_Size == 0)
@@ -2101,9 +2101,9 @@
 		return false;
 
 #if PLATFORM_SDK_VERSION < 28
-	if (!TWFunc::Path_Exists("/sbin/mke2fs"))
+	if (!TWFunc::Path_Exists("/system/bin/mke2fs"))
 #else
-	if (!TWFunc::Path_Exists("/sbin/mke2fs") || !TWFunc::Path_Exists("/sbin/e2fsdroid"))
+	if (!TWFunc::Path_Exists("/system/bin/mke2fs") || !TWFunc::Path_Exists("/system/bin/e2fsdroid"))
 #endif
 		return Wipe_RMRF();
 
@@ -2151,7 +2151,7 @@
 		return false;
 	}
 
-	if (TWFunc::Path_Exists("/sbin/e2fsdroid")) {
+	if (TWFunc::Path_Exists("/system/bin/e2fsdroid")) {
 		const string& File_Contexts_Entry = (Mount_Point == "/system_root" ? "/" : Mount_Point);
 		char *secontext = NULL;
 		if (!selinux_handle || selabel_lookup(selinux_handle, &secontext, File_Contexts_Entry.c_str(), S_IFDIR) < 0) {
@@ -2247,7 +2247,7 @@
 	if (!UnMount(true))
 		return false;
 
-	if (TWFunc::Path_Exists("/sbin/mkfs.fat")) {
+	if (TWFunc::Path_Exists("/system/bin/mkfs.fat")) {
 		gui_msg(Msg("formatting_using=Formatting {1} using {2}...")(Display_Name)("mkfs.fat"));
 		Find_Actual_Block_Device();
 		command = "mkfs.fat " + Actual_Block_Device;
@@ -2273,7 +2273,7 @@
 
 	if (!UnMount(true))
 		return false;
-	if (TWFunc::Path_Exists("/sbin/mkexfatfs")) {
+	if (TWFunc::Path_Exists("/system/bin/mkexfatfs")) {
 		gui_msg(Msg("formatting_using=Formatting {1} using {2}...")(Display_Name)("mkexfatfs"));
 		Find_Actual_Block_Device();
 		command = "mkexfatfs " + Actual_Block_Device;
@@ -2345,10 +2345,10 @@
 	if (!UnMount(true))
 		return false;
 
-	if (TWFunc::Path_Exists("/sbin/mkfs.f2fs"))
-		f2fs_bin = "/sbin/mkfs.f2fs";
-	else if (TWFunc::Path_Exists("/sbin/make_f2fs"))
-		f2fs_bin = "/sbin/make_f2fs";
+	if (TWFunc::Path_Exists("/system/bin/mkfs.f2fs"))
+		f2fs_bin = "/system/bin/mkfs.f2fs";
+	else if (TWFunc::Path_Exists("/system/bin/make_f2fs"))
+		f2fs_bin = "/system/bin/make_f2fs";
 	else {
 		LOGINFO("mkfs.f2fs binary not found, using rm -rf to wipe.\n");
 		return Wipe_RMRF();
@@ -2373,7 +2373,7 @@
 	char dev_sz_str[48];
 	sprintf(dev_sz_str, "%llu", (dev_sz / 4096));
 	command = f2fs_bin + " -d1 -f -O encrypt -O quota -O verity -w 4096 " + Actual_Block_Device + " " + dev_sz_str;
-	if (TWFunc::Path_Exists("/sbin/sload.f2fs")) {
+	if (TWFunc::Path_Exists("/system/bin/sload.f2fs")) {
 		command += " && sload.f2fs -t /data " + Actual_Block_Device;
 	}
 
@@ -2406,16 +2406,16 @@
 	if (!UnMount(true))
 		return false;
 
-	if (TWFunc::Path_Exists("/sbin/mkntfs"))
+	if (TWFunc::Path_Exists("/system/bin/mkntfs"))
 		Ntfsmake_Binary = "mkntfs";
-	else if (TWFunc::Path_Exists("/sbin/mkfs.ntfs"))
+	else if (TWFunc::Path_Exists("/system/bin/mkfs.ntfs"))
 		Ntfsmake_Binary = "mkfs.ntfs";
 	else
 		return false;
 
 	gui_msg(Msg("formatting_using=Formatting {1} using {2}...")(Display_Name)(Ntfsmake_Binary));
 	Find_Actual_Block_Device();
-	command = "/sbin/" + Ntfsmake_Binary + " " + Actual_Block_Device;
+	command = "/system/bin/" + Ntfsmake_Binary + " " + Actual_Block_Device;
 	if (TWFunc::Exec_Cmd(command) == 0) {
 		Recreate_AndSec_Folder();
 		gui_msg("done=Done.");
@@ -3398,4 +3398,16 @@
 void TWPartition::Set_Can_Be_Wiped(bool val) {
 	Can_Be_Wiped = val;
 	Wipe_Available_in_GUI = val;
+}
+
+std::string TWPartition::Get_Backup_FileName() {
+	return Backup_FileName;
+}
+
+std::string TWPartition::Get_Display_Name() {
+	return Display_Name;
+}
+
+bool TWPartition::Is_SlotSelect() {
+	return SlotSelect;
 }
\ No newline at end of file