Add support for wimax imaging

Change-Id: I2f14918f3ffb37fe94bab469e1d89a9874d89d18
This commit is contained in:
agrabren 2010-12-29 12:15:18 -06:00 committed by Koushik Dutta
parent 7501798fab
commit 1f76a5da6b
4 changed files with 62 additions and 25 deletions

View File

@ -174,6 +174,7 @@ Value* RestoreFn(const char* name, State* state, int argc, Expr* argv[]) {
int restoredata = 1;
int restorecache = 1;
int restoresdext = 1;
int restorewimax = 1;
int i;
for (i = 1; i < argc; i++)
{
@ -189,6 +190,8 @@ Value* RestoreFn(const char* name, State* state, int argc, Expr* argv[]) {
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 @@ Value* RestoreFn(const char* name, State* state, int argc, Expr* argv[]) {
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(""));
}

View File

@ -214,20 +214,20 @@ char** gather_files(const char* directory, const char* fileExtensionOrDirectory,
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 @@ void show_nandroid_restore_menu()
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 @@ void show_nandroid_advanced_restore_menu()
"Restore data",
"Restore cache",
"Restore sd-ext",
"Restore wimax",
NULL
};
@ -659,23 +660,27 @@ void show_nandroid_advanced_restore_menu()
{
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 @@ void process_volumes() {
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);
}

View File

@ -141,6 +141,15 @@ int nandroid_backup(const char* backup_path)
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 @@ int nandroid_restore_partition(const char* backup_path, const char* root) {
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 @@ int nandroid_restore(const char* backup_path, int restore_boot, int restore_syst
}
#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 @@ int nandroid_main(int argc, char** argv)
{
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();

View File

@ -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