Merge "SYSTEM_ROOT -> get_system_root" am: cbfeb7f6af
am: fe00ae099c

Change-Id: I2def1cab9b23061e62c263dd14c5f1061b0d74d8
diff --git a/fsck_unshare_blocks.cpp b/fsck_unshare_blocks.cpp
index 684958e..b653d13 100644
--- a/fsck_unshare_blocks.cpp
+++ b/fsck_unshare_blocks.cpp
@@ -40,7 +40,6 @@
 
 static constexpr const char* SYSTEM_E2FSCK_BIN = "/system/bin/e2fsck_static";
 static constexpr const char* TMP_E2FSCK_BIN = "/tmp/e2fsck.bin";
-static constexpr const char* SYSTEM_ROOT = "/system";
 
 static bool copy_file(const char* source, const char* dest) {
   android::base::unique_fd source_fd(open(source, O_RDONLY));
@@ -121,14 +120,10 @@
   std::vector<std::string> partitions = { "/odm", "/oem", "/product", "/vendor" };
 
   // Temporarily mount system so we can copy e2fsck_static.
-  bool mounted = false;
-  if (volume_for_mount_point(SYSTEM_ROOT) == nullptr) {
-    mounted = ensure_path_mounted_at("/", "/mnt/system") != -1;
-    partitions.push_back("/");
-  } else {
-    mounted = ensure_path_mounted_at(SYSTEM_ROOT, "/mnt/system") != -1;
-    partitions.push_back(SYSTEM_ROOT);
-  }
+  std::string system_root = get_system_root();
+  bool mounted = ensure_path_mounted_at(system_root.c_str(), "/mnt/system");
+  partitions.push_back(system_root);
+
   if (!mounted) {
     LOG(ERROR) << "Failed to mount system image.";
     return false;
diff --git a/recovery.cpp b/recovery.cpp
index e17526a..7e1fa43 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -78,7 +78,6 @@
 static constexpr const char* DATA_ROOT = "/data";
 static constexpr const char* METADATA_ROOT = "/metadata";
 static constexpr const char* SDCARD_ROOT = "/sdcard";
-static constexpr const char* SYSTEM_ROOT = "/system";
 
 // We define RECOVERY_API_VERSION in Android.mk, which will be picked up by build system and packed
 // into target_files.zip. Assert the version defined in code and in Android.mk are consistent.
@@ -837,14 +836,8 @@
       }
       case Device::MOUNT_SYSTEM:
         // the system partition is mounted at /mnt/system
-        if (volume_for_mount_point(SYSTEM_ROOT) == nullptr) {
-          if (ensure_path_mounted_at("/", "/mnt/system") != -1) {
-            ui->Print("Mounted /system.\n");
-          }
-        } else {
-          if (ensure_path_mounted_at(SYSTEM_ROOT, "/mnt/system") != -1) {
-            ui->Print("Mounted /system.\n");
-          }
+        if (ensure_path_mounted_at(get_system_root().c_str(), "/mnt/system") != -1) {
+          ui->Print("Mounted /system.\n");
         }
         break;
 
diff --git a/roots.cpp b/roots.cpp
index 8772c57..7dc4ec3 100644
--- a/roots.cpp
+++ b/roots.cpp
@@ -45,6 +45,7 @@
 
 static struct fstab* fstab = nullptr;
 static bool did_map_logical_partitions = false;
+static constexpr const char* SYSTEM_ROOT = "/system";
 
 extern struct selabel_handle* sehandle;
 
@@ -408,3 +409,11 @@
 bool logical_partitions_mapped() {
   return did_map_logical_partitions;
 }
+
+std::string get_system_root() {
+  if (volume_for_mount_point(SYSTEM_ROOT) == nullptr) {
+    return "/";
+  } else {
+    return SYSTEM_ROOT;
+  }
+}
diff --git a/roots.h b/roots.h
index 702af8d..314eb5f 100644
--- a/roots.h
+++ b/roots.h
@@ -55,4 +55,6 @@
 
 bool logical_partitions_mapped();
 
+std::string get_system_root();
+
 #endif  // RECOVERY_ROOTS_H_