From 810d71b0050bb94fe9bbcd02368dafd52cebdeb7 Mon Sep 17 00:00:00 2001 From: Hung-ying Tyan Date: Fri, 2 Jun 2017 18:59:46 +0800 Subject: [PATCH] Load default prop from /system/etc/prop.default /default.prop is moved to /system/etc/prop.default for full Treblized devices. Modifies property_service to load it from there first. Bug: 37815285 Test: Tested with ag/2371424. Booted pixel phones, checked the location of pro.default, verified the symlink at /default.prop, checked a few properties via adb shell and manually tested a few apps. Change-Id: I485231f21fc86b0aec58edf867e229a31e77d85e --- init/property_service.cpp | 12 ++++++++---- libcutils/fs_config.c | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/init/property_service.cpp b/init/property_service.cpp index 5884cb60c..60c1895f1 100644 --- a/init/property_service.cpp +++ b/init/property_service.cpp @@ -444,7 +444,7 @@ static void handle_property_set_fd() { } } -static void load_properties_from_file(const char *, const char *); +static bool load_properties_from_file(const char *, const char *); /* * Filter is used to decide which properties to load: NULL loads all keys, @@ -508,16 +508,17 @@ static void load_properties(char *data, const char *filter) // Filter is used to decide which properties to load: NULL loads all keys, // "ro.foo.*" is a prefix match, and "ro.foo.bar" is an exact match. -static void load_properties_from_file(const char* filename, const char* filter) { +static bool load_properties_from_file(const char* filename, const char* filter) { Timer t; std::string data; if (!read_file(filename, &data)) { PLOG(WARNING) << "Couldn't load properties from " << filename; - return; + return false; } data.push_back('\n'); load_properties(&data[0], filter); LOG(VERBOSE) << "(Loading properties from " << filename << " took " << t << ".)"; + return true; } static void load_persistent_properties() { @@ -592,7 +593,10 @@ static void update_sys_usb_config() { } void property_load_boot_defaults() { - load_properties_from_file("/default.prop", NULL); + if (!load_properties_from_file("/system/etc/prop.default", NULL)) { + // legacy path + load_properties_from_file("/default.prop", NULL); + } load_properties_from_file("/odm/default.prop", NULL); load_properties_from_file("/vendor/default.prop", NULL); diff --git a/libcutils/fs_config.c b/libcutils/fs_config.c index d98a923c9..5b9d17429 100644 --- a/libcutils/fs_config.c +++ b/libcutils/fs_config.c @@ -135,7 +135,8 @@ static const struct fs_path_config android_files[] = { { 00640, AID_ROOT, AID_SHELL, 0, "data/nativetest64/tests.txt" }, { 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest/*" }, { 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest64/*" }, - { 00600, AID_ROOT, AID_ROOT, 0, "default.prop" }, + { 00600, AID_ROOT, AID_ROOT, 0, "default.prop" }, // legacy + { 00600, AID_ROOT, AID_ROOT, 0, "system/etc/prop.default" }, { 00600, AID_ROOT, AID_ROOT, 0, "odm/build.prop" }, { 00600, AID_ROOT, AID_ROOT, 0, "odm/default.prop" }, { 00444, AID_ROOT, AID_ROOT, 0, odm_conf_dir + 1 },