Loading adb/adb_utils.cpp +12 −0 Original line number Original line Diff line number Diff line Loading @@ -313,3 +313,15 @@ std::string adb_get_android_dir_path() { void AdbCloser::Close(int fd) { void AdbCloser::Close(int fd) { adb_close(fd); adb_close(fd); } } int usage(const char* fmt, ...) { fprintf(stderr, "adb: "); va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); fprintf(stderr, "\n"); return 1; } adb/adb_utils.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,8 @@ #include <android-base/macros.h> #include <android-base/macros.h> int usage(const char*, ...); void close_stdin(); void close_stdin(); bool getcwd(std::string* cwd); bool getcwd(std::string* cwd); Loading adb/bugreport.cpp +1 −4 Original line number Original line Diff line number Diff line Loading @@ -182,11 +182,8 @@ class BugreportStandardStreamsCallback : public StandardStreamsCallbackInterface DISALLOW_COPY_AND_ASSIGN(BugreportStandardStreamsCallback); DISALLOW_COPY_AND_ASSIGN(BugreportStandardStreamsCallback); }; }; // Implemented in commandline.cpp int usage(); int Bugreport::DoIt(TransportType transport_type, const char* serial, int argc, const char** argv) { int Bugreport::DoIt(TransportType transport_type, const char* serial, int argc, const char** argv) { if (argc > 2) return usage(); if (argc > 2) return usage("usage: adb bugreport [PATH]"); // Gets bugreportz version. // Gets bugreportz version. std::string bugz_stdout, bugz_stderr; std::string bugz_stdout, bugz_stderr; Loading adb/commandline.cpp +32 −36 Original line number Original line Diff line number Diff line Loading @@ -231,11 +231,6 @@ static void help() { // clang-format on // clang-format on } } int usage() { help(); return 1; } #if defined(_WIN32) #if defined(_WIN32) // Implemented in sysdeps_win32.cpp. // Implemented in sysdeps_win32.cpp. Loading Loading @@ -1235,7 +1230,7 @@ static int backup(int argc, const char** argv) { } } static int restore(int argc, const char** argv) { static int restore(int argc, const char** argv) { if (argc != 2) return usage(); if (argc != 2) return usage("restore requires an argument"); const char* filename = argv[1]; const char* filename = argv[1]; int tarFd = adb_open(filename, O_RDONLY); int tarFd = adb_open(filename, O_RDONLY); Loading Loading @@ -1443,19 +1438,19 @@ int adb_commandline(int argc, const char** argv) { /* this is a special flag used only when the ADB client launches the ADB Server */ /* this is a special flag used only when the ADB client launches the ADB Server */ is_daemon = 1; is_daemon = 1; } else if (!strcmp(argv[0], "--reply-fd")) { } else if (!strcmp(argv[0], "--reply-fd")) { if (argc < 2) return usage(); if (argc < 2) return usage("--reply-fd requires an argument"); const char* reply_fd_str = argv[1]; const char* reply_fd_str = argv[1]; argc--; argc--; argv++; argv++; ack_reply_fd = strtol(reply_fd_str, nullptr, 10); ack_reply_fd = strtol(reply_fd_str, nullptr, 10); if (!_is_valid_ack_reply_fd(ack_reply_fd)) { if (!_is_valid_ack_reply_fd(ack_reply_fd)) { fprintf(stderr, "adb: invalid reply fd \"%s\"\n", reply_fd_str); fprintf(stderr, "adb: invalid reply fd \"%s\"\n", reply_fd_str); return usage(); return 1; } } } else if (!strncmp(argv[0], "-p", 2)) { } else if (!strncmp(argv[0], "-p", 2)) { const char* product = nullptr; const char* product = nullptr; if (argv[0][2] == '\0') { if (argv[0][2] == '\0') { if (argc < 2) return usage(); if (argc < 2) return usage("-p requires an argument"); product = argv[1]; product = argv[1]; argc--; argc--; argv++; argv++; Loading @@ -1465,13 +1460,13 @@ int adb_commandline(int argc, const char** argv) { gProductOutPath = find_product_out_path(product); gProductOutPath = find_product_out_path(product); if (gProductOutPath.empty()) { if (gProductOutPath.empty()) { fprintf(stderr, "adb: could not resolve \"-p %s\"\n", product); fprintf(stderr, "adb: could not resolve \"-p %s\"\n", product); return usage(); return 1; } } } else if (argv[0][0]=='-' && argv[0][1]=='s') { } else if (argv[0][0]=='-' && argv[0][1]=='s') { if (isdigit(argv[0][2])) { if (isdigit(argv[0][2])) { serial = argv[0] + 2; serial = argv[0] + 2; } else { } else { if (argc < 2 || argv[0][2] != '\0') return usage(); if (argc < 2 || argv[0][2] != '\0') return usage("-s requires an argument"); serial = argv[1]; serial = argv[1]; argc--; argc--; argv++; argv++; Loading @@ -1484,7 +1479,7 @@ int adb_commandline(int argc, const char** argv) { gListenAll = 1; gListenAll = 1; } else if (!strncmp(argv[0], "-H", 2)) { } else if (!strncmp(argv[0], "-H", 2)) { if (argv[0][2] == '\0') { if (argv[0][2] == '\0') { if (argc < 2) return usage(); if (argc < 2) return usage("-H requires an argument"); server_host_str = argv[1]; server_host_str = argv[1]; argc--; argc--; argv++; argv++; Loading @@ -1493,7 +1488,7 @@ int adb_commandline(int argc, const char** argv) { } } } else if (!strncmp(argv[0], "-P", 2)) { } else if (!strncmp(argv[0], "-P", 2)) { if (argv[0][2] == '\0') { if (argv[0][2] == '\0') { if (argc < 2) return usage(); if (argc < 2) return usage("-P requires an argument"); server_port_str = argv[1]; server_port_str = argv[1]; argc--; argc--; argv++; argv++; Loading @@ -1501,7 +1496,7 @@ int adb_commandline(int argc, const char** argv) { server_port_str = argv[0] + 2; server_port_str = argv[0] + 2; } } } else if (!strcmp(argv[0], "-L")) { } else if (!strcmp(argv[0], "-L")) { if (argc < 2) return usage(); if (argc < 2) return usage("-L requires an argument"); server_socket_str = argv[1]; server_socket_str = argv[1]; argc--; argc--; argv++; argv++; Loading Loading @@ -1566,7 +1561,7 @@ int adb_commandline(int argc, const char** argv) { if (no_daemon || is_daemon) { if (no_daemon || is_daemon) { if (is_daemon && (ack_reply_fd == -1)) { if (is_daemon && (ack_reply_fd == -1)) { fprintf(stderr, "reply fd for adb server to client communication not specified.\n"); fprintf(stderr, "reply fd for adb server to client communication not specified.\n"); return usage(); return 1; } } r = adb_server_main(is_daemon, server_socket_str, ack_reply_fd); r = adb_server_main(is_daemon, server_socket_str, ack_reply_fd); } else { } else { Loading @@ -1579,7 +1574,8 @@ int adb_commandline(int argc, const char** argv) { } } if (argc == 0) { if (argc == 0) { return usage(); help(); return 1; } } /* handle wait-for-* prefix */ /* handle wait-for-* prefix */ Loading Loading @@ -1696,7 +1692,7 @@ int adb_commandline(int argc, const char** argv) { } } } } else if (!strcmp(argv[0], "sideload")) { else if (!strcmp(argv[0], "sideload")) { if (argc != 2) return usage(); if (argc != 2) return usage("sideload requires an argument"); if (adb_sideload_host(argv[1])) { if (adb_sideload_host(argv[1])) { return 1; return 1; } else { } else { Loading Loading @@ -1730,7 +1726,7 @@ int adb_commandline(int argc, const char** argv) { bool reverse = !strcmp(argv[0], "reverse"); bool reverse = !strcmp(argv[0], "reverse"); ++argv; ++argv; --argc; --argc; if (argc < 1) return usage(); if (argc < 1) return usage("%s requires an argument", argv[0]); // Determine the <host-prefix> for this command. // Determine the <host-prefix> for this command. std::string host_prefix; std::string host_prefix; Loading @@ -1750,24 +1746,24 @@ int adb_commandline(int argc, const char** argv) { std::string cmd, error; std::string cmd, error; if (strcmp(argv[0], "--list") == 0) { if (strcmp(argv[0], "--list") == 0) { if (argc != 1) return usage(); if (argc != 1) return usage("--list doesn't take any arguments"); return adb_query_command(host_prefix + ":list-forward"); return adb_query_command(host_prefix + ":list-forward"); } else if (strcmp(argv[0], "--remove-all") == 0) { } else if (strcmp(argv[0], "--remove-all") == 0) { if (argc != 1) return usage(); if (argc != 1) return usage("--remove-all doesn't take any arguments"); cmd = host_prefix + ":killforward-all"; cmd = host_prefix + ":killforward-all"; } else if (strcmp(argv[0], "--remove") == 0) { } else if (strcmp(argv[0], "--remove") == 0) { // forward --remove <local> // forward --remove <local> if (argc != 2) return usage(); if (argc != 2) return usage("--remove requires an argument"); cmd = host_prefix + ":killforward:" + argv[1]; cmd = host_prefix + ":killforward:" + argv[1]; } else if (strcmp(argv[0], "--no-rebind") == 0) { } else if (strcmp(argv[0], "--no-rebind") == 0) { // forward --no-rebind <local> <remote> // forward --no-rebind <local> <remote> if (argc != 3) return usage(); if (argc != 3) return usage("--no-rebind takes two arguments"); if (forward_targets_are_valid(argv[1], argv[2], &error)) { if (forward_targets_are_valid(argv[1], argv[2], &error)) { cmd = host_prefix + ":forward:norebind:" + argv[1] + ";" + argv[2]; cmd = host_prefix + ":forward:norebind:" + argv[1] + ";" + argv[2]; } } } else { } else { // forward <local> <remote> // forward <local> <remote> if (argc != 2) return usage(); if (argc != 2) return usage("forward takes two arguments"); if (forward_targets_are_valid(argv[0], argv[1], &error)) { if (forward_targets_are_valid(argv[0], argv[1], &error)) { cmd = host_prefix + ":forward:" + argv[0] + ";" + argv[1]; cmd = host_prefix + ":forward:" + argv[0] + ";" + argv[1]; } } Loading Loading @@ -1796,7 +1792,7 @@ int adb_commandline(int argc, const char** argv) { } } /* do_sync_*() commands */ /* do_sync_*() commands */ else if (!strcmp(argv[0], "ls")) { else if (!strcmp(argv[0], "ls")) { if (argc != 2) return usage(); if (argc != 2) return usage("ls requires an argument"); return do_sync_ls(argv[1]) ? 0 : 1; return do_sync_ls(argv[1]) ? 0 : 1; } } else if (!strcmp(argv[0], "push")) { else if (!strcmp(argv[0], "push")) { Loading @@ -1805,7 +1801,7 @@ int adb_commandline(int argc, const char** argv) { const char* dst = nullptr; const char* dst = nullptr; parse_push_pull_args(&argv[1], argc - 1, &srcs, &dst, ©_attrs); parse_push_pull_args(&argv[1], argc - 1, &srcs, &dst, ©_attrs); if (srcs.empty() || !dst) return usage(); if (srcs.empty() || !dst) return usage("push requires an argument"); return do_sync_push(srcs, dst) ? 0 : 1; return do_sync_push(srcs, dst) ? 0 : 1; } } else if (!strcmp(argv[0], "pull")) { else if (!strcmp(argv[0], "pull")) { Loading @@ -1814,22 +1810,22 @@ int adb_commandline(int argc, const char** argv) { const char* dst = "."; const char* dst = "."; parse_push_pull_args(&argv[1], argc - 1, &srcs, &dst, ©_attrs); parse_push_pull_args(&argv[1], argc - 1, &srcs, &dst, ©_attrs); if (srcs.empty()) return usage(); if (srcs.empty()) return usage("pull requires an argument"); return do_sync_pull(srcs, dst, copy_attrs) ? 0 : 1; return do_sync_pull(srcs, dst, copy_attrs) ? 0 : 1; } } else if (!strcmp(argv[0], "install")) { else if (!strcmp(argv[0], "install")) { if (argc < 2) return usage(); if (argc < 2) return usage("install requires an argument"); if (_use_legacy_install()) { if (_use_legacy_install()) { return install_app_legacy(transport_type, serial, argc, argv); return install_app_legacy(transport_type, serial, argc, argv); } } return install_app(transport_type, serial, argc, argv); return install_app(transport_type, serial, argc, argv); } } else if (!strcmp(argv[0], "install-multiple")) { else if (!strcmp(argv[0], "install-multiple")) { if (argc < 2) return usage(); if (argc < 2) return usage("install-multiple requires an argument"); return install_multiple_app(transport_type, serial, argc, argv); return install_multiple_app(transport_type, serial, argc, argv); } } else if (!strcmp(argv[0], "uninstall")) { else if (!strcmp(argv[0], "uninstall")) { if (argc < 2) return usage(); if (argc < 2) return usage("uninstall requires an argument"); if (_use_legacy_install()) { if (_use_legacy_install()) { return uninstall_app_legacy(transport_type, serial, argc, argv); return uninstall_app_legacy(transport_type, serial, argc, argv); } } Loading @@ -1852,12 +1848,12 @@ int adb_commandline(int argc, const char** argv) { // A local path or "android"/"data" arg was specified. // A local path or "android"/"data" arg was specified. src = argv[1]; src = argv[1]; } else { } else { return usage(); return usage("usage: adb sync [-l] [PARTITION]"); } } if (src != "" && if (src != "" && src != "system" && src != "data" && src != "vendor" && src != "oem") { src != "system" && src != "data" && src != "vendor" && src != "oem") { return usage(); return usage("don't know how to sync %s partition", src.c_str()); } } std::string system_src_path = product_file("system"); std::string system_src_path = product_file("system"); Loading Loading @@ -1909,7 +1905,7 @@ int adb_commandline(int argc, const char** argv) { return restore(argc, argv); return restore(argc, argv); } } else if (!strcmp(argv[0], "keygen")) { else if (!strcmp(argv[0], "keygen")) { if (argc < 2) return usage(); if (argc != 2) return usage("keygen requires an argument"); // Always print key generation information for keygen command. // Always print key generation information for keygen command. adb_trace_enable(AUTH); adb_trace_enable(AUTH); return adb_auth_keygen(argv[1]); return adb_auth_keygen(argv[1]); Loading @@ -1926,11 +1922,11 @@ int adb_commandline(int argc, const char** argv) { /* "adb /?" is a common idiom under Windows */ /* "adb /?" is a common idiom under Windows */ else if (!strcmp(argv[0], "help") || !strcmp(argv[0], "/?")) { else if (!strcmp(argv[0], "--help") || !strcmp(argv[0], "help") || !strcmp(argv[0], "/?")) { help(); help(); return 0; return 0; } } else if (!strcmp(argv[0], "version")) { else if (!strcmp(argv[0], "--version") || !strcmp(argv[0], "version")) { fprintf(stdout, "%s", adb_version().c_str()); fprintf(stdout, "%s", adb_version().c_str()); return 0; return 0; } } Loading Loading @@ -1961,12 +1957,12 @@ int adb_commandline(int argc, const char** argv) { std::string err; std::string err; return adb_query_command("host:reconnect-offline"); return adb_query_command("host:reconnect-offline"); } else { } else { return usage(); return usage("usage: adb reconnect [device|offline]"); } } } } } } usage(); usage("unknown command %s", argv[0]); return 1; return 1; } } Loading Loading
adb/adb_utils.cpp +12 −0 Original line number Original line Diff line number Diff line Loading @@ -313,3 +313,15 @@ std::string adb_get_android_dir_path() { void AdbCloser::Close(int fd) { void AdbCloser::Close(int fd) { adb_close(fd); adb_close(fd); } } int usage(const char* fmt, ...) { fprintf(stderr, "adb: "); va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); fprintf(stderr, "\n"); return 1; }
adb/adb_utils.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,8 @@ #include <android-base/macros.h> #include <android-base/macros.h> int usage(const char*, ...); void close_stdin(); void close_stdin(); bool getcwd(std::string* cwd); bool getcwd(std::string* cwd); Loading
adb/bugreport.cpp +1 −4 Original line number Original line Diff line number Diff line Loading @@ -182,11 +182,8 @@ class BugreportStandardStreamsCallback : public StandardStreamsCallbackInterface DISALLOW_COPY_AND_ASSIGN(BugreportStandardStreamsCallback); DISALLOW_COPY_AND_ASSIGN(BugreportStandardStreamsCallback); }; }; // Implemented in commandline.cpp int usage(); int Bugreport::DoIt(TransportType transport_type, const char* serial, int argc, const char** argv) { int Bugreport::DoIt(TransportType transport_type, const char* serial, int argc, const char** argv) { if (argc > 2) return usage(); if (argc > 2) return usage("usage: adb bugreport [PATH]"); // Gets bugreportz version. // Gets bugreportz version. std::string bugz_stdout, bugz_stderr; std::string bugz_stdout, bugz_stderr; Loading
adb/commandline.cpp +32 −36 Original line number Original line Diff line number Diff line Loading @@ -231,11 +231,6 @@ static void help() { // clang-format on // clang-format on } } int usage() { help(); return 1; } #if defined(_WIN32) #if defined(_WIN32) // Implemented in sysdeps_win32.cpp. // Implemented in sysdeps_win32.cpp. Loading Loading @@ -1235,7 +1230,7 @@ static int backup(int argc, const char** argv) { } } static int restore(int argc, const char** argv) { static int restore(int argc, const char** argv) { if (argc != 2) return usage(); if (argc != 2) return usage("restore requires an argument"); const char* filename = argv[1]; const char* filename = argv[1]; int tarFd = adb_open(filename, O_RDONLY); int tarFd = adb_open(filename, O_RDONLY); Loading Loading @@ -1443,19 +1438,19 @@ int adb_commandline(int argc, const char** argv) { /* this is a special flag used only when the ADB client launches the ADB Server */ /* this is a special flag used only when the ADB client launches the ADB Server */ is_daemon = 1; is_daemon = 1; } else if (!strcmp(argv[0], "--reply-fd")) { } else if (!strcmp(argv[0], "--reply-fd")) { if (argc < 2) return usage(); if (argc < 2) return usage("--reply-fd requires an argument"); const char* reply_fd_str = argv[1]; const char* reply_fd_str = argv[1]; argc--; argc--; argv++; argv++; ack_reply_fd = strtol(reply_fd_str, nullptr, 10); ack_reply_fd = strtol(reply_fd_str, nullptr, 10); if (!_is_valid_ack_reply_fd(ack_reply_fd)) { if (!_is_valid_ack_reply_fd(ack_reply_fd)) { fprintf(stderr, "adb: invalid reply fd \"%s\"\n", reply_fd_str); fprintf(stderr, "adb: invalid reply fd \"%s\"\n", reply_fd_str); return usage(); return 1; } } } else if (!strncmp(argv[0], "-p", 2)) { } else if (!strncmp(argv[0], "-p", 2)) { const char* product = nullptr; const char* product = nullptr; if (argv[0][2] == '\0') { if (argv[0][2] == '\0') { if (argc < 2) return usage(); if (argc < 2) return usage("-p requires an argument"); product = argv[1]; product = argv[1]; argc--; argc--; argv++; argv++; Loading @@ -1465,13 +1460,13 @@ int adb_commandline(int argc, const char** argv) { gProductOutPath = find_product_out_path(product); gProductOutPath = find_product_out_path(product); if (gProductOutPath.empty()) { if (gProductOutPath.empty()) { fprintf(stderr, "adb: could not resolve \"-p %s\"\n", product); fprintf(stderr, "adb: could not resolve \"-p %s\"\n", product); return usage(); return 1; } } } else if (argv[0][0]=='-' && argv[0][1]=='s') { } else if (argv[0][0]=='-' && argv[0][1]=='s') { if (isdigit(argv[0][2])) { if (isdigit(argv[0][2])) { serial = argv[0] + 2; serial = argv[0] + 2; } else { } else { if (argc < 2 || argv[0][2] != '\0') return usage(); if (argc < 2 || argv[0][2] != '\0') return usage("-s requires an argument"); serial = argv[1]; serial = argv[1]; argc--; argc--; argv++; argv++; Loading @@ -1484,7 +1479,7 @@ int adb_commandline(int argc, const char** argv) { gListenAll = 1; gListenAll = 1; } else if (!strncmp(argv[0], "-H", 2)) { } else if (!strncmp(argv[0], "-H", 2)) { if (argv[0][2] == '\0') { if (argv[0][2] == '\0') { if (argc < 2) return usage(); if (argc < 2) return usage("-H requires an argument"); server_host_str = argv[1]; server_host_str = argv[1]; argc--; argc--; argv++; argv++; Loading @@ -1493,7 +1488,7 @@ int adb_commandline(int argc, const char** argv) { } } } else if (!strncmp(argv[0], "-P", 2)) { } else if (!strncmp(argv[0], "-P", 2)) { if (argv[0][2] == '\0') { if (argv[0][2] == '\0') { if (argc < 2) return usage(); if (argc < 2) return usage("-P requires an argument"); server_port_str = argv[1]; server_port_str = argv[1]; argc--; argc--; argv++; argv++; Loading @@ -1501,7 +1496,7 @@ int adb_commandline(int argc, const char** argv) { server_port_str = argv[0] + 2; server_port_str = argv[0] + 2; } } } else if (!strcmp(argv[0], "-L")) { } else if (!strcmp(argv[0], "-L")) { if (argc < 2) return usage(); if (argc < 2) return usage("-L requires an argument"); server_socket_str = argv[1]; server_socket_str = argv[1]; argc--; argc--; argv++; argv++; Loading Loading @@ -1566,7 +1561,7 @@ int adb_commandline(int argc, const char** argv) { if (no_daemon || is_daemon) { if (no_daemon || is_daemon) { if (is_daemon && (ack_reply_fd == -1)) { if (is_daemon && (ack_reply_fd == -1)) { fprintf(stderr, "reply fd for adb server to client communication not specified.\n"); fprintf(stderr, "reply fd for adb server to client communication not specified.\n"); return usage(); return 1; } } r = adb_server_main(is_daemon, server_socket_str, ack_reply_fd); r = adb_server_main(is_daemon, server_socket_str, ack_reply_fd); } else { } else { Loading @@ -1579,7 +1574,8 @@ int adb_commandline(int argc, const char** argv) { } } if (argc == 0) { if (argc == 0) { return usage(); help(); return 1; } } /* handle wait-for-* prefix */ /* handle wait-for-* prefix */ Loading Loading @@ -1696,7 +1692,7 @@ int adb_commandline(int argc, const char** argv) { } } } } else if (!strcmp(argv[0], "sideload")) { else if (!strcmp(argv[0], "sideload")) { if (argc != 2) return usage(); if (argc != 2) return usage("sideload requires an argument"); if (adb_sideload_host(argv[1])) { if (adb_sideload_host(argv[1])) { return 1; return 1; } else { } else { Loading Loading @@ -1730,7 +1726,7 @@ int adb_commandline(int argc, const char** argv) { bool reverse = !strcmp(argv[0], "reverse"); bool reverse = !strcmp(argv[0], "reverse"); ++argv; ++argv; --argc; --argc; if (argc < 1) return usage(); if (argc < 1) return usage("%s requires an argument", argv[0]); // Determine the <host-prefix> for this command. // Determine the <host-prefix> for this command. std::string host_prefix; std::string host_prefix; Loading @@ -1750,24 +1746,24 @@ int adb_commandline(int argc, const char** argv) { std::string cmd, error; std::string cmd, error; if (strcmp(argv[0], "--list") == 0) { if (strcmp(argv[0], "--list") == 0) { if (argc != 1) return usage(); if (argc != 1) return usage("--list doesn't take any arguments"); return adb_query_command(host_prefix + ":list-forward"); return adb_query_command(host_prefix + ":list-forward"); } else if (strcmp(argv[0], "--remove-all") == 0) { } else if (strcmp(argv[0], "--remove-all") == 0) { if (argc != 1) return usage(); if (argc != 1) return usage("--remove-all doesn't take any arguments"); cmd = host_prefix + ":killforward-all"; cmd = host_prefix + ":killforward-all"; } else if (strcmp(argv[0], "--remove") == 0) { } else if (strcmp(argv[0], "--remove") == 0) { // forward --remove <local> // forward --remove <local> if (argc != 2) return usage(); if (argc != 2) return usage("--remove requires an argument"); cmd = host_prefix + ":killforward:" + argv[1]; cmd = host_prefix + ":killforward:" + argv[1]; } else if (strcmp(argv[0], "--no-rebind") == 0) { } else if (strcmp(argv[0], "--no-rebind") == 0) { // forward --no-rebind <local> <remote> // forward --no-rebind <local> <remote> if (argc != 3) return usage(); if (argc != 3) return usage("--no-rebind takes two arguments"); if (forward_targets_are_valid(argv[1], argv[2], &error)) { if (forward_targets_are_valid(argv[1], argv[2], &error)) { cmd = host_prefix + ":forward:norebind:" + argv[1] + ";" + argv[2]; cmd = host_prefix + ":forward:norebind:" + argv[1] + ";" + argv[2]; } } } else { } else { // forward <local> <remote> // forward <local> <remote> if (argc != 2) return usage(); if (argc != 2) return usage("forward takes two arguments"); if (forward_targets_are_valid(argv[0], argv[1], &error)) { if (forward_targets_are_valid(argv[0], argv[1], &error)) { cmd = host_prefix + ":forward:" + argv[0] + ";" + argv[1]; cmd = host_prefix + ":forward:" + argv[0] + ";" + argv[1]; } } Loading Loading @@ -1796,7 +1792,7 @@ int adb_commandline(int argc, const char** argv) { } } /* do_sync_*() commands */ /* do_sync_*() commands */ else if (!strcmp(argv[0], "ls")) { else if (!strcmp(argv[0], "ls")) { if (argc != 2) return usage(); if (argc != 2) return usage("ls requires an argument"); return do_sync_ls(argv[1]) ? 0 : 1; return do_sync_ls(argv[1]) ? 0 : 1; } } else if (!strcmp(argv[0], "push")) { else if (!strcmp(argv[0], "push")) { Loading @@ -1805,7 +1801,7 @@ int adb_commandline(int argc, const char** argv) { const char* dst = nullptr; const char* dst = nullptr; parse_push_pull_args(&argv[1], argc - 1, &srcs, &dst, ©_attrs); parse_push_pull_args(&argv[1], argc - 1, &srcs, &dst, ©_attrs); if (srcs.empty() || !dst) return usage(); if (srcs.empty() || !dst) return usage("push requires an argument"); return do_sync_push(srcs, dst) ? 0 : 1; return do_sync_push(srcs, dst) ? 0 : 1; } } else if (!strcmp(argv[0], "pull")) { else if (!strcmp(argv[0], "pull")) { Loading @@ -1814,22 +1810,22 @@ int adb_commandline(int argc, const char** argv) { const char* dst = "."; const char* dst = "."; parse_push_pull_args(&argv[1], argc - 1, &srcs, &dst, ©_attrs); parse_push_pull_args(&argv[1], argc - 1, &srcs, &dst, ©_attrs); if (srcs.empty()) return usage(); if (srcs.empty()) return usage("pull requires an argument"); return do_sync_pull(srcs, dst, copy_attrs) ? 0 : 1; return do_sync_pull(srcs, dst, copy_attrs) ? 0 : 1; } } else if (!strcmp(argv[0], "install")) { else if (!strcmp(argv[0], "install")) { if (argc < 2) return usage(); if (argc < 2) return usage("install requires an argument"); if (_use_legacy_install()) { if (_use_legacy_install()) { return install_app_legacy(transport_type, serial, argc, argv); return install_app_legacy(transport_type, serial, argc, argv); } } return install_app(transport_type, serial, argc, argv); return install_app(transport_type, serial, argc, argv); } } else if (!strcmp(argv[0], "install-multiple")) { else if (!strcmp(argv[0], "install-multiple")) { if (argc < 2) return usage(); if (argc < 2) return usage("install-multiple requires an argument"); return install_multiple_app(transport_type, serial, argc, argv); return install_multiple_app(transport_type, serial, argc, argv); } } else if (!strcmp(argv[0], "uninstall")) { else if (!strcmp(argv[0], "uninstall")) { if (argc < 2) return usage(); if (argc < 2) return usage("uninstall requires an argument"); if (_use_legacy_install()) { if (_use_legacy_install()) { return uninstall_app_legacy(transport_type, serial, argc, argv); return uninstall_app_legacy(transport_type, serial, argc, argv); } } Loading @@ -1852,12 +1848,12 @@ int adb_commandline(int argc, const char** argv) { // A local path or "android"/"data" arg was specified. // A local path or "android"/"data" arg was specified. src = argv[1]; src = argv[1]; } else { } else { return usage(); return usage("usage: adb sync [-l] [PARTITION]"); } } if (src != "" && if (src != "" && src != "system" && src != "data" && src != "vendor" && src != "oem") { src != "system" && src != "data" && src != "vendor" && src != "oem") { return usage(); return usage("don't know how to sync %s partition", src.c_str()); } } std::string system_src_path = product_file("system"); std::string system_src_path = product_file("system"); Loading Loading @@ -1909,7 +1905,7 @@ int adb_commandline(int argc, const char** argv) { return restore(argc, argv); return restore(argc, argv); } } else if (!strcmp(argv[0], "keygen")) { else if (!strcmp(argv[0], "keygen")) { if (argc < 2) return usage(); if (argc != 2) return usage("keygen requires an argument"); // Always print key generation information for keygen command. // Always print key generation information for keygen command. adb_trace_enable(AUTH); adb_trace_enable(AUTH); return adb_auth_keygen(argv[1]); return adb_auth_keygen(argv[1]); Loading @@ -1926,11 +1922,11 @@ int adb_commandline(int argc, const char** argv) { /* "adb /?" is a common idiom under Windows */ /* "adb /?" is a common idiom under Windows */ else if (!strcmp(argv[0], "help") || !strcmp(argv[0], "/?")) { else if (!strcmp(argv[0], "--help") || !strcmp(argv[0], "help") || !strcmp(argv[0], "/?")) { help(); help(); return 0; return 0; } } else if (!strcmp(argv[0], "version")) { else if (!strcmp(argv[0], "--version") || !strcmp(argv[0], "version")) { fprintf(stdout, "%s", adb_version().c_str()); fprintf(stdout, "%s", adb_version().c_str()); return 0; return 0; } } Loading Loading @@ -1961,12 +1957,12 @@ int adb_commandline(int argc, const char** argv) { std::string err; std::string err; return adb_query_command("host:reconnect-offline"); return adb_query_command("host:reconnect-offline"); } else { } else { return usage(); return usage("usage: adb reconnect [device|offline]"); } } } } } } usage(); usage("unknown command %s", argv[0]); return 1; return 1; } } Loading