diff options
-rw-r--r-- | Android.mk | 4 | ||||
-rw-r--r-- | bootloader.cpp | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/Android.mk b/Android.mk index c864ff0f7..05111c02c 100644 --- a/Android.mk +++ b/Android.mk @@ -335,6 +335,10 @@ LOCAL_SRC_FILES = adb_install.cpp bootloader.cpp verifier.cpp mtdutils/mtdutils. LOCAL_SHARED_LIBRARIES += libc liblog libcutils libmtdutils LOCAL_STATIC_LIBRARIES += libmincrypttwrp +ifneq ($(BOARD_RECOVERY_BLDRMSG_OFFSET),) + LOCAL_CFLAGS += -DBOARD_RECOVERY_BLDRMSG_OFFSET=$(BOARD_RECOVERY_BLDRMSG_OFFSET) +endif + include $(BUILD_SHARED_LIBRARY) commands_recovery_local_path := $(LOCAL_PATH) diff --git a/bootloader.cpp b/bootloader.cpp index 033591274..3884c2870 100644 --- a/bootloader.cpp +++ b/bootloader.cpp @@ -258,6 +258,9 @@ static int get_bootloader_message_block(struct bootloader_message *out, LOGE("Can't open %s\n(%s)\n", v->blk_device, strerror(errno)); return -1; } +#ifdef BOARD_RECOVERY_BLDRMSG_OFFSET + fseek(f, BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET); +#endif struct bootloader_message temp; int count = fread(&temp, sizeof(temp), 1, f); if (count != 1) { @@ -280,6 +283,9 @@ static int set_bootloader_message_block(const struct bootloader_message *in, LOGE("Can't open %s\n(%s)\n", v->blk_device, strerror(errno)); return -1; } +#ifdef BOARD_RECOVERY_BLDRMSG_OFFSET + fseek(f, BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET); +#endif int count = fwrite(in, sizeof(*in), 1, f); if (count != 1) { LOGE("Failed writing %s\n(%s)\n", v->blk_device, strerror(errno)); @@ -300,6 +306,9 @@ int get_bootloader_message_block_name(struct bootloader_message *out) { LOGE("Can't open %s\n(%s)\n", device_name, strerror(errno)); return -1; } +#ifdef BOARD_RECOVERY_BLDRMSG_OFFSET + fseek(f, BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET); +#endif struct bootloader_message temp; int count = fread(&temp, sizeof(temp), 1, f); if (count != 1) { @@ -322,6 +331,9 @@ int set_bootloader_message_block_name(const struct bootloader_message *in, printf("Can't open %s\n(%s)\n", block_name, strerror(errno)); return -1; } +#ifdef BOARD_RECOVERY_BLDRMSG_OFFSET + fseek(f, BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET); +#endif int count = fwrite(in, sizeof(*in), 1, f); if (count != 1) { printf("Failed writing %s\n(%s)\n", block_name, strerror(errno)); |