diff options
Diffstat (limited to 'partition.cpp')
-rw-r--r-- | partition.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/partition.cpp b/partition.cpp index 444eb4bc5..e6c622177 100644 --- a/partition.cpp +++ b/partition.cpp @@ -500,6 +500,7 @@ bool TWPartition::Is_File_System(string File_System) { File_System == "ntfs" || File_System == "yaffs2" || File_System == "exfat" || + File_System == "f2fs" || File_System == "auto") return true; else @@ -1005,6 +1006,8 @@ bool TWPartition::Wipe(string New_File_System) { wiped = Wipe_EXFAT(); else if (New_File_System == "yaffs2") wiped = Wipe_MTD(); + else if (New_File_System == "f2fs") + wiped = Wipe_F2FS(); else { LOGERR("Unable to wipe '%s' -- unknown file system '%s'\n", Mount_Point.c_str(), New_File_System.c_str()); unlink("/.layout_version"); @@ -1398,6 +1401,32 @@ bool TWPartition::Wipe_RMRF() { return true; } +bool TWPartition::Wipe_F2FS() { + string command, result; + + if (TWFunc::Path_Exists("/sbin/mkfs.f2fs")) { + if (!UnMount(true)) + return false; + + gui_print("Formatting %s using mkfs.f2fs...\n", Display_Name.c_str()); + Find_Actual_Block_Device(); + command = "mkfs.f2fs " + Actual_Block_Device; + if (TWFunc::Exec_Cmd(command, result) == 0) { + Recreate_AndSec_Folder(); + gui_print("Done.\n"); + return true; + } else { + LOGERR("Unable to wipe '%s'.\n", Mount_Point.c_str()); + return false; + } + return true; + } else { + gui_print("mkfs.f2fs binary not found, using rm -rf to wipe.\n"); + return Wipe_RMRF(); + } + return false; +} + bool TWPartition::Wipe_Data_Without_Wiping_Media() { string dir; |