diff --git a/Android.mk b/Android.mk index 2d7db14..eccce6b 100644 --- a/Android.mk +++ b/Android.mk @@ -31,7 +31,7 @@ LOCAL_CFLAGS += -DRECOVERY_VERSION="$(RECOVERY_VERSION)" RECOVERY_API_VERSION := 2 LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION) -BOARD_RECOVERY_DEFINES := BOARD_HAS_NO_SELECT_BUTTON BOARD_HAS_SMALL_RECOVERY BOARD_LDPI_RECOVERY BOARD_UMS_LUNFILE +BOARD_RECOVERY_DEFINES := BOARD_HAS_NO_SELECT_BUTTON BOARD_HAS_SMALL_RECOVERY BOARD_LDPI_RECOVERY BOARD_UMS_LUNFILE TARGET_RECOVERY_PRE_COMMAND $(foreach board_define,$(BOARD_RECOVERY_DEFINES), \ $(if $($(board_define)), \ diff --git a/extendedcommands.c b/extendedcommands.c index d263405..e5daa5a 100644 --- a/extendedcommands.c +++ b/extendedcommands.c @@ -875,6 +875,9 @@ void show_advanced_menu() switch (chosen_item) { case 0: +#ifdef TARGET_RECOVERY_PRE_COMMAND + __system( TARGET_RECOVERY_PRE_COMMAND ); +#endif __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, "recovery"); break; case 1: diff --git a/reboot.c b/reboot.c index 04aa9ae..6af84da 100644 --- a/reboot.c +++ b/reboot.c @@ -49,9 +49,13 @@ int reboot_main(int argc, char *argv[]) if(force || argc > optind) { if(poweroff) ret = __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_POWER_OFF, NULL); - else if(argc > optind) - ret = __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, argv[optind]); - else + else if(argc > optind) { +#ifdef TARGET_RECOVERY_PRE_COMMAND + if (!strncmp(argv[optind],"recovery",8)) + system( TARGET_RECOVERY_PRE_COMMAND ); +#endif + ret = __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, argv[optind]); + } else ret = reboot(RB_AUTOBOOT); } else { if(poweroff) {