… | |
… | |
1167 | our @REGISTRY; |
1167 | our @REGISTRY; |
1168 | |
1168 | |
1169 | our $VERBOSE; |
1169 | our $VERBOSE; |
1170 | |
1170 | |
1171 | BEGIN { |
1171 | BEGIN { |
1172 | eval "sub CYGWIN(){" . (($^O =~ /cygwin/i) *1) . "}"; |
1172 | require "AnyEvent/constants.pl"; |
1173 | eval "sub WIN32 (){" . (($^O =~ /mswin32/i)*1) . "}"; |
1173 | |
1174 | eval "sub TAINT (){" . (${^TAINT} *1) . "}"; |
1174 | eval "sub TAINT (){" . (${^TAINT} *1) . "}"; |
1175 | |
1175 | |
1176 | delete @ENV{grep /^PERL_ANYEVENT_/, keys %ENV} |
1176 | delete @ENV{grep /^PERL_ANYEVENT_/, keys %ENV} |
1177 | if ${^TAINT}; |
1177 | if ${^TAINT}; |
1178 | |
1178 | |
… | |
… | |
1491 | $SIG_IO = AE::io $SIGPIPE_R->fileno, 0, \&_signal_exec; |
1491 | $SIG_IO = AE::io $SIGPIPE_R->fileno, 0, \&_signal_exec; |
1492 | |
1492 | |
1493 | } else { |
1493 | } else { |
1494 | warn "AnyEvent: using emulated perl signal handling with latency timer.\n" if $VERBOSE >= 8; |
1494 | warn "AnyEvent: using emulated perl signal handling with latency timer.\n" if $VERBOSE >= 8; |
1495 | |
1495 | |
1496 | require Fcntl; |
|
|
1497 | |
|
|
1498 | if (AnyEvent::WIN32) { |
1496 | if (AnyEvent::WIN32) { |
1499 | require AnyEvent::Util; |
1497 | require AnyEvent::Util; |
1500 | |
1498 | |
1501 | ($SIGPIPE_R, $SIGPIPE_W) = AnyEvent::Util::portable_pipe (); |
1499 | ($SIGPIPE_R, $SIGPIPE_W) = AnyEvent::Util::portable_pipe (); |
1502 | AnyEvent::Util::fh_nonblocking ($SIGPIPE_R, 1) if $SIGPIPE_R; |
1500 | AnyEvent::Util::fh_nonblocking ($SIGPIPE_R, 1) if $SIGPIPE_R; |
1503 | AnyEvent::Util::fh_nonblocking ($SIGPIPE_W, 1) if $SIGPIPE_W; # just in case |
1501 | AnyEvent::Util::fh_nonblocking ($SIGPIPE_W, 1) if $SIGPIPE_W; # just in case |
1504 | } else { |
1502 | } else { |
1505 | pipe $SIGPIPE_R, $SIGPIPE_W; |
1503 | pipe $SIGPIPE_R, $SIGPIPE_W; |
1506 | fcntl $SIGPIPE_R, &Fcntl::F_SETFL, &Fcntl::O_NONBLOCK if $SIGPIPE_R; |
1504 | fcntl $SIGPIPE_R, AnyEvent::F_SETFL, AnyEvent::O_NONBLOCK if $SIGPIPE_R; |
1507 | fcntl $SIGPIPE_W, &Fcntl::F_SETFL, &Fcntl::O_NONBLOCK if $SIGPIPE_W; # just in case |
1505 | fcntl $SIGPIPE_W, AnyEvent::F_SETFL, AnyEvent::O_NONBLOCK if $SIGPIPE_W; # just in case |
1508 | |
1506 | |
1509 | # not strictly required, as $^F is normally 2, but let's make sure... |
1507 | # not strictly required, as $^F is normally 2, but let's make sure... |
1510 | fcntl $SIGPIPE_R, &Fcntl::F_SETFD, &Fcntl::FD_CLOEXEC; |
1508 | fcntl $SIGPIPE_R, AnyEvent::F_SETFD, AnyEvent::FD_CLOEXEC; |
1511 | fcntl $SIGPIPE_W, &Fcntl::F_SETFD, &Fcntl::FD_CLOEXEC; |
1509 | fcntl $SIGPIPE_W, AnyEvent::F_SETFD, AnyEvent::FD_CLOEXEC; |
1512 | } |
1510 | } |
1513 | |
1511 | |
1514 | $SIGPIPE_R |
1512 | $SIGPIPE_R |
1515 | or Carp::croak "AnyEvent: unable to create a signal reporting pipe: $!\n"; |
1513 | or Carp::croak "AnyEvent: unable to create a signal reporting pipe: $!\n"; |
1516 | |
1514 | |