roll recovery tools into a single binary. fix up nandroid to work without deviceid requirement
diff --git a/extendedcommands.c b/extendedcommands.c
index a59b9b0..0269f64 100644
--- a/extendedcommands.c
+++ b/extendedcommands.c
@@ -162,10 +162,16 @@
return NULL;
}
- int chosen_item = get_menu_selection(headers, list, 1);
- static char ret[PATH_MAX];
- strcpy(ret, files[chosen_item]);
- return ret;
+ for (;;)
+ {
+ int chosen_item = get_menu_selection(headers, list, 0);
+ if (chosen_item == GO_BACK)
+ break;
+ static char ret[PATH_MAX];
+ strcpy(ret, files[chosen_item]);
+ return ret;
+ }
+ return NULL;
}
void show_choose_zip_menu()
@@ -211,33 +217,14 @@
"",
NULL
};
-
- int ret = system("cat /proc/cmdline | sed 's/.*serialno=//' | cut -d' ' -f1 > /.deviceid");
- FILE *deviceIdFile = fopen(".deviceid", "r");
- char deviceId[256];
- if (deviceIdFile == NULL || ret == 0)
- {
- ui_print("Unable to retrieve device id.\n");
- return;
- }
- int readCount = fread(deviceId, 1, sizeof(deviceId), deviceIdFile);
- if (readCount == 0)
- {
- ui_print("Unable to retrieve device id.\n");
- return;
- }
- deviceId[readCount - 1] = NULL;
- fclose(deviceIdFile);
- char backupDirectory[PATH_MAX];
- sprintf(backupDirectory, "/sdcard/nandroid/%s/", deviceId);
- char* file = choose_file_menu(backupDirectory, "", headers);
+ char* file = choose_file_menu("/sdcard/nandroid/", "", headers);
if (file == NULL)
return;
char* command[PATH_MAX];
sprintf(command, "nandroid-mobile.sh restore %s", file);
ui_print("Performing restore...\n");
- ret = system(command);
+ int ret = system(command);
if (ret != 0)
{
ui_print("Error while restoring!\n");
diff --git a/mtdutils/Android.mk b/mtdutils/Android.mk
index e0cc524..c45a75d 100644
--- a/mtdutils/Android.mk
+++ b/mtdutils/Android.mk
@@ -30,26 +30,40 @@
include $(CLEAR_VARS)
LOCAL_SRC_FILES := flash_image.c
-LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+#LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
LOCAL_MODULE := recovery_flash_image
-LOCAL_MODULE_TAGS := eng
-LOCAL_STATIC_LIBRARIES := libmtdutils libcutils libc
-LOCAL_MODULE_STEM := flash_image
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
-ADDITIONAL_RECOVERY_EXECUTABLES += recovery_flash_image
-include $(BUILD_EXECUTABLE)
+#LOCAL_MODULE_TAGS := eng
+#LOCAL_STATIC_LIBRARIES := libmtdutils libcutils libc
+#LOCAL_MODULE_STEM := flash_image
+#LOCAL_FORCE_STATIC_EXECUTABLE := true
+#LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
+LOCAL_CFLAGS += -Dmain=flash_image_main
+#ADDITIONAL_RECOVERY_EXECUTABLES += recovery_flash_image
+include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := dump_image.c
-LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+#LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
LOCAL_MODULE := recovery_dump_image
+#LOCAL_MODULE_TAGS := eng
+#LOCAL_STATIC_LIBRARIES := libmtdutils libcutils libc
+#LOCAL_MODULE_STEM := dump_image
+#LOCAL_FORCE_STATIC_EXECUTABLE := true
+#LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
+LOCAL_CFLAGS += -Dmain=dump_image_main
+#ADDITIONAL_RECOVERY_EXECUTABLES += recovery_dump_image
+include $(BUILD_STATIC_LIBRARY)
+
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := driver.c
+LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+LOCAL_MODULE := recovery_tools
LOCAL_MODULE_TAGS := eng
-LOCAL_STATIC_LIBRARIES := libmtdutils libcutils libc
-LOCAL_MODULE_STEM := dump_image
+LOCAL_STATIC_LIBRARIES := recovery_mkyaffs2image recovery_unyaffs recovery_dump_image recovery_flash_image libmtdutils libcutils libc
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
-ADDITIONAL_RECOVERY_EXECUTABLES += recovery_dump_image
+ADDITIONAL_RECOVERY_EXECUTABLES += recovery_tools
include $(BUILD_EXECUTABLE)
endif # TARGET_ARCH == arm
diff --git a/mtdutils/dump_image.c b/mtdutils/dump_image.c
index bc96abc..8c3a052 100644
--- a/mtdutils/dump_image.c
+++ b/mtdutils/dump_image.c
@@ -34,7 +34,7 @@
#define BLOCK_SIZE 2048
#define SPARE_SIZE (BLOCK_SIZE >> 5)
-void die(const char *msg, ...) {
+static void die(const char *msg, ...) {
int err = errno;
va_list args;
va_start(args, msg);
diff --git a/nandroid/nandroid-mobile.sh b/nandroid/nandroid-mobile.sh
index e8ae697..ba4b85e 100755
--- a/nandroid/nandroid-mobile.sh
+++ b/nandroid/nandroid-mobile.sh
@@ -52,7 +52,6 @@
# 9. print success.
-DEVICEID=foo
RECOVERY=foo
echo "nandroid-mobile v2.1"
@@ -60,7 +59,7 @@
if [ "$1" == "" ]; then
echo "Usage: $0 {backup|restore} [/path/to/nandroid/backup/]"
- echo "- backup will store a full system backup on /sdcard/nandroid/$DEVICEID"
+ echo "- backup will store a full system backup on /sdcard/nandroid"
echo "- restore path will restore the last made backup for boot, system, recovery and data"
exit 0
fi
@@ -104,16 +103,11 @@
esac
# 1
-DEVICEID=`cat /proc/cmdline | sed "s/.*serialno=//" | cut -d" " -f1`
RECOVERY=`cat /proc/cmdline | grep "androidboot.mode=recovery"`
if [ "$RECOVERY" == "foo" ]; then
echo "error: not running in recovery mode, aborting"
exit 1
fi
-if [ "$DEVICEID" == "foo" ]; then
- echo "error: device id not found in /proc/cmdline, aborting"
- exit 1
-fi
if [ ! "`id -u 2>/dev/null`" == "0" ]; then
if [ "`whoami 2>&1 | grep 'uid 0'`" == "" ]; then
echo "error: must run as root, aborting"
@@ -178,7 +172,7 @@
;;
*)
echo "Usage: $0 {backup|restore} [/path/to/nandroid/backup/]"
- echo "- backup will store a full system backup on /sdcard/nandroid/$DEVICEID"
+ echo "- backup will store a full system backup on /sdcard/nandroid"
echo "- restore path will restore the last made backup for boot, system, recovery and data"
exit 1
;;
@@ -199,7 +193,7 @@
esac
TIMESTAMP="`date +%Y%m%d-%H%M`"
-DESTDIR="/sdcard/nandroid/$DEVICEID/$TIMESTAMP"
+DESTDIR="/sdcard/nandroid/$TIMESTAMP"
if [ ! -d $DESTDIR ]; then
mkdir -p $DESTDIR
if [ ! -d $DESTDIR ]; then
diff --git a/recovery.c b/recovery.c
index f7d61d2..45911ea 100644
--- a/recovery.c
+++ b/recovery.c
@@ -346,6 +346,7 @@
}
ui_end_menu();
+ ui_clear_key_queue();
return chosen_item;
}