support backup and restore on internal sdcard
Change-Id: I6295b5bb7ada967ca223758be58d555c1a2ff462
diff --git a/extendedcommands.c b/extendedcommands.c
index 2b6d5c3..9e63782 100644
--- a/extendedcommands.c
+++ b/extendedcommands.c
@@ -333,10 +333,10 @@
install_zip(file);
}
-void show_nandroid_restore_menu()
+void show_nandroid_restore_menu(const char* path)
{
- if (ensure_path_mounted("/sdcard") != 0) {
- LOGE ("Can't mount /sdcard\n");
+ if (ensure_path_mounted(path) != 0) {
+ LOGE("Can't mount %s\n", path);
return;
}
@@ -345,7 +345,9 @@
NULL
};
- char* file = choose_file_menu("/sdcard/clockworkmod/backup/", NULL, headers);
+ char tmp[PATH_MAX];
+ sprintf(tmp, "%s/clockworkmod/backup/", path);
+ char* file = choose_file_menu(tmp, NULL, headers);
if (file == NULL)
return;
@@ -713,7 +715,7 @@
}
-void show_nandroid_advanced_restore_menu()
+void show_nandroid_advanced_restore_menu(const char* path)
{
if (ensure_path_mounted("/sdcard") != 0) {
LOGE ("Can't mount /sdcard\n");
@@ -792,12 +794,18 @@
NULL
};
- static char* list[] = { "Backup",
- "Restore",
- "Advanced Restore",
+ static char* list[] = { "backup",
+ "restore",
+ "advanced restore",
+ "backup to internal sdcard",
+ "restore from internal sdcard",
+ "advanced restore from internal sdcard",
NULL
};
+ if (volume_for_path("/emmc") == NULL)
+ INSTALL_MENU_ITEMS[3] = NULL;
+
int chosen_item = get_menu_selection(headers, list, 0, 0);
switch (chosen_item)
{
@@ -820,10 +828,34 @@
}
break;
case 1:
- show_nandroid_restore_menu();
+ show_nandroid_restore_menu("/sdcard");
break;
case 2:
- show_nandroid_advanced_restore_menu();
+ show_nandroid_advanced_restore_menu("/sdcard");
+ break;
+ case 3:
+ {
+ char backup_path[PATH_MAX];
+ time_t t = time(NULL);
+ struct tm *tmp = localtime(&t);
+ if (tmp == NULL)
+ {
+ struct timeval tp;
+ gettimeofday(&tp, NULL);
+ sprintf(backup_path, "/emmc/clockworkmod/backup/%d", tp.tv_sec);
+ }
+ else
+ {
+ strftime(backup_path, sizeof(backup_path), "/emmc/clockworkmod/backup/%F.%H.%M.%S", tmp);
+ }
+ nandroid_backup(backup_path);
+ }
+ break;
+ case 4:
+ show_nandroid_restore_menu("/emmc");
+ break;
+ case 5:
+ show_nandroid_advanced_restore_menu("/emmc");
break;
}
}
@@ -1048,9 +1080,8 @@
write_fstab_root("/boot", file);
write_fstab_root("/cache", file);
write_fstab_root("/data", file);
- if (has_datadata()) {
- write_fstab_root("/datadata", file);
- }
+ write_fstab_root("/datadata", file);
+ write_fstab_root("/emmc", file);
write_fstab_root("/system", file);
write_fstab_root("/sdcard", file);
write_fstab_root("/sd-ext", file);