diff options
author | Timothy Pearson <[email protected]> | 2012-03-03 13:45:23 -0600 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2012-03-03 13:45:23 -0600 |
commit | 9e3f8a7f0c9f2ed1125c717f5374aaf8d4ec225e (patch) | |
tree | 13d4a4370231c0894e50d8fa7df62b5f04d1840d | |
parent | 8bd291c0e8a9d8b6eec6f5217e4d5c2f1fd06b96 (diff) | |
download | tdebase-9e3f8a7f0c9f2ed1125c717f5374aaf8d4ec225e.tar.gz tdebase-9e3f8a7f0c9f2ed1125c717f5374aaf8d4ec225e.zip |
Fix hostname display in titlebar with certain programs
This closes Bug 889
Thanks to Slávek Banko for the patch!
-rw-r--r-- | twin/utils.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/twin/utils.cpp b/twin/utils.cpp index 93d14080e..1159deb30 100644 --- a/twin/utils.cpp +++ b/twin/utils.cpp @@ -18,6 +18,8 @@ License. See the file "COPYING" for the exact licensing terms. #include "utils.h" #include <unistd.h> +#include <string.h> +#include <netdb.h> #ifndef KCMRULES @@ -323,6 +325,27 @@ bool isLocalMachine( const TQCString& host ) if( host == hostnamebuf ) return true; } + else + { // e.g. LibreOffice likes to give FQDN, even if gethostname() doesn't include domain + struct addrinfo hints, *res, *addr; + bool is_local = false; + + memset (&hints, 0, sizeof (hints)); + hints.ai_family = PF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags |= AI_CANONNAME; + + if( getaddrinfo( host, NULL, &hints, &res ) != 0) + return false; + for(addr = res; !is_local && addr; addr = addr->ai_next) + { + if( res->ai_canonname && + host == TQCString( res->ai_canonname )) + is_local = true; + } + freeaddrinfo(res); + return is_local; + } } return false; } |