diff options
Diffstat (limited to 'cmds/dumpstate/DumpstateUtil.cpp')
-rw-r--r-- | cmds/dumpstate/DumpstateUtil.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/cmds/dumpstate/DumpstateUtil.cpp b/cmds/dumpstate/DumpstateUtil.cpp index 600a500e86..97c8ae2045 100644 --- a/cmds/dumpstate/DumpstateUtil.cpp +++ b/cmds/dumpstate/DumpstateUtil.cpp @@ -101,13 +101,16 @@ CommandOptions::CommandOptionsBuilder& CommandOptions::CommandOptionsBuilder::Al } CommandOptions::CommandOptionsBuilder& CommandOptions::CommandOptionsBuilder::AsRoot() { - values.account_mode_ = SU_ROOT; + if (!PropertiesHelper::IsUnroot()) { + values.account_mode_ = SU_ROOT; + } return *this; } CommandOptions::CommandOptionsBuilder& CommandOptions::CommandOptionsBuilder::AsRootIfAvailable() { - if (!PropertiesHelper::IsUserBuild()) - values.account_mode_ = SU_ROOT; + if (!PropertiesHelper::IsUserBuild()) { + return AsRoot(); + } return *this; } @@ -176,6 +179,7 @@ CommandOptions::CommandOptionsBuilder CommandOptions::WithTimeoutInMs(int64_t ti std::string PropertiesHelper::build_type_ = ""; int PropertiesHelper::dry_run_ = -1; +int PropertiesHelper::unroot_ = -1; bool PropertiesHelper::IsUserBuild() { if (build_type_.empty()) { @@ -191,6 +195,13 @@ bool PropertiesHelper::IsDryRun() { return dry_run_ == 1; } +bool PropertiesHelper::IsUnroot() { + if (unroot_ == -1) { + unroot_ = android::base::GetBoolProperty("dumpstate.unroot", false) ? 1 : 0; + } + return unroot_ == 1; +} + int DumpFileToFd(int out_fd, const std::string& title, const std::string& path) { android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(path.c_str(), O_RDONLY | O_NONBLOCK | O_CLOEXEC))); if (fd.get() < 0) { |