diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2019-01-24 16:22:09 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2019-01-24 16:22:24 +0300 |
commit | 2166f7dc0d9ae212d9f663241501f6fd17b71e50 (patch) | |
tree | 0c193ae363eb3ebbac976d8f7c2eb59a547b9283 /winsup/cygwin/net.cc | |
parent | c6171b9fde818b058b710c5e146bdecd963b7e9e (diff) |
Cygwin: net: unify gethostname/getdomainname
Use info from same source (GetNetworkParams).
Also move getdomainname near gethostname in source.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/net.cc')
-rw-r--r-- | winsup/cygwin/net.cc | 77 |
1 files changed, 36 insertions, 41 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 2af71f7e5..cd296d19d 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -710,30 +710,24 @@ cygwin_getservbyport (int port, const char *proto) extern "C" int cygwin_gethostname (char *name, size_t len) { - int res = -1; - __try { - if (gethostname (name, len)) - { - DWORD local_len = len; + PFIXED_INFO info = NULL; + ULONG size = 0; - if (!GetComputerNameExA (ComputerNameDnsHostname, name, - &local_len)) - { - if (GetLastError () == ERROR_MORE_DATA) - set_errno (ENAMETOOLONG); - else - set_winsock_errno (); - __leave; - } + if (GetNetworkParams(info, &size) == ERROR_BUFFER_OVERFLOW + && (info = (PFIXED_INFO) alloca(size)) + && GetNetworkParams(info, &size) == ERROR_SUCCESS) + { + strncpy(name, info->HostName, len); + debug_printf ("gethostname %s", name); + return 0; } - debug_printf ("name %s", name); - res = 0; + __seterrno (); } - __except (EFAULT) {} + __except (EFAULT) __endtry - return res; + return -1; } extern "C" int @@ -750,6 +744,30 @@ sethostname (const char *name, size_t len) return 0; } +/* getdomainname: 4.4BSD */ +extern "C" int +getdomainname (char *domain, size_t len) +{ + __try + { + PFIXED_INFO info = NULL; + ULONG size = 0; + + if (GetNetworkParams(info, &size) == ERROR_BUFFER_OVERFLOW + && (info = (PFIXED_INFO) alloca(size)) + && GetNetworkParams(info, &size) == ERROR_SUCCESS) + { + strncpy(domain, info->DomainName, len); + debug_printf ("gethostname %s", domain); + return 0; + } + __seterrno (); + } + __except (EFAULT) + __endtry + return -1; +} + /* exported as gethostbyname: POSIX.1-2001 */ extern "C" struct hostent * cygwin_gethostbyname (const char *name) @@ -1406,29 +1424,6 @@ cygwin_send (int fd, const void *buf, size_t len, int flags) return res; } -/* getdomainname: 4.4BSD */ -extern "C" int -getdomainname (char *domain, size_t len) -{ - __try - { - PFIXED_INFO info = NULL; - ULONG size = 0; - - if (GetNetworkParams(info, &size) == ERROR_BUFFER_OVERFLOW - && (info = (PFIXED_INFO) alloca(size)) - && GetNetworkParams(info, &size) == ERROR_SUCCESS) - { - strncpy(domain, info->DomainName, len); - return 0; - } - __seterrno (); - } - __except (EFAULT) - __endtry - return -1; -} - /* Fill out an ifconf struct. */ struct gaa_wa { |