galaxys
diff --git a/nandroid.c b/nandroid.c
index 00afbd9..33899d1 100644
--- a/nandroid.c
+++ b/nandroid.c
@@ -133,6 +133,7 @@
sprintf(tmp, "mkdir -p %s", backup_path);
__system(tmp);
+#ifndef BOARD_RECOVERY_IGNORE_BOOTABLES
ui_print("Backing up boot...\n");
sprintf(tmp, "%s/%s", backup_path, "boot.img");
ret = dump_image("boot", tmp, NULL);
@@ -143,7 +144,8 @@
sprintf(tmp, "%s/%s", backup_path, "recovery.img");
ret = dump_image("recovery", tmp, NULL);
if (0 != ret)
- return print_and_error("Error while dumping boot image!\n");
+ return print_and_error("Error while dumping recovery image!\n");
+#endif
if (0 != (ret = nandroid_backup_partition(backup_path, "SYSTEM:")))
return ret;
@@ -198,13 +200,28 @@
typedef int (*format_function)(char* root);
+static void ensure_directory(const char* dir) {
+ char tmp[PATH_MAX];
+ sprintf(tmp, "mkdir -p %s", dir);
+ __system(tmp);
+}
+
int nandroid_restore_partition_extended(const char* backup_path, const char* root, int umount_when_finished) {
int ret = 0;
char mount_point[PATH_MAX];
translate_root_path(root, mount_point, PATH_MAX);
char* name = basename(mount_point);
+ char tmp[PATH_MAX];
+ sprintf(tmp, "%s/%s.img", backup_path, name);
struct stat file_info;
+ if (0 != (ret = statfs(tmp, &file_info))) {
+ ui_print("%s.img not found. Skipping restore of /sd-ext.", name);
+ return 0;
+ }
+
+ ensure_directory(mount_point);
+
unyaffs_callback callback = NULL;
if (0 != stat("/sdcard/clockworkmod/.hidenandroidprogress", &file_info)) {
callback = yaffs_callback;
@@ -225,8 +242,6 @@
return ret;
}
- char tmp[PATH_MAX];
- sprintf(tmp, "%s/%s.img", backup_path, name);
if (0 != (ret = unyaffs(tmp, mount_point, callback))) {
ui_print("Error while restoring %s!\n", mount_point);
return ret;
@@ -260,6 +275,7 @@
return print_and_error("MD5 mismatch!\n");
int ret;
+#ifndef BOARD_RECOVERY_IGNORE_BOOTABLES
if (restore_boot)
{
ui_print("Erasing boot before restore...\n");
@@ -272,6 +288,7 @@
return ret;
}
}
+#endif
if (restore_system && 0 != (ret = nandroid_restore_partition(backup_path, "SYSTEM:")))
return ret;
@@ -284,34 +301,14 @@
return ret;
#endif
- if (restore_data)
- {
- struct statfs s;
- sprintf(tmp, "%s/.android_secure.img", backup_path);
- if (0 != (ret = statfs(tmp, &s)))
- {
- ui_print(".android_secure.img not found. Skipping restore of applications on external storage.");
- }
- else
- {
- __system("mkdir -p /sdcard/.android_secure");
- if (0 != (ret = nandroid_restore_partition_extended(backup_path, "SDCARD:/.android_secure", 0)))
- return ret;
- }
- }
+ if (restore_data && 0 != (ret = nandroid_restore_partition_extended(backup_path, "SDCARD:/.android_secure", 0)))
+ return ret;
if (restore_cache && 0 != (ret = nandroid_restore_partition_extended(backup_path, "CACHE:", 0)))
return ret;
- if (restore_sdext)
- {
- struct statfs s;
- sprintf(tmp, "%s/sd-ext.img", backup_path);
- if (0 != (ret = statfs(tmp, &s)))
- ui_print("sd-ext.img not found. Skipping restore of /sd-ext.");
- else if (0 != (ret = nandroid_restore_partition(backup_path, "SDEXT:")))
- return ret;
- }
+ if (restore_sdext && 0 != (ret = nandroid_restore_partition(backup_path, "SDEXT:")))
+ return ret;
sync();
ui_set_background(BACKGROUND_ICON_NONE);