mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
tests: commandhelper: Accept POLLNVAL on macOS
commandhelper hangs indefinitely in poll() on macOS on commandtest test2 and later because POLLNVAL is returned on revents for input file descriptor opened from /dev/null, i.e this hangs: $ tests/commandhelper < /dev/null BEGIN STDOUT BEGIN STDERR ^C But it works fine with regular stdin: $ tests/commandhelper <<< test BEGIN STDOUT BEGIN STDERR test test END STDOUT END STDERR The issue is mentioned in poll(2): BUGS The poll() system call currently does not support devices. With the change all 28 cases in commandtest pass. Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> Reviewed-by: Andrea Bolognani <abologna@redhat.com>
This commit is contained in:
parent
74546bd5fb
commit
c3d02040ac
@ -190,7 +190,17 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
|
||||
for (i = 0; i < numpollfds; i++) {
|
||||
if (fds[i].revents & (POLLIN | POLLHUP | POLLERR)) {
|
||||
short revents = POLLIN | POLLHUP | POLLERR;
|
||||
|
||||
# ifdef __APPLE__
|
||||
/*
|
||||
* poll() on /dev/null will return POLLNVAL
|
||||
* Apple-Feedback: FB8785208
|
||||
*/
|
||||
revents |= POLLNVAL;
|
||||
# endif
|
||||
|
||||
if (fds[i].revents & revents) {
|
||||
fds[i].revents = 0;
|
||||
|
||||
got = read(fds[i].fd, buf, sizeof(buf));
|
||||
|
Loading…
Reference in New Issue
Block a user