roll recovery tools into a single binary. fix up nandroid to work without deviceid requirement

This commit is contained in:
Koushik K. Dutta 2010-02-22 08:53:34 -08:00
parent 225c6b4673
commit 981b0cd1e1
5 changed files with 43 additions and 47 deletions

View File

@ -162,10 +162,16 @@ char* choose_file_menu(const char* directory, const char* extension, const char*
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 @@ void show_nandroid_restore_menu()
"",
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");

View File

@ -30,26 +30,40 @@ include $(BUILD_EXECUTABLE)
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

View File

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

View File

@ -52,7 +52,6 @@
# 9. print success.
DEVICEID=foo
RECOVERY=foo
echo "nandroid-mobile v2.1"
@ -60,7 +59,7 @@ mkfstab.sh > /etc/fstab
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 @@ case $1 in
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 @@ case $1 in
;;
*)
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 @@ case $FAIL in
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

View File

@ -346,6 +346,7 @@ get_menu_selection(char** headers, char** items, int menu_only) {
}
ui_end_menu();
ui_clear_key_queue();
return chosen_item;
}