am b35f68a6: Merge "init: load factory properties"

* commit 'b35f68a6974589fc3c762d6d2c7bac363794e355':
  init: load factory properties
This commit is contained in:
Dima Zavin 2013-08-28 14:12:19 -07:00 committed by Android Git Automerger
commit 28e52c816d

View file

@ -403,10 +403,13 @@ void get_property_workspace(int *fd, int *sz)
*sz = pa_workspace.size; *sz = pa_workspace.size;
} }
static void load_properties(char *data) static void load_properties(char *data, char *prefix)
{ {
char *key, *value, *eol, *sol, *tmp; char *key, *value, *eol, *sol, *tmp;
size_t plen;
if (prefix)
plen = strlen(prefix);
sol = data; sol = data;
while((eol = strchr(sol, '\n'))) { while((eol = strchr(sol, '\n'))) {
key = sol; key = sol;
@ -422,6 +425,9 @@ static void load_properties(char *data)
tmp = value - 2; tmp = value - 2;
while((tmp > key) && isspace(*tmp)) *tmp-- = 0; while((tmp > key) && isspace(*tmp)) *tmp-- = 0;
if (prefix && strncmp(key, prefix, plen))
continue;
while(isspace(*value)) value++; while(isspace(*value)) value++;
tmp = eol - 2; tmp = eol - 2;
while((tmp > value) && isspace(*tmp)) *tmp-- = 0; while((tmp > value) && isspace(*tmp)) *tmp-- = 0;
@ -430,7 +436,7 @@ static void load_properties(char *data)
} }
} }
static void load_properties_from_file(const char *fn) static void load_properties_from_file(const char *fn, char *prefix)
{ {
char *data; char *data;
unsigned sz; unsigned sz;
@ -438,7 +444,7 @@ static void load_properties_from_file(const char *fn)
data = read_file(fn, &sz); data = read_file(fn, &sz);
if(data != 0) { if(data != 0) {
load_properties(data); load_properties(data, prefix);
free(data); free(data);
} }
} }
@ -511,7 +517,7 @@ void property_init(void)
void property_load_boot_defaults(void) void property_load_boot_defaults(void)
{ {
load_properties_from_file(PROP_PATH_RAMDISK_DEFAULT); load_properties_from_file(PROP_PATH_RAMDISK_DEFAULT, NULL);
} }
int properties_inited(void) int properties_inited(void)
@ -526,7 +532,7 @@ static void load_override_properties() {
ret = property_get("ro.debuggable", debuggable); ret = property_get("ro.debuggable", debuggable);
if (ret && (strcmp(debuggable, "1") == 0)) { if (ret && (strcmp(debuggable, "1") == 0)) {
load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE); load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE, NULL);
} }
#endif /* ALLOW_LOCAL_PROP_OVERRIDE */ #endif /* ALLOW_LOCAL_PROP_OVERRIDE */
} }
@ -548,8 +554,9 @@ void start_property_service(void)
{ {
int fd; int fd;
load_properties_from_file(PROP_PATH_SYSTEM_BUILD); load_properties_from_file(PROP_PATH_SYSTEM_BUILD, NULL);
load_properties_from_file(PROP_PATH_SYSTEM_DEFAULT); load_properties_from_file(PROP_PATH_SYSTEM_DEFAULT, NULL);
load_properties_from_file(PROP_PATH_FACTORY, "ro.");
load_override_properties(); load_override_properties();
/* Read persistent properties after all default values have been loaded. */ /* Read persistent properties after all default values have been loaded. */
load_persistent_properties(); load_persistent_properties();