summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common.h2
-rw-r--r--recovery.cpp17
2 files changed, 5 insertions, 14 deletions
diff --git a/common.h b/common.h
index 319af3d72..3e5f5476f 100644
--- a/common.h
+++ b/common.h
@@ -29,7 +29,7 @@ extern RecoveryUI* ui;
extern bool modified_flash;
// The current stage, e.g. "1/2".
-extern const char* stage;
+extern std::string stage;
// The reason argument provided in "--reason=".
extern const char* reason;
diff --git a/recovery.cpp b/recovery.cpp
index 5c60ce655..872658a51 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -83,7 +83,6 @@ static const struct option OPTIONS[] = {
{ "sideload_auto_reboot", no_argument, NULL, 'a' },
{ "just_exit", no_argument, NULL, 'x' },
{ "locale", required_argument, NULL, 'l' },
- { "stages", required_argument, NULL, 'g' },
{ "shutdown_after", no_argument, NULL, 'p' },
{ "reason", required_argument, NULL, 'r' },
{ "security", no_argument, NULL, 'e'},
@@ -129,7 +128,7 @@ static bool has_cache = false;
RecoveryUI* ui = nullptr;
bool modified_flash = false;
-const char* stage = nullptr;
+std::string stage;
const char* reason = nullptr;
struct selabel_handle* sehandle;
@@ -309,7 +308,7 @@ static std::vector<std::string> get_args(const int argc, char** const argv) {
// If fails, leave a zeroed bootloader_message.
boot = {};
}
- stage = strndup(boot.stage, sizeof(boot.stage));
+ stage = std::string(boot.stage);
if (boot.command[0] != 0) {
std::string boot_command = std::string(boot.command, sizeof(boot.command));
@@ -1422,14 +1421,6 @@ int main(int argc, char **argv) {
case 'a': sideload = true; sideload_auto_reboot = true; break;
case 'x': just_exit = true; break;
case 'l': locale = optarg; break;
- case 'g': {
- if (stage == NULL || *stage == '\0') {
- char buffer[20] = "1/";
- strncat(buffer, optarg, sizeof(buffer)-3);
- stage = strdup(buffer);
- }
- break;
- }
case 'p': shutdown_after = true; break;
case 'r': reason = optarg; break;
case 'e': security_update = true; break;
@@ -1461,7 +1452,7 @@ int main(int argc, char **argv) {
}
printf("locale is [%s]\n", locale.c_str());
- printf("stage is [%s]\n", stage);
+ printf("stage is [%s]\n", stage.c_str());
printf("reason is [%s]\n", reason);
Device* device = make_device();
@@ -1476,7 +1467,7 @@ int main(int argc, char **argv) {
ui->SetSystemUpdateText(security_update);
int st_cur, st_max;
- if (stage != NULL && sscanf(stage, "%d/%d", &st_cur, &st_max) == 2) {
+ if (!stage.empty() && sscanf(stage.c_str(), "%d/%d", &st_cur, &st_max) == 2) {
ui->SetStage(st_cur, st_max);
}