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)