fix wimax backup for emmc
Change-Id: I3da8a3d9411b52e07bebe6214f86dd12ac98bb82
diff --git a/mmcutils/mmcutils.c b/mmcutils/mmcutils.c
index e0efe55..fc3de5b 100644
--- a/mmcutils/mmcutils.c
+++ b/mmcutils/mmcutils.c
@@ -464,9 +464,8 @@
}
-// TODO: refactor this to not be a giant copy paste mess
int
-mmc_raw_dump (const MmcPartition *partition, char *out_file) {
+mmc_raw_dump_internal (const char* in_file, const char *out_file) {
int ch;
FILE *in;
FILE *out;
@@ -475,7 +474,6 @@
unsigned sz = 0;
unsigned i;
int ret = -1;
- char *in_file = partition->device_index;
in = fopen ( in_file, "r" );
if (in == NULL)
@@ -516,6 +514,12 @@
}
+// TODO: refactor this to not be a giant copy paste mess
+int
+mmc_raw_dump (const MmcPartition *partition, char *out_file) {
+ return mmc_raw_dump_internal(partition->device_index, out_file);
+}
+
int
mmc_raw_read (const MmcPartition *partition, char *data, int data_size) {
@@ -586,11 +590,16 @@
int cmd_mmc_backup_raw_partition(const char *partition, const char *filename)
{
mmc_scan_partitions();
- const MmcPartition *p;
- p = mmc_find_partition_by_name(partition);
- if (p == NULL)
- return -1;
- return mmc_raw_dump(p, filename);
+ if (partition[0] != '/') {
+ const MmcPartition *p;
+ p = mmc_find_partition_by_name(partition);
+ if (p == NULL)
+ return -1;
+ return mmc_raw_dump(p, filename);
+ }
+ else {
+ return mmc_raw_dump_internal(partition, filename);
+ }
}
int cmd_mmc_erase_raw_partition(const char *partition)