]> sourceware.org Git - newlib-cygwin.git/commitdiff
Cygwin: net: unify gethostname/getdomainname
authorCorinna Vinschen <corinna@vinschen.de>
Thu, 24 Jan 2019 13:22:09 +0000 (14:22 +0100)
committerCorinna Vinschen <corinna@vinschen.de>
Thu, 24 Jan 2019 13:22:24 +0000 (14:22 +0100)
Use info from same source (GetNetworkParams).
Also move getdomainname near gethostname in source.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
winsup/cygwin/net.cc

index 2af71f7e5f40dead0bc3d83effbe980e9478feba..cd296d19d631459ec6eb2c83a272b384b912938d 100644 (file)
@@ -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 {
This page took 0.037835 seconds and 5 git commands to generate.