Test readx/writex (now renamed).
Renamed readx/writex to ReadFdExactly/WriteFdExactly respectively.
These read/write a full fixed-size buffer. If the whole buffer cannot
be read/written, these functions return an error.
Rename write_string to WriteStringFully.
Move the TEMP_FAILURE_RETRY definition in sysdeps.h out of the
!Windows section. It seems Windows won't actually interrupt a call,
but it's easier to just define it than to #ifdef each call.
Change-Id: Ia8ddffa2a52764a2f9a281c96c937660e002b9b9
diff --git a/adb/sockets.c b/adb/sockets.c
index 7da6d57..d34f8c6 100644
--- a/adb/sockets.c
+++ b/adb/sockets.c
@@ -25,6 +25,7 @@
#define TRACE_TAG TRACE_SOCKETS
#include "adb.h"
+#include "adb_io.h"
#if !ADB_HOST
#include "cutils/properties.h"
#endif
@@ -39,10 +40,16 @@
char buf[9];
int len;
len = strlen(reason);
- if(len > 0xffff) len = 0xffff;
+ if (len > 0xffff) {
+ len = 0xffff;
+ }
+
snprintf(buf, sizeof buf, "FAIL%04x", len);
- if(writex(fd, buf, 8)) return -1;
- return writex(fd, reason, len);
+ if (!WriteFdExactly(fd, buf, 8)) {
+ return -1;
+ }
+
+ return WriteFdExactly(fd, reason, len) ? 0 : -1;
}
static unsigned local_socket_next_id = 1;