recovery: Fix the argument parsing.
Commit f0ed159f48 unintentionally changed
the behavior when parsing the arguments from BCB and command file. It
should only parse the command file for arguments if BCB doesn't supply
any.
As a result, it shows the following from the log:
I:Got 2 arguments from boot message
I:Got 3 arguments from /cache/recovery/command
Test: Set arguments in BCB and command file both. It should only use the
arguments from BCB.
Change-Id: Idf371137aa9177f1b2dfdfecf0c9f46959d2ee76
This commit is contained in:
@@ -322,7 +322,7 @@ static std::vector<std::string> get_args(const int argc, char** const argv) {
|
||||
std::vector<std::string> args(argv, argv + argc);
|
||||
|
||||
// --- if arguments weren't supplied, look in the bootloader control block
|
||||
if (argc == 1) {
|
||||
if (args.size() == 1) {
|
||||
boot.recovery[sizeof(boot.recovery) - 1] = '\0'; // Ensure termination
|
||||
std::string boot_recovery(boot.recovery);
|
||||
std::vector<std::string> tokens = android::base::Split(boot_recovery, "\n");
|
||||
@@ -338,7 +338,7 @@ static std::vector<std::string> get_args(const int argc, char** const argv) {
|
||||
}
|
||||
|
||||
// --- if that doesn't work, try the command file (if we have /cache).
|
||||
if (argc == 1 && has_cache) {
|
||||
if (args.size() == 1 && has_cache) {
|
||||
std::string content;
|
||||
if (ensure_path_mounted(COMMAND_FILE) == 0 &&
|
||||
android::base::ReadFileToString(COMMAND_FILE, &content)) {
|
||||
|
||||
Reference in New Issue
Block a user