From ad774b297010d23911dfc75bb626cf74e374f731 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Fri, 29 Sep 2017 10:39:08 -0700 Subject: roots: Remove #include "common.h". And add the missing include of (e.g. for strcmp(3)). Minor update to the arg of fs_mgr_get_entry_for_mount_point(), which now accepts std::string. Test: mmma bootable/recovery Change-Id: I9cb8c31fe71b5a053f4d84bf1aba00e96c02ed03 --- roots.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roots.cpp b/roots.cpp index 7d7d1bdc7..02c1ecb7c 100644 --- a/roots.cpp +++ b/roots.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -38,7 +39,6 @@ #include #include -#include "common.h" #include "mounts.h" static struct fstab* fstab = nullptr; @@ -77,7 +77,7 @@ 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; } -- cgit v1.2.3 From 3e18f2bf4004e9df2f7fcee0d2035552404ff715 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Fri, 29 Sep 2017 17:11:13 -0700 Subject: roots: Fix an issue with volume_for_path(). The earlier commit in 2dfc1a38982c4052bb32bc7fc06edeadf3908fb9 unintentionally changed the behavior. It gives a different result when looking up non-existent mount points (e.g. /cache on marlin). The logic behind volume_for_path("/xyz") is unclear: - It's fine to return non-null value if it's called by ensure_path_mounted() before accessing that file "/xyz". (Just based on the function name, we're not actually having this case.) - It should return nullptr if the caller is interested in the existence of that particular mount point "/xyz". This CL renames the function to volume_for_mount_point(), which does an exact match by querying the given mount point from libfs_mgr. The former volume_for_path() has been moved down to function scope for serving ensure_path_mounted() only. Test: Build and boot into recovery on bullhead and marlin respectively. 'View recovery logs'. Test: 'Mount /system' Test: 'Apply update from ADB' Change-Id: I1a16390f57540cae08a2b8f3d439d17886975217 --- install.cpp | 2 +- recovery.cpp | 2 +- roots.cpp | 6 +++++- roots.h | 6 ++++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/install.cpp b/install.cpp index 507161c2e..74d1a68b3 100644 --- a/install.cpp +++ b/install.cpp @@ -653,7 +653,7 @@ int install_package(const std::string& path, bool* wipe_cache, const std::string std::chrono::duration duration = std::chrono::system_clock::now() - start; int time_total = static_cast(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 076b4492e..4dc5b540e 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -1396,7 +1396,7 @@ int main(int argc, char **argv) { 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 args = get_args(argc, argv); std::vector args_to_parse(args.size()); diff --git a/roots.cpp b/roots.cpp index 02c1ecb7c..c0348d715 100644 --- a/roots.cpp +++ b/roots.cpp @@ -69,11 +69,15 @@ void load_volume_table() { 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) { diff --git a/roots.h b/roots.h index 542f03b9c..46bb77e02 100644 --- a/roots.h +++ b/roots.h @@ -17,13 +17,15 @@ #ifndef RECOVERY_ROOTS_H_ #define RECOVERY_ROOTS_H_ +#include + 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). -- cgit v1.2.3 From 5aa77ca73d6c4ec70663f6c07c88b3eea45ef91e Mon Sep 17 00:00:00 2001 From: Chih-Hung Hsieh Date: Mon, 2 Oct 2017 11:44:52 -0700 Subject: Use -Werror in bootable/recovery * Move -Werror from cppflags to cflags. Bug: 66996870 Test: build with WITH_TIDY=1 Change-Id: I59147fe24d8b48a0403c67ba07d4d384b8e9c5a3 --- bootloader_message/Android.bp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bootloader_message/Android.bp b/bootloader_message/Android.bp index 456b04c33..c81c67bdb 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", ], -- cgit v1.2.3