void show_partition_menu() { static char* headers[] = { "Mounts and Storage Menu", "", NULL }; typedef char* string; string mounts[MOUNTABLE_COUNT][3] = { { "mount /system", "unmount /system", "SYSTEM:" }, { "mount /data", "unmount /data", "DATA:" }, { "mount /dbdata", "unmount /dbdata", "DATADATA:" }, { "mount /cache", "unmount /cache", "CACHE:" }, { "mount /sdcard", "unmount /sdcard", "SDCARD:" }, { "mount /sd-ext", "unmount /sd-ext", "SDEXT:" }, { "", "", "" }, }; string mtds[MTD_COUNT][2] = { { "format system", "SYSTEM:" }, { "format data", "DATA:" }, { "format dbdata", "DATADATA:" }, { "format cache", "CACHE:" }, { "", "" }, }; string conv_mtds[MTD_COUNT][3] = { { "convert system", "SYSTEM:", "**" }, { "convert data", "DATA:", "**" }, { "convert dbdata", "DATADATA:", "**" }, { "convert cache", "CACHE:", "**" }, { "", "", "" }, }; string mmcs[MMC_COUNT][3] = { { "format sdcard", "SDCARD:" }, { "format sd-ext", "SDEXT:" }, { "", "" }, }; static char* confirm_format = "Confirm format?"; static char* confirm = "Yes - Format"; for (;;) { int ismounted[MOUNTABLE_COUNT]; int i; static string options[MOUNTABLE_COUNT + MTD_COUNT + MTD_COUNT + MMC_COUNT + 1 + 1]; // mountables, format mtds, convet mtds, format mmcs, usb storage, null for (i = 0; i < MOUNTABLE_COUNT; i++) { ismounted[i] = is_root_path_mounted(mounts[i][2]); options[i] = ismounted[i] ? mounts[i][1] : mounts[i][0]; } for (i = 0; i < MTD_COUNT; i++) { options[MOUNTABLE_COUNT + i] = mtds[i][0]; } for (i = 0; i < MTD_COUNT; i++) { options[MOUNTABLE_COUNT + MTD_COUNT + i] = conv_mtds[i][0]; } for (i = 0; i < MMC_COUNT; i++) { options[MOUNTABLE_COUNT + MTD_COUNT*2 + i] = mmcs[i][0]; } options[MOUNTABLE_COUNT + MTD_COUNT*2 + MMC_COUNT] = "mount USB storage"; options[MOUNTABLE_COUNT + MTD_COUNT*2 + MMC_COUNT + 1] = NULL; int chosen_item = get_menu_selection(headers, options, 0); if (chosen_item == GO_BACK) break; if (chosen_item == MOUNTABLE_COUNT + MTD_COUNT*2 + MMC_COUNT) { show_mount_usb_storage_menu(); } else if (chosen_item < MOUNTABLE_COUNT) { if (ismounted[chosen_item]) { if (0 != ensure_root_path_unmounted(mounts[chosen_item][2])) ui_print("Error unmounting %s!\n", mounts[chosen_item][2]); } else { if (0 != ensure_root_path_mounted(mounts[chosen_item][2])) ui_print("Error mounting %s!\n", mounts[chosen_item][2]); } } else if (chosen_item < MOUNTABLE_COUNT + MTD_COUNT) { chosen_item = chosen_item - MOUNTABLE_COUNT; if (!confirm_selection(confirm_format, confirm)) continue; ui_print("Formatting %s...\n", mtds[chosen_item][1]); if (0 != format_root_device(mtds[chosen_item][1])) ui_print("Error formatting %s!\n", mtds[chosen_item][1]); else ui_print("Done.\n"); } else if (chosen_item < MOUNTABLE_COUNT + MTD_COUNT*2) { chosen_item = chosen_item - MOUNTABLE_COUNT - MTD_COUNT; if (0 == convert_mtd_device(conv_mtds[chosen_item][1], conv_mtds[chosen_item][2])) { ui_print("Done.\n"); detect_root_fs(); } ui_clear_backgroud(); ui_reset_progress(); } else if (chosen_item < MOUNTABLE_COUNT + MTD_COUNT*2 + MMC_COUNT) { chosen_item = chosen_item - MOUNTABLE_COUNT - MTD_COUNT*2; if (!confirm_selection(confirm_format, confirm)) continue; ui_print("Formatting %s...\n", mmcs[chosen_item][1]); if (0 != format_non_mtd_device(mmcs[chosen_item][1])) ui_print("Error formatting %s!\n", mmcs[chosen_item][1]); else ui_print("Done.\n"); } } }
void show_partition_menu() { static char* headers[] = { "Mounts and Storage Menu", "", NULL }; typedef char* string; string mounts[MOUNTABLE_COUNT][3] = { { "mount /system", "unmount /system", "SYSTEM:" }, { "mount /data", "unmount /data", "DATA:" }, { "mount /cache", "unmount /cache", "CACHE:" }, { "mount /sdcard", "unmount /sdcard", "SDCARD:" }, #ifdef BOARD_HAS_SDCARD_INTERNAL { "mount /emmc", "unmount /emmc", "SDINTERNAL:" }, #endif { "mount /sd-ext", "unmount /sd-ext", "SDEXT:" } }; string mtds[MTD_COUNT][2] = { { "format boot", "BOOT:" }, { "format system", "SYSTEM:" }, { "format data", "DATA:" }, { "format cache", "CACHE:" }, }; string mmcs[MMC_COUNT][3] = { { "format sdcard", "SDCARD:" }, #ifdef BOARD_HAS_SDCARD_INTERNAL { "format internal sdcard", "SDINTERNAL:" }, #endif { "format sd-ext", "SDEXT:" } }; static char* confirm_format = "Confirm format?"; static char* confirm = "Yes - Format"; for (;;) { int ismounted[MOUNTABLE_COUNT]; int i; static string options[MOUNTABLE_COUNT + MTD_COUNT + MMC_COUNT + 1 + 1]; // mountables, format mtds, format mmcs, usb storage, null for (i = 0; i < MOUNTABLE_COUNT; i++) { ismounted[i] = is_root_path_mounted(mounts[i][2]); options[i] = ismounted[i] ? mounts[i][1] : mounts[i][0]; } for (i = 0; i < MTD_COUNT; i++) { options[MOUNTABLE_COUNT + i] = mtds[i][0]; } for (i = 0; i < MMC_COUNT; i++) { options[MOUNTABLE_COUNT + MTD_COUNT + i] = mmcs[i][0]; } options[MOUNTABLE_COUNT + MTD_COUNT + MMC_COUNT] = "mount USB storage"; options[MOUNTABLE_COUNT + MTD_COUNT + MMC_COUNT + 1] = NULL; int chosen_item = get_menu_selection(headers, options, 0); if (chosen_item == GO_BACK) break; if (chosen_item == MOUNTABLE_COUNT + MTD_COUNT + MMC_COUNT) { show_mount_usb_storage_menu(); } else if (chosen_item < MOUNTABLE_COUNT) { if (ismounted[chosen_item]) { if (0 != ensure_root_path_unmounted(mounts[chosen_item][2])) ui_print("Error unmounting %s!\n", mounts[chosen_item][2]); } else { if (0 != ensure_root_path_mounted(mounts[chosen_item][2])) ui_print("Error mounting %s!\n", mounts[chosen_item][2]); } } else if (chosen_item < MOUNTABLE_COUNT + MTD_COUNT) { chosen_item = chosen_item - MOUNTABLE_COUNT; if (!confirm_selection(confirm_format, confirm)) continue; ui_print("Formatting %s...\n", mtds[chosen_item][1]); if (0 != format_root_device(mtds[chosen_item][1])) ui_print("Error formatting %s!\n", mtds[chosen_item][1]); else ui_print("Done.\n"); } else if (chosen_item < MOUNTABLE_COUNT + MTD_COUNT + MMC_COUNT) { chosen_item = chosen_item - MOUNTABLE_COUNT - MTD_COUNT; if (!confirm_selection(confirm_format, confirm)) continue; ui_print("Formatting %s...\n", mmcs[chosen_item][1]); if (0 != format_unknown_device(mmcs[chosen_item][1])) ui_print("Error formatting %s!\n", mmcs[chosen_item][1]); else ui_print("Done.\n"); } } }