summaryrefslogtreecommitdiff
path: root/init/builtins.cpp
diff options
context:
space:
mode:
authorTom Cherry <tomcherry@google.com>2015-07-22 14:23:33 -0700
committerTom Cherry <tomcherry@google.com>2015-08-21 10:14:43 -0700
commitb8dd0272e5decb066152e9dc99bcb41e60264a99 (patch)
tree0a033e6b623349ba1bd6927ec8d6103af9fe32f9 /init/builtins.cpp
parentcb716f976b078dff72aa3a61f9435d45e4beb9f5 (diff)
init: import init rc scripts from file systems after mount_all
Import /{system,vendor,odm}/etc/init/... after file systems are mounted Bug: 23186545 Change-Id: Idb0cae9773f904c0330054c8b3e31eb87b2fb7cb
Diffstat (limited to 'init/builtins.cpp')
-rw-r--r--init/builtins.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/init/builtins.cpp b/init/builtins.cpp
index e66350163..97151c01b 100644
--- a/init/builtins.cpp
+++ b/init/builtins.cpp
@@ -427,6 +427,19 @@ static int wipe_data_via_recovery()
while (1) { pause(); } // never reached
}
+void import_late()
+{
+ static const std::vector<std::string> init_directories = {
+ "/system/etc/init",
+ "/vendor/etc/init",
+ "/odm/etc/init"
+ };
+
+ for (const auto& dir : init_directories) {
+ init_parse_config(dir.c_str());
+ }
+}
+
/*
* This function might request a reboot, in which case it will
* not return.
@@ -478,6 +491,8 @@ int do_mount_all(const std::vector<std::string>& args)
return -1;
}
+ import_late();
+
if (ret == FS_MGR_MNTALL_DEV_NEEDS_ENCRYPTION) {
property_set("vold.decrypt", "trigger_encryption");
} else if (ret == FS_MGR_MNTALL_DEV_MIGHT_BE_ENCRYPTED) {