index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Allan McRae <allan@archlinux.org> | 2016-05-04 17:39:34 +1000 |
---|---|---|
committer | Andrew Gregory <andrew.gregory.8@gmail.com> | 2017-05-08 23:27:40 -0400 |
commit | 2f1797783efcb7594d9185ae01c7e1a80096b1af (patch) | |
tree | b20bca80c1cdee2c228ce57ea71fc03764ab18ff /lib/libalpm | |
parent | a9bec8bed88865a2b5ca1d8f56665ac1326bb238 (diff) |
-rw-r--r-- | lib/libalpm/util.c | 14 |
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c index 4a4847de..1e554632 100644 --- a/lib/libalpm/util.c +++ b/lib/libalpm/util.c @@ -446,6 +446,16 @@ ssize_t _alpm_files_in_directory(alpm_handle_t *handle, const char *path, return files; } +static int should_retry(int errnum) +{ + return errnum == EAGAIN +/* EAGAIN may be the same value as EWOULDBLOCK (POSIX.1) - prevent GCC warning */ +#if EAGAIN != EWOULDBLOCK + || errnum == EWOULDBLOCK +#endif + || errnum == EINTR; +} + static int _alpm_chroot_write_to_child(alpm_handle_t *handle, int fd, char *buf, ssize_t *buf_size, ssize_t buf_limit, _alpm_cb_io out_cb, void *cb_ctx) @@ -476,7 +486,7 @@ static int _alpm_chroot_write_to_child(alpm_handle_t *handle, int fd, /* write was successful, remove the written data from the buffer */ *buf_size -= nwrite; memmove(buf, buf + nwrite, *buf_size); - } else if(errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) { + } else if(should_retry(errno)) { /* nothing written, try again later */ } else { _alpm_log(handle, ALPM_LOG_ERROR, @@ -530,7 +540,7 @@ static int _alpm_chroot_read_from_child(alpm_handle_t *handle, int fd, _alpm_chroot_process_output(handle, buf); } return -1; - } else if(errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) { + } else if(should_retry(errno)) { /* nothing read, try again */ } else { /* read error */ |