Add support for wimax imaging
Change-Id: I2f14918f3ffb37fe94bab469e1d89a9874d89d18
diff --git a/edifyscripting.c b/edifyscripting.c
index 3b0d4c9..f7616ef 100644
--- a/edifyscripting.c
+++ b/edifyscripting.c
@@ -174,6 +174,7 @@
int restoredata = 1;
int restorecache = 1;
int restoresdext = 1;
+ int restorewimax = 1;
int i;
for (i = 1; i < argc; i++)
{
@@ -189,6 +190,8 @@
restorecache = 0;
else if (strcmp(args2[i], "nosd-ext") == 0)
restoresdext = 0;
+ else if (strcmp(args2[i], "nowimax") == 0)
+ restorewimax = 0;
}
for (i = 0; i < argc; ++i) {
@@ -197,7 +200,7 @@
free(args);
free(args2);
- if (0 != nandroid_restore(path, restoreboot, restoresystem, restoredata, restorecache, restoresdext)) {
+ if (0 != nandroid_restore(path, restoreboot, restoresystem, restoredata, restorecache, restoresdext, restorewimax)) {
free(path);
return StringValue(strdup(""));
}
diff --git a/extendedcommands.c b/extendedcommands.c
index 297f811..3113ab8 100644
--- a/extendedcommands.c
+++ b/extendedcommands.c
@@ -214,20 +214,20 @@
return NULL;
}
- // sort the result
- if (files != NULL) {
- for (i = 0; i < total; i++) {
- int curMax = -1;
- int j;
- for (j = 0; j < total - i; j++) {
- if (curMax == -1 || strcmp(files[curMax], files[j]) < 0)
- curMax = j;
- }
- char* temp = files[curMax];
- files[curMax] = files[total - i - 1];
- files[total - i - 1] = temp;
- }
- }
+ // sort the result
+ if (files != NULL) {
+ for (i = 0; i < total; i++) {
+ int curMax = -1;
+ int j;
+ for (j = 0; j < total - i; j++) {
+ if (curMax == -1 || strcmp(files[curMax], files[j]) < 0)
+ curMax = j;
+ }
+ char* temp = files[curMax];
+ files[curMax] = files[total - i - 1];
+ files[total - i - 1] = temp;
+ }
+ }
return files;
}
@@ -337,7 +337,7 @@
return;
if (confirm_selection("Confirm restore?", "Yes - Restore"))
- nandroid_restore(file, 1, 1, 1, 1, 1);
+ nandroid_restore(file, 1, 1, 1, 1, 1, 1);
}
void show_mount_usb_storage_menu()
@@ -648,6 +648,7 @@
"Restore data",
"Restore cache",
"Restore sd-ext",
+ "Restore wimax",
NULL
};
@@ -659,23 +660,27 @@
{
case 0:
if (confirm_selection(confirm_restore, "Yes - Restore boot"))
- nandroid_restore(file, 1, 0, 0, 0, 0);
+ nandroid_restore(file, 1, 0, 0, 0, 0, 0);
break;
case 1:
if (confirm_selection(confirm_restore, "Yes - Restore system"))
- nandroid_restore(file, 0, 1, 0, 0, 0);
+ nandroid_restore(file, 0, 1, 0, 0, 0, 0);
break;
case 2:
if (confirm_selection(confirm_restore, "Yes - Restore data"))
- nandroid_restore(file, 0, 0, 1, 0, 0);
+ nandroid_restore(file, 0, 0, 1, 0, 0, 0);
break;
case 3:
if (confirm_selection(confirm_restore, "Yes - Restore cache"))
- nandroid_restore(file, 0, 0, 0, 1, 0);
+ nandroid_restore(file, 0, 0, 0, 1, 0, 0);
break;
case 4:
if (confirm_selection(confirm_restore, "Yes - Restore sd-ext"))
- nandroid_restore(file, 0, 0, 0, 0, 1);
+ nandroid_restore(file, 0, 0, 0, 0, 1, 0);
+ break;
+ case 5:
+ if (confirm_selection(confirm_restore, "Yes - Restore wimax"))
+ nandroid_restore(file, 0, 0, 0, 0, 0, 1);
break;
}
}
@@ -997,7 +1002,7 @@
ui_print("in case of error.\n");
nandroid_backup(backup_path);
- nandroid_restore(backup_path, 1, 1, 1, 1, 1);
+ nandroid_restore(backup_path, 1, 1, 1, 1, 1, 1);
ui_set_show_text(0);
}
diff --git a/nandroid.c b/nandroid.c
index 5d174a7..4a92e33 100644
--- a/nandroid.c
+++ b/nandroid.c
@@ -141,6 +141,15 @@
return print_and_error("Error while dumping recovery image!\n");
#endif
+ if (0 == (ret = get_partition_device("wimax", tmp)))
+ {
+ ui_print("Backing up wimax...\n");
+ sprintf(tmp, "%s/%s", backup_path, "wimax.img");
+ ret = backup_raw_partition("wimax", tmp);
+ if (0 != ret)
+ return print_and_error("Error while dumping wimax image!\n");
+ }
+
if (0 != (ret = nandroid_backup_partition(backup_path, "/system")))
return ret;
@@ -253,7 +262,7 @@
return nandroid_restore_partition_extended(backup_path, root, 1);
}
-int nandroid_restore(const char* backup_path, int restore_boot, int restore_system, int restore_data, int restore_cache, int restore_sdext)
+int nandroid_restore(const char* backup_path, int restore_boot, int restore_system, int restore_data, int restore_cache, int restore_sdext, int restore_wimax)
{
ui_set_background(BACKGROUND_ICON_INSTALLING);
ui_show_indeterminate_progress();
@@ -285,6 +294,26 @@
}
#endif
+ if (restore_wimax && 0 == (ret = get_partition_device("wimax", tmp)))
+ {
+ sprintf(tmp, "%s/wimax.img", backup_path);
+
+ struct stat st;
+ if (0 != stat(tmp, &st))
+ {
+ ui_print("WARNING: Wimax partition exists, but nandroid\n");
+ ui_print(" backup does not contain wimax image.\n");
+ ui_print(" You should create a new backup to\n");
+ ui_print(" protect your wimax data.\n");
+ }
+ else
+ {
+ ui_print("Restoring wimax image...\n");
+ if (0 != (ret = restore_raw_partition("wimax", tmp)))
+ return ret;
+ }
+ }
+
if (restore_system && 0 != (ret = nandroid_restore_partition(backup_path, "/system")))
return ret;
@@ -354,7 +383,7 @@
{
if (argc != 3)
return nandroid_usage();
- return nandroid_restore(argv[2], 1, 1, 1, 1, 1);
+ return nandroid_restore(argv[2], 1, 1, 1, 1, 1, 1);
}
return nandroid_usage();
diff --git a/nandroid.h b/nandroid.h
index f124e11..926bf30 100644
--- a/nandroid.h
+++ b/nandroid.h
@@ -3,7 +3,7 @@
int nandroid_main(int argc, char** argv);
int nandroid_backup(const char* backup_path);
-int nandroid_restore(const char* backup_path, int restore_boot, int restore_system, int restore_data, int restore_cache, int restore_sdext);
+int nandroid_restore(const char* backup_path, int restore_boot, int restore_system, int restore_data, int restore_cache, int restore_sdext, int restore_wimax);
void nandroid_generate_timestamp_path(char* backup_path);
#endif
\ No newline at end of file