From: Nicholas Clark Date: Wed, 6 Feb 2008 16:32:56 +0000 (+0000) Subject: Cope with differing prototypes for ECONNREFUSED etc on Win32 between X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=5d6b07c5a4c042580b85248d570ee299fd102a79;p=p5sagit%2Fp5-mst-13.2.git Cope with differing prototypes for ECONNREFUSED etc on Win32 between 5.8.x and 5.10.x p4raw-id: //depot/perl@33242 --- diff --git a/lib/Net/Ping.pm b/lib/Net/Ping.pm index cac3eef..ebdbb42 100644 --- a/lib/Net/Ping.pm +++ b/lib/Net/Ping.pm @@ -16,7 +16,7 @@ use Carp; @ISA = qw(Exporter); @EXPORT = qw(pingecho); -$VERSION = "2.34"; +$VERSION = "2.35"; sub SOL_IP { 0; }; sub IP_TOS { 1; }; @@ -35,11 +35,20 @@ $syn_forking = 0; if ($^O =~ /Win32/i) { # Hack to avoid this Win32 spewage: # Your vendor has not defined POSIX macro ECONNREFUSED - *ECONNREFUSED = sub() {10061;}; # "Unknown Error" Special Win32 Response? - *ENOTCONN = sub() {10057;}; - *ECONNRESET = sub() {10054;}; - *EINPROGRESS = sub() {10036;}; - *EWOULDBLOCK = sub() {10035;}; + my @pairs = (ECONNREFUSED => 10061, # "Unknown Error" Special Win32 Response? + ENOTCONN => 10057, + ECONNRESET => 10054, + EINPROGRESS => 10036, + EWOULDBLOCK => 10035, + ); + while (my $name = shift @pairs) { + my $value = shift @pairs; + # When defined, these all are non-zero + unless (eval $name) { + no strict 'refs'; + *{$name} = defined prototype \&{$name} ? sub () {$value} : sub {$value}; + } + } # $syn_forking = 1; # XXX possibly useful in < Win2K ? };