… | |
… | |
19 | #define PERL_VERSION_ATLEAST(a,b,c) \ |
19 | #define PERL_VERSION_ATLEAST(a,b,c) \ |
20 | (PERL_REVISION > (a) \ |
20 | (PERL_REVISION > (a) \ |
21 | || (PERL_REVISION == (a) \ |
21 | || (PERL_REVISION == (a) \ |
22 | && (PERL_VERSION > (b) \ |
22 | && (PERL_VERSION > (b) \ |
23 | || (PERL_VERSION == (b) && PERL_SUBVERSION >= (c))))) |
23 | || (PERL_VERSION == (b) && PERL_SUBVERSION >= (c))))) |
|
|
24 | |
|
|
25 | #ifndef PERL_MAGIC_ext |
|
|
26 | # define PERL_MAGIC_ext '~' |
|
|
27 | #endif |
24 | |
28 | |
25 | #if !PERL_VERSION_ATLEAST (5,6,0) |
29 | #if !PERL_VERSION_ATLEAST (5,6,0) |
26 | # ifndef PL_ppaddr |
30 | # ifndef PL_ppaddr |
27 | # define PL_ppaddr ppaddr |
31 | # define PL_ppaddr ppaddr |
28 | # endif |
32 | # endif |
… | |
… | |
440 | if (epp->len) |
444 | if (epp->len) |
441 | { |
445 | { |
442 | if (dup2 (epn.fd [0], epp->fd [0]) < 0) |
446 | if (dup2 (epn.fd [0], epp->fd [0]) < 0) |
443 | croak ("unable to dup over old event pipe"); /* should not croak */ |
447 | croak ("unable to dup over old event pipe"); /* should not croak */ |
444 | |
448 | |
445 | if (epp->fd [1] != epp->fd [0]) |
|
|
446 | 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]; |
447 | |
453 | |
448 | epn.fd [0] = epp->fd [0]; |
454 | epn.fd [0] = epp->fd [0]; |
449 | } |
455 | } |
450 | |
456 | |
451 | *epp = epn; |
457 | *epp = epn; |
… | |
… | |
472 | struct pollfd pfd; |
478 | struct pollfd pfd; |
473 | |
479 | |
474 | pfd.fd = s_epipe_fd (epp); |
480 | pfd.fd = s_epipe_fd (epp); |
475 | pfd.events = POLLIN; |
481 | pfd.events = POLLIN; |
476 | |
482 | |
477 | return poll (&pfd, 1, 0); |
483 | return poll (&pfd, 1, -1); |
478 | #endif |
484 | #endif |
479 | } |
485 | } |
480 | |
486 | |
481 | #endif |
487 | #endif |
482 | |
488 | |