From 5d6b07c5a4c042580b85248d570ee299fd102a79 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Wed, 6 Feb 2008 16:32:56 +0000 Subject: [PATCH] Cope with differing prototypes for ECONNREFUSED etc on Win32 between 5.8.x and 5.10.x p4raw-id: //depot/perl@33242 --- lib/Net/Ping.pm | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) 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 ? }; -- 2.7.4