gethostbyname('localhost') is not that portable.
Jarkko Hietaniemi [Sun, 30 Mar 2003 08:31:53 +0000 (08:31 +0000)]
inet_aton('localhost') in IRIX 5.3 returned an undef,
which in turn made pack_sockaddr_in to barf on zero
length in_addr.

p4raw-id: //depot/perl@19084

ext/Socket/Socket.t
pod/perlfunc.pod
pod/perlport.pod

index c06b9e7..a5ad264 100755 (executable)
@@ -26,8 +26,11 @@ if (socket(T,PF_INET,SOCK_STREAM,6)) {
   print "ok 1\n";
   
   arm(5);
-  my $host = $^O eq 'MacOS' ? '127.0.0.1' : 'localhost';
-  if ($has_echo && connect(T,pack_sockaddr_in(7,inet_aton($host)))){
+  my $host = $^O eq 'MacOS' || ($^O eq 'irix' && $Config{osvers} == 5) ?
+                 '127.0.0.1' : 'localhost';
+  my $localhost = inet_aton($host);
+
+  if ($has_echo && defined $localhost && connect(T,pack_sockaddr_in(7,$localhost))){
        arm(0);
 
        print "ok 2\n";
@@ -53,7 +56,9 @@ if (socket(T,PF_INET,SOCK_STREAM,6)) {
   }
   else {
        print "# You're allowed to fail tests 2 and 3 if\n";
-       print "# the echo service has been disabled.\n";
+       print "# the echo service has been disabled or if your
+        print "# gethostbyname() cannot resolve your localhost.\n";
+       print "# 'Connection refused' indicates disabled echo service.\n";
        print "# 'Interrupted system call' indicates a hanging echo service.\n";
        print "# Error: $!\n";
        print "ok 2 - skipped\n";
index 353e4e6..d3eb002 100644 (file)
@@ -224,8 +224,8 @@ by this are:
 C<-X>, C<binmode>, C<chmod>, C<chown>, C<chroot>, C<crypt>,
 C<dbmclose>, C<dbmopen>, C<dump>, C<endgrent>, C<endhostent>,
 C<endnetent>, C<endprotoent>, C<endpwent>, C<endservent>, C<exec>,
-C<fcntl>, C<flock>, C<fork>, C<getgrent>, C<getgrgid>, C<gethostent>,
-C<getlogin>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
+C<fcntl>, C<flock>, C<fork>, C<getgrent>, C<getgrgid>, C<gethostbyname>,
+C<gethostent>, C<getlogin>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
 C<getppid>, C<getprgp>, C<getpriority>, C<getprotobynumber>,
 C<getprotoent>, C<getpwent>, C<getpwnam>, C<getpwuid>,
 C<getservbyport>, C<getservent>, C<getsockopt>, C<glob>, C<ioctl>,
index d74c0da..b6aca78 100644 (file)
@@ -1636,6 +1636,11 @@ Not implemented. (S<Mac OS>, Win32, VM/ESA)
 
 Not implemented. (S<Mac OS>, Win32, VMS, VM/ESA)
 
+=item gethostbyname
+
+C<gethostbyname('localhost')> does not work everywhere: you may have
+to use C<gethostbyname('127.0.0.1')>. (S<Mac OS>, S<Irix 5>)
+
 =item gethostent
 
 Not implemented. (S<Mac OS>, Win32)