summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2016-09-26 21:52:42 +0200
committerElliott Hughes <enh@google.com>2016-09-26 21:53:52 +0200
commit130f6c86f590b61bc3aef7883500eb4c0ba593c3 (patch)
tree2577e80d8cac345ac5aec61d6af6d0e2d7c0c862
parentFail gracefully when we fail to fork the update binary (diff)
parentMerge "Switch to <android-base/properties.h>." am: cc02f9652f (diff)
downloadandroid_bootable_recovery-130f6c86f590b61bc3aef7883500eb4c0ba593c3.tar
android_bootable_recovery-130f6c86f590b61bc3aef7883500eb4c0ba593c3.tar.gz
android_bootable_recovery-130f6c86f590b61bc3aef7883500eb4c0ba593c3.tar.bz2
android_bootable_recovery-130f6c86f590b61bc3aef7883500eb4c0ba593c3.tar.lz
android_bootable_recovery-130f6c86f590b61bc3aef7883500eb4c0ba593c3.tar.xz
android_bootable_recovery-130f6c86f590b61bc3aef7883500eb4c0ba593c3.tar.zst
android_bootable_recovery-130f6c86f590b61bc3aef7883500eb4c0ba593c3.zip
-rw-r--r--adb_install.cpp7
-rw-r--r--bootloader_message/bootloader_message.cpp11
-rw-r--r--recovery.cpp20
-rw-r--r--screen_ui.cpp8
-rw-r--r--ui.cpp4
-rw-r--r--uncrypt/uncrypt.cpp14
-rw-r--r--updater/install.cpp19
-rw-r--r--wear_ui.cpp6
8 files changed, 40 insertions, 49 deletions
diff --git a/adb_install.cpp b/adb_install.cpp
index b05fda13a..fab72f8a4 100644
--- a/adb_install.cpp
+++ b/adb_install.cpp
@@ -26,13 +26,14 @@
#include <fcntl.h>
#include "ui.h"
-#include "cutils/properties.h"
#include "install.h"
#include "common.h"
#include "adb_install.h"
#include "minadbd/fuse_adb_provider.h"
#include "fuse_sideload.h"
+#include <android-base/properties.h>
+
static void set_usb_driver(RecoveryUI* ui, bool enabled) {
int fd = open("/sys/class/android_usb/android0/enable", O_WRONLY);
if (fd < 0) {
@@ -49,7 +50,7 @@ static void set_usb_driver(RecoveryUI* ui, bool enabled) {
static void stop_adbd(RecoveryUI* ui) {
ui->Print("Stopping adbd...\n");
- property_set("ctl.stop", "adbd");
+ android::base::SetProperty("ctl.stop", "adbd");
set_usb_driver(ui, false);
}
@@ -57,7 +58,7 @@ static void maybe_restart_adbd(RecoveryUI* ui) {
if (is_ro_debuggable()) {
ui->Print("Restarting adbd...\n");
set_usb_driver(ui, true);
- property_set("ctl.start", "adbd");
+ android::base::SetProperty("ctl.start", "adbd");
}
}
diff --git a/bootloader_message/bootloader_message.cpp b/bootloader_message/bootloader_message.cpp
index 9de7dff40..e0c95d223 100644
--- a/bootloader_message/bootloader_message.cpp
+++ b/bootloader_message/bootloader_message.cpp
@@ -19,25 +19,24 @@
#include <errno.h>
#include <fcntl.h>
#include <string.h>
-#include <sys/system_properties.h>
#include <string>
#include <vector>
#include <android-base/file.h>
+#include <android-base/properties.h>
#include <android-base/stringprintf.h>
#include <android-base/unique_fd.h>
#include <fs_mgr.h>
static struct fstab* read_fstab(std::string* err) {
- // The fstab path is always "/fstab.${ro.hardware}".
- std::string fstab_path = "/fstab.";
- char value[PROP_VALUE_MAX];
- if (__system_property_get("ro.hardware", value) == 0) {
+ std::string ro_hardware = android::base::GetProperty("ro.hardware", "");
+ if (ro_hardware.empty()) {
*err = "failed to get ro.hardware";
return nullptr;
}
- fstab_path += value;
+ // The fstab path is always "/fstab.${ro.hardware}".
+ std::string fstab_path = "/fstab." + ro_hardware;
struct fstab* fstab = fs_mgr_read_fstab(fstab_path.c_str());
if (fstab == nullptr) {
*err = "failed to read " + fstab_path;
diff --git a/recovery.cpp b/recovery.cpp
index d3f9c47ae..e0f5a2ee3 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -43,12 +43,13 @@
#include <android-base/file.h>
#include <android-base/logging.h>
#include <android-base/parseint.h>
+#include <android-base/properties.h>
#include <android-base/stringprintf.h>
#include <android-base/strings.h>
#include <android-base/unique_fd.h>
#include <bootloader_message/bootloader_message.h>
#include <cutils/android_reboot.h>
-#include <cutils/properties.h>
+#include <cutils/properties.h> /* for property_list */
#include <healthd/BatteryMonitor.h>
#include <private/android_logger.h> /* private pmsg functions */
#include <selinux/label.h>
@@ -213,8 +214,7 @@ static void check_and_fclose(FILE *fp, const char *name) {
}
bool is_ro_debuggable() {
- char value[PROPERTY_VALUE_MAX+1];
- return (property_get("ro.debuggable", value, NULL) == 1 && value[0] == '1');
+ return android::base::GetBoolProperty("ro.debuggable", false);
}
static void redirect_stdio(const char* filename) {
@@ -1264,15 +1264,12 @@ prompt_and_wait(Device* device, int status) {
break;
case Device::MOUNT_SYSTEM:
- char system_root_image[PROPERTY_VALUE_MAX];
- property_get("ro.build.system_root_image", system_root_image, "");
-
// For a system image built with the root directory (i.e.
// system_root_image == "true"), we mount it to /system_root, and symlink /system
// to /system_root/system to make adb shell work (the symlink is created through
// the build system).
// Bug: 22855115
- if (strcmp(system_root_image, "true") == 0) {
+ if (android::base::GetBoolProperty("ro.build.system_root_image", false)) {
if (ensure_path_mounted_at("/", "/system_root") != -1) {
ui->Print("Mounted /system.\n");
}
@@ -1694,8 +1691,7 @@ int main(int argc, char **argv) {
ui->Print("Retry attempt %d\n", retry_count);
// Reboot and retry the update
- int ret = property_set(ANDROID_RB_PROPERTY, "reboot,recovery");
- if (ret < 0) {
+ if (!android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot,recovery")) {
ui->Print("Reboot failed\n");
} else {
while (true) {
@@ -1775,17 +1771,17 @@ int main(int argc, char **argv) {
switch (after) {
case Device::SHUTDOWN:
ui->Print("Shutting down...\n");
- property_set(ANDROID_RB_PROPERTY, "shutdown,");
+ android::base::SetProperty(ANDROID_RB_PROPERTY, "shutdown,");
break;
case Device::REBOOT_BOOTLOADER:
ui->Print("Rebooting to bootloader...\n");
- property_set(ANDROID_RB_PROPERTY, "reboot,bootloader");
+ android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot,bootloader");
break;
default:
ui->Print("Rebooting...\n");
- property_set(ANDROID_RB_PROPERTY, "reboot,");
+ android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot,");
break;
}
while (true) {
diff --git a/screen_ui.cpp b/screen_ui.cpp
index a33605ac0..a7b03c50d 100644
--- a/screen_ui.cpp
+++ b/screen_ui.cpp
@@ -32,9 +32,9 @@
#include <vector>
#include <android-base/logging.h>
+#include <android-base/properties.h>
#include <android-base/strings.h>
#include <android-base/stringprintf.h>
-#include <cutils/properties.h>
#include "common.h"
#include "device.h"
@@ -293,8 +293,8 @@ void ScreenRecoveryUI::draw_screen_locked() {
int y = 0;
if (show_menu) {
- char recovery_fingerprint[PROPERTY_VALUE_MAX];
- property_get("ro.bootimage.build.fingerprint", recovery_fingerprint, "");
+ std::string recovery_fingerprint =
+ android::base::GetProperty("ro.bootimage.build.fingerprint", "");
SetColor(INFO);
DrawTextLine(TEXT_INDENT, &y, "Android Recovery", true);
@@ -460,7 +460,7 @@ void ScreenRecoveryUI::Init() {
RecoveryUI::Init();
InitTextParams();
- density_ = static_cast<float>(property_get_int32("ro.sf.lcd_density", 160)) / 160.f;
+ density_ = static_cast<float>(android::base::GetIntProperty("ro.sf.lcd_density", 160)) / 160.f;
// Are we portrait or landscape?
layout_ = (gr_fb_width() > gr_fb_height()) ? LANDSCAPE : PORTRAIT;
diff --git a/ui.cpp b/ui.cpp
index 2efb759db..78b6e4f1b 100644
--- a/ui.cpp
+++ b/ui.cpp
@@ -28,7 +28,7 @@
#include <time.h>
#include <unistd.h>
-#include <cutils/properties.h>
+#include <android-base/properties.h>
#include <cutils/android_reboot.h>
#include "common.h"
@@ -175,7 +175,7 @@ void RecoveryUI::ProcessKey(int key_code, int updown) {
case RecoveryUI::REBOOT:
if (reboot_enabled) {
- property_set(ANDROID_RB_PROPERTY, "reboot,");
+ android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot,");
while (true) { pause(); }
}
break;
diff --git a/uncrypt/uncrypt.cpp b/uncrypt/uncrypt.cpp
index 21db29026..b5cd1399f 100644
--- a/uncrypt/uncrypt.cpp
+++ b/uncrypt/uncrypt.cpp
@@ -107,12 +107,12 @@
#include <android-base/file.h>
#include <android-base/logging.h>
+#include <android-base/properties.h>
#include <android-base/stringprintf.h>
#include <android-base/strings.h>
#include <android-base/unique_fd.h>
#include <bootloader_message/bootloader_message.h>
#include <cutils/android_reboot.h>
-#include <cutils/properties.h>
#include <cutils/sockets.h>
#include <fs_mgr.h>
@@ -163,13 +163,15 @@ static struct fstab* read_fstab() {
fstab = NULL;
// The fstab path is always "/fstab.${ro.hardware}".
- char fstab_path[PATH_MAX+1] = "/fstab.";
- if (!property_get("ro.hardware", fstab_path+strlen(fstab_path), "")) {
+ std::string ro_hardware = android::base::GetProperty("ro.hardware", "");
+ if (ro_hardware.empty()) {
LOG(ERROR) << "failed to get ro.hardware";
return NULL;
}
- fstab = fs_mgr_read_fstab(fstab_path);
+ std::string fstab_path = "/fstab." + ro_hardware;
+
+ fstab = fs_mgr_read_fstab(fstab_path.c_str());
if (!fstab) {
LOG(ERROR) << "failed to read " << fstab_path;
return NULL;
@@ -194,9 +196,7 @@ static const char* find_block_device(const char* path, bool* encryptable, bool*
*encryptable = false;
if (fs_mgr_is_encryptable(v) || fs_mgr_is_file_encrypted(v)) {
*encryptable = true;
- char buffer[PROPERTY_VALUE_MAX+1];
- if (property_get("ro.crypto.state", buffer, "") &&
- strcmp(buffer, "encrypted") == 0) {
+ if (android::base::GetProperty("ro.crypto.state", "") == "encrypted") {
*encrypted = true;
}
}
diff --git a/updater/install.cpp b/updater/install.cpp
index 4c4886d51..8c33c2bf3 100644
--- a/updater/install.cpp
+++ b/updater/install.cpp
@@ -37,6 +37,7 @@
#include <vector>
#include <android-base/parseint.h>
+#include <android-base/properties.h>
#include <android-base/strings.h>
#include <android-base/stringprintf.h>
#include <selinux/label.h>
@@ -46,7 +47,6 @@
#include "applypatch/applypatch.h"
#include "cutils/android_reboot.h"
#include "cutils/misc.h"
-#include "cutils/properties.h"
#include "edify/expr.h"
#include "error_code.h"
#include "minzip/DirUtil.h"
@@ -906,11 +906,10 @@ Value* GetPropFn(const char* name, State* state, int argc, Expr* argv[]) {
char* key = Evaluate(state, argv[0]);
if (key == NULL) return NULL;
- char value[PROPERTY_VALUE_MAX];
- property_get(key, value, "");
+ std::string value = android::base::GetProperty(key, "");
free(key);
- return StringValue(strdup(value));
+ return StringValue(strdup(value.c_str()));
}
@@ -1301,9 +1300,8 @@ Value* RebootNowFn(const char* name, State* state, int argc, Expr* argv[]) {
char* property;
if (ReadArgs(state, argv, 2, &filename, &property) < 0) return NULL;
- char buffer[80];
-
// zero out the 'command' field of the bootloader message.
+ char buffer[80];
memset(buffer, 0, sizeof(((struct bootloader_message*)0)->command));
FILE* f = ota_fopen(filename, "r+b");
fseek(f, offsetof(struct bootloader_message, command), SEEK_SET);
@@ -1311,12 +1309,9 @@ Value* RebootNowFn(const char* name, State* state, int argc, Expr* argv[]) {
ota_fclose(f);
free(filename);
- strcpy(buffer, "reboot,");
- if (property != NULL) {
- strncat(buffer, property, sizeof(buffer)-10);
- }
-
- property_set(ANDROID_RB_PROPERTY, buffer);
+ std::string reboot_cmd = "reboot,";
+ if (property != nullptr) reboot_cmd += property;
+ android::base::SetProperty(ANDROID_RB_PROPERTY, reboot_cmd);
sleep(5);
free(property);
diff --git a/wear_ui.cpp b/wear_ui.cpp
index 3ea1060e4..0918ac457 100644
--- a/wear_ui.cpp
+++ b/wear_ui.cpp
@@ -30,7 +30,7 @@
#include "common.h"
#include "device.h"
#include "wear_ui.h"
-#include "cutils/properties.h"
+#include "android-base/properties.h"
#include "android-base/strings.h"
#include "android-base/stringprintf.h"
@@ -119,8 +119,8 @@ void WearRecoveryUI::draw_screen_locked()
int y = outer_height;
int x = outer_width;
if (show_menu) {
- char recovery_fingerprint[PROPERTY_VALUE_MAX];
- property_get("ro.bootimage.build.fingerprint", recovery_fingerprint, "");
+ std::string recovery_fingerprint =
+ android::base::GetProperty("ro.bootimage.build.fingerprint", "");
SetColor(HEADER);
DrawTextLine(x + 4, &y, "Android Recovery", true);
for (auto& chunk: android::base::Split(recovery_fingerprint, ":")) {