| Index: runtime/bin/fdutils_macos.cc
|
| ===================================================================
|
| --- runtime/bin/fdutils_macos.cc (revision 7329)
|
| +++ runtime/bin/fdutils_macos.cc (working copy)
|
| @@ -10,14 +10,14 @@
|
| #include "bin/fdutils.h"
|
|
|
|
|
| -bool FDUtils::SetNonBlocking(intptr_t fd) {
|
| +static bool SetBlockingHelper(intptr_t fd, bool blocking) {
|
| intptr_t status;
|
| status = TEMP_FAILURE_RETRY(fcntl(fd, F_GETFL));
|
| if (status < 0) {
|
| perror("fcntl F_GETFL failed");
|
| return false;
|
| }
|
| - status = (status | O_NONBLOCK);
|
| + status = blocking ? (status & ~O_NONBLOCK) : (status | O_NONBLOCK);
|
| if (TEMP_FAILURE_RETRY(fcntl(fd, F_SETFL, status)) < 0) {
|
| perror("fcntl F_SETFL failed");
|
| return false;
|
| @@ -26,6 +26,16 @@
|
| }
|
|
|
|
|
| +bool FDUtils::SetNonBlocking(intptr_t fd) {
|
| + return SetBlockingHelper(fd, false);
|
| +}
|
| +
|
| +
|
| +bool FDUtils::SetBlocking(intptr_t fd) {
|
| + return SetBlockingHelper(fd, true);
|
| +}
|
| +
|
| +
|
| bool FDUtils::IsBlocking(intptr_t fd, bool* is_blocking) {
|
| intptr_t status;
|
| status = TEMP_FAILURE_RETRY(fcntl(fd, F_GETFL));
|
|
|