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

Commit 7046bcb4 authored by Elliott Hughes's avatar Elliott Hughes Committed by Gerrit Code Review
Browse files

Merge "libbase: add ConsumePrefix/ConsumeSuffix."

parents 19322ddd b4dc7be6
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1048,9 +1048,9 @@ HostRequestResult handle_host_request(std::string_view service, TransportType ty
        // New transport selection protocol:
        // This is essentially identical to the previous version, except it returns the selected
        // transport id to the caller as well.
        if (ConsumePrefix(&service, "tport:")) {
        if (android::base::ConsumePrefix(&service, "tport:")) {
            legacy = false;
            if (ConsumePrefix(&service, "serial:")) {
            if (android::base::ConsumePrefix(&service, "serial:")) {
                serial_storage = service;
                serial = serial_storage.c_str();
            } else if (service == "usb") {
@@ -1064,7 +1064,7 @@ HostRequestResult handle_host_request(std::string_view service, TransportType ty
            // Selection by id is unimplemented, since you obviously already know the transport id
            // you're connecting to.
        } else {
            if (ConsumePrefix(&service, "transport-id:")) {
            if (android::base::ConsumePrefix(&service, "transport-id:")) {
                if (!ParseUint(&transport_id, service)) {
                    SendFail(reply_fd, "invalid transport id");
                    return HostRequestResult::Handled;
@@ -1075,7 +1075,7 @@ HostRequestResult handle_host_request(std::string_view service, TransportType ty
                type = kTransportLocal;
            } else if (service == "transport-any") {
                type = kTransportAny;
            } else if (ConsumePrefix(&service, "transport:")) {
            } else if (android::base::ConsumePrefix(&service, "transport:")) {
                serial_storage = service;
                serial = serial_storage.c_str();
            }
@@ -1216,7 +1216,7 @@ HostRequestResult handle_host_request(std::string_view service, TransportType ty
    }

    // Indicates a new emulator instance has started.
    if (ConsumePrefix(&service, "emulator:")) {
    if (android::base::ConsumePrefix(&service, "emulator:")) {
        unsigned int port;
        if (!ParseUint(&port, service)) {
          LOG(ERROR) << "received invalid port for emulator: " << service;
+0 −8
Original line number Diff line number Diff line
@@ -141,11 +141,3 @@ inline bool ParseUint(T* result, std::string_view str, std::string_view* remaini

    return true;
}

inline bool ConsumePrefix(std::string_view* str, std::string_view prefix) {
  if (str->starts_with(prefix)) {
    str->remove_prefix(prefix.size());
    return true;
  }
  return false;
}
+3 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#include <sys/wait.h>

#include <android-base/cmsg.h>
#include <android-base/strings.h>
#include <cmd.h>

#include "adb.h"
@@ -87,9 +88,9 @@ int main(int argc, char* const argv[]) {

        std::string_view name = data;
        auto protocol = SubprocessProtocol::kShell;
        if (ConsumePrefix(&name, "abb:")) {
        if (android::base::ConsumePrefix(&name, "abb:")) {
            protocol = SubprocessProtocol::kShell;
        } else if (ConsumePrefix(&name, "abb_exec:")) {
        } else if (android::base::ConsumePrefix(&name, "abb_exec:")) {
            protocol = SubprocessProtocol::kNone;
        } else {
            LOG(FATAL) << "Unknown command prefix for abb: " << data;
+11 −11
Original line number Diff line number Diff line
@@ -223,13 +223,13 @@ 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 (ConsumePrefix(&name, "sink:")) {
    } else if (android::base::ConsumePrefix(&name, "sink:")) {
        uint64_t byte_count = 0;
        if (!ParseUint(&byte_count, name)) {
            return nullptr;
        }
        return new SinkSocket(byte_count);
    } else if (ConsumePrefix(&name, "source:")) {
    } else if (android::base::ConsumePrefix(&name, "source:")) {
        uint64_t byte_count = 0;
        if (!ParseUint(&byte_count, name)) {
            return nullptr;
@@ -250,11 +250,11 @@ 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 (ConsumePrefix(&name, "remount:")) {
    } else if (android::base::ConsumePrefix(&name, "remount:")) {
        std::string arg(name);
        return create_service_thread("remount",
                                     std::bind(remount_service, std::placeholders::_1, arg));
    } else if (ConsumePrefix(&name, "reboot:")) {
    } else if (android::base::ConsumePrefix(&name, "reboot:")) {
        std::string arg(name);
        return create_service_thread("reboot",
                                     std::bind(reboot_service, std::placeholders::_1, arg));
@@ -262,7 +262,7 @@ unique_fd daemon_service_to_fd(std::string_view name, atransport* transport) {
        return create_service_thread("root", restart_root_service);
    } else if (name.starts_with("unroot:")) {
        return create_service_thread("unroot", restart_unroot_service);
    } else if (ConsumePrefix(&name, "backup:")) {
    } else if (android::base::ConsumePrefix(&name, "backup:")) {
        std::string cmd = "/system/bin/bu backup ";
        cmd += name;
        return StartSubprocess(cmd, nullptr, SubprocessType::kRaw, SubprocessProtocol::kNone);
@@ -275,7 +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 (ConsumePrefix(&name, "tcpip:")) {
    } else if (android::base::ConsumePrefix(&name, "tcpip:")) {
        std::string str(name);

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

    if (ConsumePrefix(&name, "dev:")) {
    if (android::base::ConsumePrefix(&name, "dev:")) {
        return unique_fd{unix_open(name, O_RDWR | O_CLOEXEC)};
    } else if (ConsumePrefix(&name, "jdwp:")) {
    } else if (android::base::ConsumePrefix(&name, "jdwp:")) {
        pid_t pid;
        if (!ParseUint(&pid, name)) {
            return unique_fd{};
        }
        return create_jdwp_connection_fd(pid);
    } else if (ConsumePrefix(&name, "shell")) {
    } else if (android::base::ConsumePrefix(&name, "shell")) {
        return ShellService(name, transport);
    } else if (ConsumePrefix(&name, "exec:")) {
    } else if (android::base::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 (ConsumePrefix(&name, "reverse:")) {
    } else if (android::base::ConsumePrefix(&name, "reverse:")) {
        return reverse_service(name, transport);
    } else if (name == "reconnect") {
        return create_service_thread(
+5 −5
Original line number Diff line number Diff line
@@ -202,7 +202,7 @@ asocket* host_service_to_socket(std::string_view name, std::string_view serial,
        return create_device_tracker(false);
    } else if (name == "track-devices-l") {
        return create_device_tracker(true);
    } else if (ConsumePrefix(&name, "wait-for-")) {
    } else if (android::base::ConsumePrefix(&name, "wait-for-")) {
        std::shared_ptr<state_info> sinfo = std::make_shared<state_info>();
        if (sinfo == nullptr) {
            fprintf(stderr, "couldn't allocate state_info: %s", strerror(errno));
@@ -212,11 +212,11 @@ asocket* host_service_to_socket(std::string_view name, std::string_view serial,
        sinfo->serial = serial;
        sinfo->transport_id = transport_id;

        if (ConsumePrefix(&name, "local")) {
        if (android::base::ConsumePrefix(&name, "local")) {
            sinfo->transport_type = kTransportLocal;
        } else if (ConsumePrefix(&name, "usb")) {
        } else if (android::base::ConsumePrefix(&name, "usb")) {
            sinfo->transport_type = kTransportUsb;
        } else if (ConsumePrefix(&name, "any")) {
        } else if (android::base::ConsumePrefix(&name, "any")) {
            sinfo->transport_type = kTransportAny;
        } else {
            return nullptr;
@@ -243,7 +243,7 @@ asocket* host_service_to_socket(std::string_view name, std::string_view serial,
        unique_fd fd = create_service_thread(
                "wait", [sinfo](unique_fd fd) { wait_for_state(std::move(fd), sinfo.get()); });
        return create_local_socket(std::move(fd));
    } else if (ConsumePrefix(&name, "connect:")) {
    } else if (android::base::ConsumePrefix(&name, "connect:")) {
        std::string host(name);
        unique_fd fd = create_service_thread(
                "connect", std::bind(connect_service, std::placeholders::_1, host));
Loading