diff options
author | Tao Bao <tbao@google.com> | 2017-10-02 22:48:50 +0200 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-10-02 22:48:50 +0200 |
commit | dd7a4b5264c6e332dd6b02071e966f53a4e20050 (patch) | |
tree | b4a0df58e109a141b859ff90a720d3deb2fc977b | |
parent | Merge "Use -Werror in bootable/recovery" (diff) | |
parent | roots: Fix an issue with volume_for_path(). (diff) | |
download | android_bootable_recovery-dd7a4b5264c6e332dd6b02071e966f53a4e20050.tar android_bootable_recovery-dd7a4b5264c6e332dd6b02071e966f53a4e20050.tar.gz android_bootable_recovery-dd7a4b5264c6e332dd6b02071e966f53a4e20050.tar.bz2 android_bootable_recovery-dd7a4b5264c6e332dd6b02071e966f53a4e20050.tar.lz android_bootable_recovery-dd7a4b5264c6e332dd6b02071e966f53a4e20050.tar.xz android_bootable_recovery-dd7a4b5264c6e332dd6b02071e966f53a4e20050.tar.zst android_bootable_recovery-dd7a4b5264c6e332dd6b02071e966f53a4e20050.zip |
-rw-r--r-- | install.cpp | 2 | ||||
-rw-r--r-- | recovery.cpp | 2 | ||||
-rw-r--r-- | roots.cpp | 6 | ||||
-rw-r--r-- | 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<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 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<std::string> args = get_args(argc, argv); std::vector<char*> args_to_parse(args.size()); @@ -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) { @@ -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). |