summaryrefslogtreecommitdiffstats
path: root/adb/console.cpp
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2015-02-25 17:51:28 -0800
committerDan Albert <danalbert@google.com>2015-03-09 14:06:11 -0700
commitbac3474a8256cb32a29e8d46f78cad95a5502692 (patch)
tree9763c3cb2f5e640c7061cffb47d61274a37baab8 /adb/console.cpp
parent9b1fd969a7b7f1c6f1ed19719f21d57001d3c461 (diff)
downloadsystem_core-bac3474a8256cb32a29e8d46f78cad95a5502692.zip
system_core-bac3474a8256cb32a29e8d46f78cad95a5502692.tar.gz
system_core-bac3474a8256cb32a29e8d46f78cad95a5502692.tar.bz2
Move adb to C++.
I keep trying to clean things up and needing std::strings. Might as well just do this now. usb_linux_client.c is going to stay as C because GCC isn't smart enough to deal with the designated initializers it uses (though for some reason it is in C mode). The Darwin files are staying as C because I don't have a way to test that they build. The Windows files are staying as C because while I can actually build for them, it's slow and painful. Change-Id: I75367d29205a9049d34460032b3bb36384f43941
Diffstat (limited to 'adb/console.cpp')
-rw-r--r--adb/console.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/adb/console.cpp b/adb/console.cpp
new file mode 100644
index 0000000..452ee41
--- /dev/null
+++ b/adb/console.cpp
@@ -0,0 +1,45 @@
+#include "sysdeps.h"
+#include "adb.h"
+#include "adb_client.h"
+#include <stdio.h>
+
+static int connect_to_console(void)
+{
+ int fd, port;
+
+ port = adb_get_emulator_console_port();
+ if (port < 0) {
+ if (port == -2)
+ fprintf(stderr, "error: more than one emulator detected. use -s option\n");
+ else
+ fprintf(stderr, "error: no emulator detected\n");
+ return -1;
+ }
+ fd = socket_loopback_client( port, SOCK_STREAM );
+ if (fd < 0) {
+ fprintf(stderr, "error: could not connect to TCP port %d\n", port);
+ return -1;
+ }
+ return fd;
+}
+
+
+int adb_send_emulator_command(int argc, const char** argv)
+{
+ int fd, nn;
+
+ fd = connect_to_console();
+ if (fd < 0)
+ return 1;
+
+#define QUIT "quit\n"
+
+ for (nn = 1; nn < argc; nn++) {
+ adb_write( fd, argv[nn], strlen(argv[nn]) );
+ adb_write( fd, (nn == argc-1) ? "\n" : " ", 1 );
+ }
+ adb_write( fd, QUIT, sizeof(QUIT)-1 );
+ adb_close(fd);
+
+ return 0;
+}