summaryrefslogtreecommitdiff
path: root/ext/Sys
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2009-02-09 19:15:54 +0000
committerNicholas Clark <nick@ccl4.org>2009-02-09 19:15:54 +0000
commit0450807c0b2ef9ef0c106af1aecf3cee005f5ceb (patch)
treed642821df4abd83c409b8e9e6675d272185a9e3e /ext/Sys
parente5db20f4496f96450ac3f4b5bd7d58613152f568 (diff)
downloadperl-0450807c0b2ef9ef0c106af1aecf3cee005f5ceb.tar.gz
Rename ext/Sys/Hostname to ext/Sys-Hostname
Diffstat (limited to 'ext/Sys')
-rw-r--r--ext/Sys/Hostname/Hostname.pm165
-rw-r--r--ext/Sys/Hostname/Hostname.xs78
-rw-r--r--ext/Sys/Hostname/Makefile.PL8
-rwxr-xr-xext/Sys/Hostname/t/Hostname.t25
4 files changed, 0 insertions, 276 deletions
diff --git a/ext/Sys/Hostname/Hostname.pm b/ext/Sys/Hostname/Hostname.pm
deleted file mode 100644
index 415f9517fa..0000000000
--- a/ext/Sys/Hostname/Hostname.pm
+++ /dev/null
@@ -1,165 +0,0 @@
-package Sys::Hostname;
-
-use strict;
-
-use Carp;
-
-require Exporter;
-require AutoLoader;
-
-our @ISA = qw/ Exporter AutoLoader /;
-our @EXPORT = qw/ hostname /;
-
-our $VERSION;
-
-our $host;
-
-BEGIN {
- $VERSION = '1.11';
- {
- local $SIG{__DIE__};
- eval {
- require XSLoader;
- XSLoader::load('Sys::Hostname', $VERSION);
- };
- warn $@ if $@;
- }
-}
-
-
-sub hostname {
-
- # method 1 - we already know it
- return $host if defined $host;
-
- # method 1' - try to ask the system
- $host = ghname() if defined &ghname;
- return $host if defined $host;
-
- if ($^O eq 'VMS') {
-
- # method 2 - no sockets ==> return DECnet node name
- eval { local $SIG{__DIE__}; $host = (gethostbyname('me'))[0] };
- if ($@) { return $host = $ENV{'SYS$NODE'}; }
-
- # method 3 - has someone else done the job already? It's common for the
- # TCP/IP stack to advertise the hostname via a logical name. (Are
- # there any other logicals which TCP/IP stacks use for the host name?)
- $host = $ENV{'ARPANET_HOST_NAME'} || $ENV{'INTERNET_HOST_NAME'} ||
- $ENV{'MULTINET_HOST_NAME'} || $ENV{'UCX$INET_HOST'} ||
- $ENV{'TCPWARE_DOMAINNAME'} || $ENV{'NEWS_ADDRESS'};
- return $host if $host;
-
- # method 4 - does hostname happen to work?
- my($rslt) = `hostname`;
- if ($rslt !~ /IVVERB/) { ($host) = $rslt =~ /^(\S+)/; }
- return $host if $host;
-
- # rats!
- $host = '';
- croak "Cannot get host name of local machine";
-
- }
- elsif ($^O eq 'MSWin32') {
- ($host) = gethostbyname('localhost');
- chomp($host = `hostname 2> NUL`) unless defined $host;
- return $host;
- }
- elsif ($^O eq 'epoc') {
- $host = 'localhost';
- return $host;
- }
- else { # Unix
- # is anyone going to make it here?
-
- local $ENV{PATH} = '/usr/bin:/bin:/usr/sbin:/sbin'; # Paranoia.
-
- # method 2 - syscall is preferred since it avoids tainting problems
- # XXX: is it such a good idea to return hostname untainted?
- eval {
- local $SIG{__DIE__};
- require "syscall.ph";
- $host = "\0" x 65; ## preload scalar
- syscall(&SYS_gethostname, $host, 65) == 0;
- }
-
- # method 2a - syscall using systeminfo instead of gethostname
- # -- needed on systems like Solaris
- || eval {
- local $SIG{__DIE__};
- require "sys/syscall.ph";
- require "sys/systeminfo.ph";
- $host = "\0" x 65; ## preload scalar
- syscall(&SYS_systeminfo, &SI_HOSTNAME, $host, 65) != -1;
- }
-
- # method 3 - trusty old hostname command
- || eval {
- local $SIG{__DIE__};
- local $SIG{CHLD};
- $host = `(hostname) 2>/dev/null`; # bsdish
- }
-
- # method 4 - use POSIX::uname(), which strictly can't be expected to be
- # correct
- || eval {
- local $SIG{__DIE__};
- require POSIX;
- $host = (POSIX::uname())[1];
- }
-
- # method 5 - sysV uname command (may truncate)
- || eval {
- local $SIG{__DIE__};
- $host = `uname -n 2>/dev/null`; ## sysVish
- }
-
- # method 6 - Apollo pre-SR10
- || eval {
- local $SIG{__DIE__};
- my($a,$b,$c,$d);
- ($host,$a,$b,$c,$d)=split(/[:\. ]/,`/com/host`,6);
- }
-
- # bummer
- || croak "Cannot get host name of local machine";
-
- # remove garbage
- $host =~ tr/\0\r\n//d;
- $host;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Sys::Hostname - Try every conceivable way to get hostname
-
-=head1 SYNOPSIS
-
- use Sys::Hostname;
- $host = hostname;
-
-=head1 DESCRIPTION
-
-Attempts several methods of getting the system hostname and
-then caches the result. It tries the first available of the C
-library's gethostname(), C<`$Config{aphostname}`>, uname(2),
-C<syscall(SYS_gethostname)>, C<`hostname`>, C<`uname -n`>,
-and the file F</com/host>. If all that fails it C<croak>s.
-
-All NULs, returns, and newlines are removed from the result.
-
-=head1 AUTHOR
-
-David Sundstrom E<lt>F<sunds@asictest.sc.ti.com>E<gt>
-
-Texas Instruments
-
-XS code added by Greg Bacon E<lt>F<gbacon@cs.uah.edu>E<gt>
-
-=cut
-
diff --git a/ext/Sys/Hostname/Hostname.xs b/ext/Sys/Hostname/Hostname.xs
deleted file mode 100644
index 23ecd694ed..0000000000
--- a/ext/Sys/Hostname/Hostname.xs
+++ /dev/null
@@ -1,78 +0,0 @@
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#if defined(I_UNISTD) && defined(HAS_GETHOSTNAME)
-# include <unistd.h>
-#endif
-
-/* a reasonable default */
-#ifndef MAXHOSTNAMELEN
-# define MAXHOSTNAMELEN 256
-#endif
-
-/* swiped from POSIX.xs */
-#if defined(__VMS) && !defined(__POSIX_SOURCE)
-# if ((__VMS_VER >= 70000000) && (__DECC_VER >= 50200000)) || (__CRTL_VER >= 70000000)
-# include <utsname.h>
-# endif
-#endif
-
-#ifdef I_SYSUTSNAME
-# include <sys/utsname.h>
-#endif
-
-MODULE = Sys::Hostname PACKAGE = Sys::Hostname
-
-void
-ghname()
- PREINIT:
- IV retval = -1;
- SV *sv;
- PPCODE:
- EXTEND(SP, 1);
-#ifdef HAS_GETHOSTNAME
- {
- char tmps[MAXHOSTNAMELEN];
- retval = PerlSock_gethostname(tmps, sizeof(tmps));
- sv = newSVpvn(tmps, strlen(tmps));
- }
-#else
-# ifdef HAS_PHOSTNAME
- {
- PerlIO *io;
- char tmps[MAXHOSTNAMELEN];
- char *p = tmps;
- char c;
- io = PerlProc_popen(PHOSTNAME, "r");
- if (!io)
- goto check_out;
- while (PerlIO_read(io, &c, sizeof(c)) == 1) {
- if (isSPACE(c) || p - tmps >= sizeof(tmps))
- break;
- *p++ = c;
- }
- PerlProc_pclose(io);
- *p = '\0';
- retval = 0;
- sv = newSVpvn(tmps, strlen(tmps));
- }
-# else
-# ifdef HAS_UNAME
- {
- struct utsname u;
- if (PerlEnv_uname(&u) == -1)
- goto check_out;
- sv = newSVpvn(u.nodename, strlen(u.nodename));
- retval = 0;
- }
-# endif
-# endif
-#endif
-#ifndef HAS_GETHOSTNAME
- check_out:
-#endif
- if (retval == -1)
- XSRETURN_UNDEF;
- else
- PUSHs(sv_2mortal(sv));
diff --git a/ext/Sys/Hostname/Makefile.PL b/ext/Sys/Hostname/Makefile.PL
deleted file mode 100644
index a0892f643e..0000000000
--- a/ext/Sys/Hostname/Makefile.PL
+++ /dev/null
@@ -1,8 +0,0 @@
-use ExtUtils::MakeMaker;
-
-WriteMakefile(
- NAME => 'Sys::Hostname',
- VERSION_FROM => 'Hostname.pm',
- MAN3PODS => {}, # Pods will be built by installman.
- XSPROTOARG => '-noprototypes',
-);
diff --git a/ext/Sys/Hostname/t/Hostname.t b/ext/Sys/Hostname/t/Hostname.t
deleted file mode 100755
index 85a04cd488..0000000000
--- a/ext/Sys/Hostname/t/Hostname.t
+++ /dev/null
@@ -1,25 +0,0 @@
-#!./perl
-
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
- require Config; import Config;
- if ($Config{'extensions'} !~ /\bSys\/Hostname\b/) {
- print "1..0 # Skip: Sys::Hostname was not built\n";
- exit 0;
- }
-}
-
-use Sys::Hostname;
-
-eval {
- $host = hostname;
-};
-
-if ($@) {
- print "1..0\n" if $@ =~ /Cannot get host name/;
-} else {
- print "1..1\n";
- print "# \$host = `$host'\n";
- print "ok 1\n";
-}