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

Commit 51b7cb00 authored by Tom Cherry's avatar Tom Cherry Committed by Gerrit Code Review
Browse files

Merge changes Ic446c026,I86568a5b

* changes:
  init: create init_tests.cpp
  init: clean up the SectionParser interface and Parser class
parents 39aee463 ad54d094
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -143,6 +143,7 @@ LOCAL_MODULE := init_tests
LOCAL_SRC_FILES := \
    devices_test.cpp \
    init_parser_test.cpp \
    init_test.cpp \
    property_service_test.cpp \
    util_test.cpp \

@@ -154,7 +155,7 @@ LOCAL_SHARED_LIBRARIES += \
LOCAL_STATIC_LIBRARIES := libinit
LOCAL_SANITIZE := integer
LOCAL_CLANG := true
LOCAL_CPPFLAGS := -Wall -Wextra -Werror
LOCAL_CPPFLAGS := -Wall -Wextra -Werror -std=gnu++1z
include $(BUILD_NATIVE_TEST)


+4 −5
Original line number Diff line number Diff line
@@ -363,7 +363,7 @@ void ActionManager::DumpState() const {
    }
}

bool ActionParser::ParseSection(const std::vector<std::string>& args, const std::string& filename,
bool ActionParser::ParseSection(std::vector<std::string>&& args, const std::string& filename,
                                int line, std::string* err) {
    std::vector<std::string> triggers(args.begin() + 1, args.end());
    if (triggers.size() < 1) {
@@ -380,13 +380,12 @@ bool ActionParser::ParseSection(const std::vector<std::string>& args, const std:
    return true;
}

bool ActionParser::ParseLineSection(const std::vector<std::string>& args, int line,
                                    std::string* err) {
    return action_ ? action_->AddCommand(args, line, err) : false;
bool ActionParser::ParseLineSection(std::vector<std::string>&& args, int line, std::string* err) {
    return action_ ? action_->AddCommand(std::move(args), line, err) : false;
}

void ActionParser::EndSection() {
    if (action_ && action_->NumCommands() > 0) {
        ActionManager::GetInstance().AddAction(std::move(action_));
        action_manager_->AddAction(std::move(action_));
    }
}
+10 −10
Original line number Diff line number Diff line
@@ -91,6 +91,9 @@ class ActionManager {
  public:
    static ActionManager& GetInstance();

    // Exposed for testing
    ActionManager();

    void AddAction(std::unique_ptr<Action> action);
    void QueueEventTrigger(const std::string& trigger);
    void QueuePropertyTrigger(const std::string& name, const std::string& value);
@@ -101,8 +104,6 @@ public:
    void DumpState() const;

  private:
    ActionManager();

    ActionManager(ActionManager const&) = delete;
    void operator=(ActionManager const&) = delete;

@@ -114,16 +115,15 @@ private:

class ActionParser : public SectionParser {
  public:
    ActionParser() : action_(nullptr) {
    }
    bool ParseSection(const std::vector<std::string>& args, const std::string& filename, int line,
    ActionParser(ActionManager* action_manager)
        : action_manager_(action_manager), action_(nullptr) {}
    bool ParseSection(std::vector<std::string>&& args, const std::string& filename, int line,
                      std::string* err) override;
    bool ParseLineSection(const std::vector<std::string>& args, int line, std::string* err) override;
    bool ParseLineSection(std::vector<std::string>&& args, int line, std::string* err) override;
    void EndSection() override;
    void EndFile(const std::string&) override {
    }

  private:
    ActionManager* action_manager_;
    std::unique_ptr<Action> action_;
};

+2 −2
Original line number Diff line number Diff line
@@ -390,7 +390,7 @@ static void import_late(const std::vector<std::string>& args, size_t start_index

    // Turning this on and letting the INFO logging be discarded adds 0.2s to
    // Nexus 9 boot time, so it's disabled by default.
    if (false) parser.DumpState();
    if (false) DumpState();
}

/* mount_fstab
@@ -838,7 +838,7 @@ static int do_init_user0(const std::vector<std::string>& args) {
    return e4crypt_do_init_user0();
}

BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const {
const BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const {
    constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max();
    // clang-format off
    static const Map builtin_functions = {
+7 −6
Original line number Diff line number Diff line
@@ -17,19 +17,20 @@
#ifndef _INIT_BUILTINS_H
#define _INIT_BUILTINS_H

#include <functional>
#include <map>
#include <string>
#include <vector>

#include "keyword_map.h"

using BuiltinFunction = int (*) (const std::vector<std::string>& args);
using BuiltinFunction = std::function<int(const std::vector<std::string>&)>;
class BuiltinFunctionMap : public KeywordMap<BuiltinFunction> {
  public:
    BuiltinFunctionMap() {
    }
    BuiltinFunctionMap() {}

  private:
    Map& map() const override;
    const Map& map() const override;
};

#endif
Loading