diff --git a/bootloader_message/Android.bp b/bootloader_message/Android.bp
index 456b04c..c81c67b 100644
--- a/bootloader_message/Android.bp
+++ b/bootloader_message/Android.bp
@@ -17,7 +17,7 @@
 cc_library_static {
     name: "libbootloader_message",
     srcs: ["bootloader_message.cpp"],
-    cppflags: [
+    cflags: [
         "-Wall",
         "-Werror",
     ],
diff --git a/install.cpp b/install.cpp
index 507161c..74d1a68 100644
--- a/install.cpp
+++ b/install.cpp
@@ -653,7 +653,7 @@
   std::chrono::duration<double> duration = std::chrono::system_clock::now() - start;
   int time_total = static_cast<int>(duration.count());
 
-  bool has_cache = volume_for_path("/cache") != nullptr;
+  bool has_cache = volume_for_mount_point("/cache") != nullptr;
   // Skip logging the uncrypt_status on devices without /cache.
   if (has_cache) {
     static constexpr const char* UNCRYPT_STATUS = "/cache/recovery/uncrypt_status";
diff --git a/recovery.cpp b/recovery.cpp
index 076b449..4dc5b54 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -1396,7 +1396,7 @@
     printf("Starting recovery (pid %d) on %s", getpid(), ctime(&start));
 
     load_volume_table();
-    has_cache = volume_for_path(CACHE_ROOT) != nullptr;
+    has_cache = volume_for_mount_point(CACHE_ROOT) != nullptr;
 
     std::vector<std::string> args = get_args(argc, argv);
     std::vector<char*> args_to_parse(args.size());
diff --git a/roots.cpp b/roots.cpp
index 7d7d1bd..c0348d7 100644
--- a/roots.cpp
+++ b/roots.cpp
@@ -20,6 +20,7 @@
 #include <fcntl.h>
 #include <stdint.h>
 #include <stdlib.h>
+#include <string.h>
 #include <sys/mount.h>
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -38,7 +39,6 @@
 #include <ext4_utils/wipe.h>
 #include <fs_mgr.h>
 
-#include "common.h"
 #include "mounts.h"
 
 static struct fstab* fstab = nullptr;
@@ -69,15 +69,19 @@
   printf("\n");
 }
 
+Volume* volume_for_mount_point(const std::string& mount_point) {
+  return fs_mgr_get_entry_for_mount_point(fstab, mount_point);
+}
+
 // Finds the volume specified by the given path. fs_mgr_get_entry_for_mount_point() does exact match
 // only, so it attempts the prefixes recursively (e.g. "/cache/recovery/last_log",
 // "/cache/recovery", "/cache", "/" for a given path of "/cache/recovery/last_log") and returns the
 // first match or nullptr.
-Volume* volume_for_path(const char* path) {
+static Volume* volume_for_path(const char* path) {
   if (path == nullptr || path[0] == '\0') return nullptr;
   std::string str(path);
   while (true) {
-    Volume* result = fs_mgr_get_entry_for_mount_point(fstab, str.c_str());
+    Volume* result = fs_mgr_get_entry_for_mount_point(fstab, str);
     if (result != nullptr || str == "/") {
       return result;
     }
diff --git a/roots.h b/roots.h
index 542f03b..46bb77e 100644
--- a/roots.h
+++ b/roots.h
@@ -17,13 +17,15 @@
 #ifndef RECOVERY_ROOTS_H_
 #define RECOVERY_ROOTS_H_
 
+#include <string>
+
 typedef struct fstab_rec Volume;
 
 // Load and parse volume data from /etc/recovery.fstab.
 void load_volume_table();
 
-// Return the Volume* record for this path (or NULL).
-Volume* volume_for_path(const char* path);
+// Return the Volume* record for this mount point (or nullptr).
+Volume* volume_for_mount_point(const std::string& mount_point);
 
 // Make sure that the volume 'path' is on is mounted.  Returns 0 on
 // success (volume is mounted).
