summaryrefslogtreecommitdiff
path: root/init/init_parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'init/init_parser.cpp')
-rw-r--r--init/init_parser.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/init/init_parser.cpp b/init/init_parser.cpp
index 9ec26afb5..d017390ce 100644
--- a/init/init_parser.cpp
+++ b/init/init_parser.cpp
@@ -122,14 +122,20 @@ bool Parser::ParseConfigDir(const std::string& path) {
return false;
}
dirent* current_file;
+ std::vector<std::string> files;
while ((current_file = readdir(config_dir.get()))) {
- std::string current_path =
- android::base::StringPrintf("%s/%s", path.c_str(), current_file->d_name);
// Ignore directories and only process regular files.
if (current_file->d_type == DT_REG) {
- if (!ParseConfigFile(current_path)) {
- LOG(ERROR) << "could not import file '" << current_path << "'";
- }
+ std::string current_path =
+ android::base::StringPrintf("%s/%s", path.c_str(), current_file->d_name);
+ files.emplace_back(current_path);
+ }
+ }
+ // Sort first so we load files in a consistent order (bug 31996208)
+ std::sort(files.begin(), files.end());
+ for (const auto& file : files) {
+ if (!ParseConfigFile(file)) {
+ LOG(ERROR) << "could not import file '" << file << "'";
}
}
return true;