ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent.pm (file contents):
Revision 1.200 by root, Wed Apr 1 14:02:27 2009 UTC vs.
Revision 1.202 by root, Wed Apr 1 15:29:00 2009 UTC

1087 } 1087 }
1088 1088
1089 $SIGPIPE_R 1089 $SIGPIPE_R
1090 or Carp::croak "AnyEvent: unable to create a signal reporting pipe: $!\n"; 1090 or Carp::croak "AnyEvent: unable to create a signal reporting pipe: $!\n";
1091 1091
1092 # not strictly required, as $^F is normally 2, but let's make sure...
1092 fcntl $SIGPIPE_R, &Fcntl::F_SETFD, &Fcntl::FD_CLOEXEC; 1093 fcntl $SIGPIPE_R, &Fcntl::F_SETFD, &Fcntl::FD_CLOEXEC;
1093 fcntl $SIGPIPE_W, &Fcntl::F_SETFD, &Fcntl::FD_CLOEXEC; 1094 fcntl $SIGPIPE_W, &Fcntl::F_SETFD, &Fcntl::FD_CLOEXEC;
1094 1095
1095 $SIG_IO = AnyEvent->io (fh => $SIGPIPE_R, poll => "r", cb => \&_signal_exec); 1096 $SIG_IO = AnyEvent->io (fh => $SIGPIPE_R, poll => "r", cb => \&_signal_exec);
1096 } 1097 }
1098 my $signal = uc $arg{signal} 1099 my $signal = uc $arg{signal}
1099 or Carp::croak "required option 'signal' is missing"; 1100 or Carp::croak "required option 'signal' is missing";
1100 1101
1101 $SIG_CB{$signal}{$arg{cb}} = $arg{cb}; 1102 $SIG_CB{$signal}{$arg{cb}} = $arg{cb};
1102 $SIG{$signal} ||= sub { 1103 $SIG{$signal} ||= sub {
1104 local $!;
1103 syswrite $SIGPIPE_W, "\x00", 1 unless %SIG_EV; 1105 syswrite $SIGPIPE_W, "\x00", 1 unless %SIG_EV;
1104 undef $SIG_EV{$signal}; 1106 undef $SIG_EV{$signal};
1105 }; 1107 };
1106 1108
1107 bless [$signal, $arg{cb}], "AnyEvent::Base::Signal" 1109 bless [$signal, $arg{cb}], "AnyEvent::Base::Signal"

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines