Do not wipe block misc on bootloader msg update

When set_bootloader_message_block() is called, it fopens /misc in write
binary mode, wiping all contents other than what is being written. The
bootloader msg structure is only 1024+32+32 bytes, so some manufacturers
store more than just a bootloader msg on /misc. fopen in read+append
mode so that only the bootloader msg is written and the rest of the
partition is left untouched.

Change-Id: I2d2fbdf067282744864a19d404ca7dc12f688a98
diff --git a/bootloader.cpp b/bootloader.cpp
index fbb31e0..0335912 100644
--- a/bootloader.cpp
+++ b/bootloader.cpp
@@ -275,7 +275,7 @@
 static int set_bootloader_message_block(const struct bootloader_message *in,
                                         const Volume* v) {
     wait_for_device(v->blk_device);
-    FILE* f = fopen(v->blk_device, "wb");
+    FILE* f = fopen(v->blk_device, "rb+");
     if (f == NULL) {
         LOGE("Can't open %s\n(%s)\n", v->blk_device, strerror(errno));
         return -1;
@@ -317,7 +317,7 @@
 int set_bootloader_message_block_name(const struct bootloader_message *in,
                                         const char* block_name) {
     wait_for_device(block_name);
-    FILE* f = fopen(block_name, "wb");
+    FILE* f = fopen(block_name, "rb+");
     if (f == NULL) {
         printf("Can't open %s\n(%s)\n", block_name, strerror(errno));
         return -1;