diff options
Diffstat (limited to 'comm/Address.cc')
-rw-r--r-- | comm/Address.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/comm/Address.cc b/comm/Address.cc index af2e1ae..03391d7 100644 --- a/comm/Address.cc +++ b/comm/Address.cc @@ -20,6 +20,9 @@ #include <unistd.h> #include <stdio.h> #include <memory.h> +#if 1 +#include <sys/utsname.h> +#endif #ifdef __osf__ extern "C" { #endif @@ -326,10 +329,20 @@ UchInetAddress :: LoopBack () return loopback; struct hostent *host; - char name [128]; - + +#if 0 + char name [128]; gethostname (name, sizeof (name)); host = gethostbyname (name); +#else + struct utsname un; + if (uname (&un) < 0) { + Error (ErrFatal, "address", "cannot get name of local host"); + return 0; + } + host = gethostbyname (un.nodename); +#endif + if (! host) { Error (ErrFatal, "address", "cannot get address of local host"); return 0; |