… | |
… | |
444 | if (epp->len) |
444 | if (epp->len) |
445 | { |
445 | { |
446 | if (dup2 (epn.fd [0], epp->fd [0]) < 0) |
446 | if (dup2 (epn.fd [0], epp->fd [0]) < 0) |
447 | croak ("unable to dup over old event pipe"); /* should not croak */ |
447 | croak ("unable to dup over old event pipe"); /* should not croak */ |
448 | |
448 | |
449 | if (epp->fd [1] != epp->fd [0]) |
|
|
450 | close (epn.fd [0]); |
449 | close (epn.fd [0]); |
|
|
450 | |
|
|
451 | if (epn.fd [0] == epn.fd [1]) |
|
|
452 | epn.fd [1] = epp->fd [0]; |
451 | |
453 | |
452 | epn.fd [0] = epp->fd [0]; |
454 | epn.fd [0] = epp->fd [0]; |
453 | } |
455 | } |
454 | |
456 | |
455 | *epp = epn; |
457 | *epp = epn; |
… | |
… | |
476 | struct pollfd pfd; |
478 | struct pollfd pfd; |
477 | |
479 | |
478 | pfd.fd = s_epipe_fd (epp); |
480 | pfd.fd = s_epipe_fd (epp); |
479 | pfd.events = POLLIN; |
481 | pfd.events = POLLIN; |
480 | |
482 | |
481 | return poll (&pfd, 1, 0); |
483 | return poll (&pfd, 1, -1); |
482 | #endif |
484 | #endif |
483 | } |
485 | } |
484 | |
486 | |
485 | #endif |
487 | #endif |
486 | |
488 | |