Merge "Add TEMP_FAILURE_RETRY macro for darwin"
diff --git a/adb/sysdeps.h b/adb/sysdeps.h
index 22f01dd..e883557 100644
--- a/adb/sysdeps.h
+++ b/adb/sysdeps.h
@@ -274,6 +274,21 @@
 #include <string.h>
 #include <unistd.h>
 
+/*
+ * TEMP_FAILURE_RETRY is defined by some, but not all, versions of
+ * <unistd.h>. (Alas, it is not as standard as we'd hoped!) So, if it's
+ * not already defined, then define it here.
+ */
+#ifndef TEMP_FAILURE_RETRY
+/* Used to retry syscalls that can return EINTR. */
+#define TEMP_FAILURE_RETRY(exp) ({         \
+    typeof (exp) _rc;                      \
+    do {                                   \
+        _rc = (exp);                       \
+    } while (_rc == -1 && errno == EINTR); \
+    _rc; })
+#endif
+
 #define OS_PATH_SEPARATOR '/'
 #define OS_PATH_SEPARATOR_STR "/"