| jb.qi | 9e67009 | 2023-08-18 19:59:51 +0800 | [diff] [blame] | 1 | #include "sysdeps.h" | 
|  | 2 | #include "adb.h" | 
|  | 3 | #include "adb_client.h" | 
|  | 4 | #include <stdio.h> | 
|  | 5 |  | 
|  | 6 | static int  connect_to_console(void) | 
|  | 7 | { | 
|  | 8 | int  fd, port; | 
|  | 9 |  | 
|  | 10 | port = adb_get_emulator_console_port(); | 
|  | 11 | if (port < 0) { | 
|  | 12 | if (port == -2) | 
|  | 13 | fprintf(stderr, "error: more than one emulator detected. use -s option\n"); | 
|  | 14 | else | 
|  | 15 | fprintf(stderr, "error: no emulator detected\n"); | 
|  | 16 | return -1; | 
|  | 17 | } | 
|  | 18 | fd = socket_loopback_client( port, SOCK_STREAM ); | 
|  | 19 | if (fd < 0) { | 
|  | 20 | fprintf(stderr, "error: could not connect to TCP port %d\n", port); | 
|  | 21 | return -1; | 
|  | 22 | } | 
|  | 23 | return  fd; | 
|  | 24 | } | 
|  | 25 |  | 
|  | 26 |  | 
|  | 27 | int  adb_send_emulator_command(int  argc, char**  argv) | 
|  | 28 | { | 
|  | 29 | int   fd, nn; | 
|  | 30 |  | 
|  | 31 | fd = connect_to_console(); | 
|  | 32 | if (fd < 0) | 
|  | 33 | return 1; | 
|  | 34 |  | 
|  | 35 | #define  QUIT  "quit\n" | 
|  | 36 |  | 
|  | 37 | for (nn = 1; nn < argc; nn++) { | 
|  | 38 | adb_write( fd, argv[nn], strlen(argv[nn]) ); | 
|  | 39 | adb_write( fd, (nn == argc-1) ? "\n" : " ", 1 ); | 
|  | 40 | } | 
|  | 41 | adb_write( fd, QUIT, sizeof(QUIT)-1 ); | 
|  | 42 | adb_close(fd); | 
|  | 43 |  | 
|  | 44 | return 0; | 
|  | 45 | } |