summaryrefslogtreecommitdiffstats
path: root/lldb/source/Host/posix/HostInfoPosix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Host/posix/HostInfoPosix.cpp')
-rw-r--r--lldb/source/Host/posix/HostInfoPosix.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/lldb/source/Host/posix/HostInfoPosix.cpp b/lldb/source/Host/posix/HostInfoPosix.cpp
index f300e22e9e5..78300fca034 100644
--- a/lldb/source/Host/posix/HostInfoPosix.cpp
+++ b/lldb/source/Host/posix/HostInfoPosix.cpp
@@ -32,10 +32,16 @@ bool HostInfoPosix::GetHostname(std::string &s) {
char hostname[PATH_MAX];
hostname[sizeof(hostname) - 1] = '\0';
if (::gethostname(hostname, sizeof(hostname) - 1) == 0) {
- struct hostent *h = ::gethostbyname(hostname);
- if (h)
- s.assign(h->h_name);
- else
+ struct addrinfo hints;
+ struct addrinfo *res = nullptr;
+ std::memset(&hints, 0, sizeof(hints));
+ hints.ai_flags = AI_CANONNAME;
+ int err = ::getaddrinfo(hostname, nullptr, &hints, &res);
+ if (err == 0) {
+ assert(res->ai_canonname && "getaddrinfo found a canonical name");
+ s.assign(res->ai_canonname);
+ freeaddrinfo(res);
+ } else
s.assign(hostname);
return true;
}
OpenPOWER on IntegriCloud