recovery: Update recovery from CM.
Change-Id: Ibda5ba8bbfc93ef6ff565128b63adc2991218a70
diff --git a/mmcutils/mmcutils.c b/mmcutils/mmcutils.c
index e0efe55..76b8ff8 100644
--- a/mmcutils/mmcutils.c
+++ b/mmcutils/mmcutils.c
@@ -340,13 +340,18 @@
int
format_ext3_device (const char *device) {
- // Run mke2fs
+#ifdef BOARD_HAS_LARGE_FILESYSTEM
+ char *const mke2fs[] = {MKE2FS_BIN, "-j", "-q", device, NULL};
+ char *const tune2fs[] = {TUNE2FS_BIN, "-C", "1", device, NULL};
+#else
char *const mke2fs[] = {MKE2FS_BIN, "-j", device, NULL};
+ char *const tune2fs[] = {TUNE2FS_BIN, "-j", "-C", "1", device, NULL};
+#endif
+ // Run mke2fs
if(run_exec_process(mke2fs))
return -1;
// Run tune2fs
- char *const tune2fs[] = {TUNE2FS_BIN, "-j", "-C", "1", device, NULL};
if(run_exec_process(tune2fs))
return -1;
@@ -464,9 +469,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 +479,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 +519,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) {
@@ -575,33 +584,36 @@
int cmd_mmc_restore_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_copy(p, filename);
+ if (partition[0] != '/') {
+ mmc_scan_partitions();
+ const MmcPartition *p;
+ p = mmc_find_partition_by_name(partition);
+ if (p == NULL)
+ return -1;
+ return mmc_raw_copy(p, filename);
+ }
+ else {
+ return mmc_raw_dump_internal(filename, partition);
+ }
}
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] != '/') {
+ mmc_scan_partitions();
+ 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)
{
- mmc_scan_partitions();
- const MmcPartition *p;
- p = mmc_find_partition_by_name(partition);
- if (p == NULL)
- return -1;
-
- // TODO: implement raw wipe
return 0;
}