diff options
author | Vicent Marti <vicent@github.com> | 2014-02-18 21:48:43 +0400 |
---|---|---|
committer | Vicent Marti <vicent@github.com> | 2014-02-18 21:48:43 +0400 |
commit | e0ebaaa53ea1154a1f392dae463453ac6c428d78 (patch) | |
tree | 5be111f1c313d8a83ca6297354fb27c4cc768c6c | |
parent | dbd2ca356b8a16d028e45c5263e9c460be13d338 (diff) | |
parent | 0197d4107a2996dc2ed4e98698e281c2d5fa44e1 (diff) |
Merge pull request #2121 from bk2204/ewouldblock
Check for EWOULDBLOCK as well as EAGAIN on write.
-rw-r--r-- | src/posix.c | 2 | ||||
-rw-r--r-- | src/posix.h | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/posix.c b/src/posix.c index 525785f35..7b2962feb 100644 --- a/src/posix.c +++ b/src/posix.c @@ -189,7 +189,7 @@ int p_write(git_file fd, const void *buf, size_t cnt) r = write(fd, b, cnt); #endif if (r < 0) { - if (errno == EINTR || errno == EAGAIN) + if (errno == EINTR || GIT_ISBLOCKED(errno)) continue; return -1; } diff --git a/src/posix.h b/src/posix.h index 6d3a84eba..f85b1aebd 100644 --- a/src/posix.h +++ b/src/posix.h @@ -29,6 +29,15 @@ #define O_CLOEXEC 0 #endif +/* Determine whether an errno value indicates that a read or write failed + * because the descriptor is blocked. + */ +#if defined(EWOULDBLOCK) +#define GIT_ISBLOCKED(e) ((e) == EAGAIN || (e) == EWOULDBLOCK) +#else +#define GIT_ISBLOCKED(e) ((e) == EAGAIN) +#endif + typedef int git_file; /** |