vold: write bootloader message directly.

Bug: 27176738
Change-Id: I09bfe777e383325809d7ecc2dcb9129fe234053f
diff --git a/Android.mk b/Android.mk
index 049cd80..fb5e23e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -60,6 +60,7 @@
 	libkeymaster_messages \
 
 common_static_libraries := \
+	libbootloader_message_writer \
 	libfs_mgr \
 	libfec \
 	libfec_rs \
diff --git a/cryptfs.c b/cryptfs.c
index a1f17a8..f217fa5 100644
--- a/cryptfs.c
+++ b/cryptfs.c
@@ -62,6 +62,7 @@
 #include "CheckBattery.h"
 #include "Process.h"
 
+#include <bootloader_message_writer.h>
 #include <hardware/keymaster0.h>
 #include <hardware/keymaster1.h>
 
@@ -3262,14 +3263,8 @@
         if (!strcmp(value, "1")) {
             /* wipe data if encryption failed */
             SLOGE("encryption failed - rebooting into recovery to wipe data\n");
-            mkdir("/cache/recovery", 0700);
-            int fd = open("/cache/recovery/command", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0600);
-            if (fd >= 0) {
-                write(fd, "--wipe_data\n", strlen("--wipe_data\n") + 1);
-                write(fd, "--reason=cryptfs_enable_internal\n", strlen("--reason=cryptfs_enable_internal\n") + 1);
-                close(fd);
-            } else {
-                SLOGE("could not open /cache/recovery/command\n");
+            if (!write_bootloader_message("--wipe_data\n--reason=cryptfs_enable_internal\n")) {
+                SLOGE("could not write bootloader message\n");
             }
             cryptfs_reboot(recovery);
         } else {