diff --git a/extendedcommands.c b/extendedcommands.c index bafa552..6799b2d 100644 --- a/extendedcommands.c +++ b/extendedcommands.c @@ -423,7 +423,7 @@ int format_unknown_device(const char *device, const char* path, const char *fs_t LOGI("Formatting unknown device.\n"); // device may simply be a name, like "system" - if (device[0] != '/') + if (get_flash_type(fs_type) != UNSUPPORTED) return erase_raw_partition(fs_type, device); // if this is SDEXT:, don't worry about it if it does not exist. diff --git a/flashutils/flashutils.c b/flashutils/flashutils.c index 2f8da41..7fa38a9 100644 --- a/flashutils/flashutils.c +++ b/flashutils/flashutils.c @@ -70,6 +70,17 @@ __system(const char *command) return (pid == -1 ? -1 : pstat); } +int get_flash_type(const char* partitionType) { + int type = UNSUPPORTED; + if (strcmp(partitionType, "mtd") == 0) + type = MTD; + else if (strcmp(partitionType, "emmc") == 0) + type = MMC; + else if (strcmp(partitionType, "bml") == 0) + type = BML; + return type; +} + static int detect_partition(const char *partitionType, const char *partition) { int type = device_flash_type(); @@ -81,12 +92,7 @@ static int detect_partition(const char *partitionType, const char *partition) type = BML; if (partitionType != NULL) { - if (strstr(partitionType, "mtd") != NULL) - type = MTD; - else if (strstr(partitionType, "emmc") != NULL) - type = MMC; - else if (strstr(partitionType, "bml") != NULL) - type = BML; + type = get_flash_type(partitionType); } printf("partitionType: %s\n", partitionType); diff --git a/flashutils/flashutils.h b/flashutils/flashutils.h index 4c63c67..dd59537 100644 --- a/flashutils/flashutils.h +++ b/flashutils/flashutils.h @@ -39,6 +39,7 @@ extern int cmd_bml_mount_partition(const char *partition, const char *mount_poin extern int cmd_bml_get_partition_device(const char *partition, char *device); extern int device_flash_type(); +extern int get_flash_type(const char* fs_type); enum flash_type { UNSUPPORTED = -1,