Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2019-01-24 16:22:09 +0300
committerCorinna Vinschen <corinna@vinschen.de>2019-01-24 16:22:24 +0300
commit2166f7dc0d9ae212d9f663241501f6fd17b71e50 (patch)
tree0c193ae363eb3ebbac976d8f7c2eb59a547b9283 /winsup/cygwin/net.cc
parentc6171b9fde818b058b710c5e146bdecd963b7e9e (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.cc77
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 {