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

Commit 2df76b7e authored by Josh Gao's avatar Josh Gao
Browse files

adbd: switch daemon/services to ConsumePrefix.

Test: mma
Change-Id: Ib4bb7d3352219a9883a5089e08225fb17145c2ee
parent 0ecc4020
Loading
Loading
Loading
Loading
+20 −26
Original line number Diff line number Diff line
@@ -223,17 +223,15 @@ asocket* daemon_service_to_socket(std::string_view name) {
        return create_jdwp_service_socket();
    } else if (name == "track-jdwp") {
        return create_jdwp_tracker_service_socket();
    } else if (name.starts_with("sink:")) {
        name.remove_prefix(strlen("sink:"));
    } else if (ConsumePrefix(&name, "sink:")) {
        uint64_t byte_count = 0;
        if (!android::base::ParseUint(name.data(), &byte_count)) {
        if (!ParseUint(&byte_count, name)) {
            return nullptr;
        }
        return new SinkSocket(byte_count);
    } else if (name.starts_with("source:")) {
        name.remove_prefix(strlen("source:"));
    } else if (ConsumePrefix(&name, "source:")) {
        uint64_t byte_count = 0;
        if (!android::base::ParseUint(name.data(), &byte_count)) {
        if (!ParseUint(&byte_count, name)) {
            return nullptr;
        }
        return new SourceSocket(byte_count);
@@ -252,20 +250,19 @@ unique_fd daemon_service_to_fd(std::string_view name, atransport* transport) {
#if defined(__ANDROID__)
    if (name.starts_with("framebuffer:")) {
        return create_service_thread("fb", framebuffer_service);
    } else if (name.starts_with("remount:")) {
        std::string arg(name.begin() + strlen("remount:"), name.end());
    } else if (ConsumePrefix(&name, "remount:")) {
        std::string arg(name);
        return create_service_thread("remount",
                                     std::bind(remount_service, std::placeholders::_1, arg));
    } else if (name.starts_with("reboot:")) {
        std::string arg(name.begin() + strlen("reboot:"), name.end());
    } else if (ConsumePrefix(&name, "reboot:")) {
        std::string arg(name);
        return create_service_thread("reboot",
                                     std::bind(reboot_service, std::placeholders::_1, arg));
    } else if (name.starts_with("root:")) {
        return create_service_thread("root", restart_root_service);
    } else if (name.starts_with("unroot:")) {
        return create_service_thread("unroot", restart_unroot_service);
    } else if (name.starts_with("backup:")) {
        name.remove_prefix(strlen("backup:"));
    } else if (ConsumePrefix(&name, "backup:")) {
        std::string cmd = "/system/bin/bu backup ";
        cmd += name;
        return StartSubprocess(cmd, nullptr, SubprocessType::kRaw, SubprocessProtocol::kNone);
@@ -278,8 +275,7 @@ unique_fd daemon_service_to_fd(std::string_view name, atransport* transport) {
    } else if (name.starts_with("enable-verity:")) {
        return create_service_thread("verity-off", std::bind(set_verity_enabled_state_service,
                                                             std::placeholders::_1, true));
    } else if (name.starts_with("tcpip:")) {
        name.remove_prefix(strlen("tcpip:"));
    } else if (ConsumePrefix(&name, "tcpip:")) {
        std::string str(name);

        int port;
@@ -293,24 +289,22 @@ unique_fd daemon_service_to_fd(std::string_view name, atransport* transport) {
    }
#endif

    if (name.starts_with("dev:")) {
        name.remove_prefix(strlen("dev:"));
    if (ConsumePrefix(&name, "dev:")) {
        return unique_fd{unix_open(name, O_RDWR | O_CLOEXEC)};
    } else if (name.starts_with("jdwp:")) {
        name.remove_prefix(strlen("jdwp:"));
        std::string str(name);
        return create_jdwp_connection_fd(atoi(str.c_str()));
    } else if (name.starts_with("shell")) {
        name.remove_prefix(strlen("shell"));
    } else if (ConsumePrefix(&name, "jdwp:")) {
        pid_t pid;
        if (!ParseUint(&pid, name)) {
            return unique_fd{};
        }
        return create_jdwp_connection_fd(pid);
    } else if (ConsumePrefix(&name, "shell")) {
        return ShellService(name, transport);
    } else if (name.starts_with("exec:")) {
        name.remove_prefix(strlen("exec:"));
    } else if (ConsumePrefix(&name, "exec:")) {
        return StartSubprocess(std::string(name), nullptr, SubprocessType::kRaw,
                               SubprocessProtocol::kNone);
    } else if (name.starts_with("sync:")) {
        return create_service_thread("sync", file_sync_service);
    } else if (name.starts_with("reverse:")) {
        name.remove_prefix(strlen("reverse:"));
    } else if (ConsumePrefix(&name, "reverse:")) {
        return reverse_service(name, transport);
    } else if (name == "reconnect") {
        return create_service_thread(