Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b3093ff2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Read *.rc files from flattened APEX"

parents 5b63cff4 d2217b51
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -1076,10 +1076,7 @@ static Result<void> do_mark_post_data(const BuiltinArguments& args) {

static Result<void> do_parse_apex_configs(const BuiltinArguments& args) {
    glob_t glob_result;
    // @ is added to filter out the later paths, which are bind mounts of the places
    // where the APEXes are really mounted at. Otherwise, we will parse the
    // same file twice.
    static constexpr char glob_pattern[] = "/apex/*@*/etc/*.rc";
    static constexpr char glob_pattern[] = "/apex/*/etc/*.rc";
    const int ret = glob(glob_pattern, GLOB_MARK, nullptr, &glob_result);
    if (ret != 0 && ret != GLOB_NOMATCH) {
        globfree(&glob_result);
@@ -1088,7 +1085,15 @@ static Result<void> do_parse_apex_configs(const BuiltinArguments& args) {
    std::vector<std::string> configs;
    Parser parser = CreateServiceOnlyParser(ServiceList::GetInstance());
    for (size_t i = 0; i < glob_result.gl_pathc; i++) {
        configs.emplace_back(glob_result.gl_pathv[i]);
        std::string path = glob_result.gl_pathv[i];
        // Filter-out /apex/<name>@<ver> paths. The paths are bind-mounted to
        // /apex/<name> paths, so unless we filter them out, we will parse the
        // same file twice.
        std::vector<std::string> paths = android::base::Split(path, "/");
        if (paths.size() >= 2 && paths[1].find('@') != std::string::npos) {
            continue;
        }
        configs.push_back(path);
    }
    globfree(&glob_result);