summaryrefslogtreecommitdiff
path: root/comm/Address.cc
diff options
context:
space:
mode:
Diffstat (limited to 'comm/Address.cc')
-rw-r--r--comm/Address.cc17
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;