diff options
author | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-22 17:43:43 -0300 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-22 17:43:43 -0300 |
commit | a926878ddbd5a98b272c22171ce58663fc04c3e0 (patch) | |
tree | 86af256e5d9a9c06263c00adc90e5fe348008c43 /gcc/ada/socket.c | |
parent | 542730f087133690b47e036dfd43eb0db8a650ce (diff) | |
parent | 07cbaed8ba7d1b6e4ab3a9f44175502a4e1ecdb1 (diff) | |
download | gcc-devel/autopar_devel.zip gcc-devel/autopar_devel.tar.gz gcc-devel/autopar_devel.tar.bz2 |
Merge branch 'autopar_rebase2' into autopar_develdevel/autopar_devel
Quickly commit changes in the rebase branch.
Diffstat (limited to 'gcc/ada/socket.c')
-rw-r--r-- | gcc/ada/socket.c | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/gcc/ada/socket.c b/gcc/ada/socket.c index 6ca9d50..8333b6b 100644 --- a/gcc/ada/socket.c +++ b/gcc/ada/socket.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2003-2019, Free Software Foundation, Inc. * + * Copyright (C) 2003-2020, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * @@ -333,8 +333,8 @@ __gnat_getservbyport (int port, const char *proto, } #else int -__gnat_gethostbyname (const char *name, - struct hostent *ret, char *buf, size_t buflen, +__gnat_gethostbyname (const char *name, struct hostent *ret, + char *buf ATTRIBUTE_UNUSED, size_t buflen ATTRIBUTE_UNUSED, int *h_errnop) { struct hostent *rh; @@ -349,8 +349,8 @@ __gnat_gethostbyname (const char *name, } int -__gnat_gethostbyaddr (const char *addr, int len, int type, - struct hostent *ret, char *buf, size_t buflen, +__gnat_gethostbyaddr (const char *addr, int len, int type, struct hostent *ret, + char *buf ATTRIBUTE_UNUSED, size_t buflen ATTRIBUTE_UNUSED, int *h_errnop) { struct hostent *rh; @@ -365,8 +365,8 @@ __gnat_gethostbyaddr (const char *addr, int len, int type, } int -__gnat_getservbyname (const char *name, const char *proto, - struct servent *ret, char *buf, size_t buflen) +__gnat_getservbyname (const char *name, const char *proto, struct servent *ret, + char *buf ATTRIBUTE_UNUSED, size_t buflen ATTRIBUTE_UNUSED) { struct servent *rh; rh = getservbyname (name, proto); @@ -377,8 +377,8 @@ __gnat_getservbyname (const char *name, const char *proto, } int -__gnat_getservbyport (int port, const char *proto, - struct servent *ret, char *buf, size_t buflen) +__gnat_getservbyport (int port, const char *proto, struct servent *ret, + char *buf ATTRIBUTE_UNUSED, size_t buflen ATTRIBUTE_UNUSED) { struct servent *rh; rh = getservbyport (port, proto); @@ -397,19 +397,18 @@ __gnat_getservbyport (int port, const char *proto, void __gnat_last_socket_in_set (fd_set *set, int *last) { - int s; int l; l = -1; #ifdef _WIN32 /* More efficient method for NT. */ - for (s = 0; s < set->fd_count; s++) + for (unsigned int s = 0; s < set->fd_count; s++) if ((int) set->fd_array[s] > l) l = set->fd_array[s]; #else - for (s = *last; s != -1; s--) + for (int s = *last; s != -1; s--) if (FD_ISSET (s, set)) { l = s; @@ -517,7 +516,7 @@ __gnat_get_h_errno (void) { int __gnat_socket_ioctl (int fd, IOCTL_Req_T req, int *arg) { #if defined (_WIN32) - return ioctlsocket (fd, req, arg); + return ioctlsocket (fd, req, (unsigned long *)arg); #elif defined (__APPLE__) /* * On Darwin, req is an unsigned long, and we want to convert without sign @@ -553,7 +552,8 @@ __gnat_inet_pton (int af, const char *src, void *dst) { int rc; ss.ss_family = af; - rc = WSAStringToAddressA (src, af, NULL, (struct sockaddr *)&ss, &sslen); + rc = WSAStringToAddressA ((char *)src, af, NULL, (struct sockaddr *)&ss, + &sslen); if (rc == 0) { switch (af) { case AF_INET: @@ -803,10 +803,22 @@ int __gnat_minus_500ms() { #if defined (_WIN32) // Windows Server 2019 and Windows 8.0 do not need 500 millisecond socket // timeout correction. - return !(IsWindows8OrGreater() && !IsWindowsServer() - || IsWindowsVersionOrGreater(10, 0, 17763)); + if (IsWindowsServer()) { + OSVERSIONINFO osvi; + ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + // Documentation proposes to use IsWindowsVersionOrGreater(10, 0, 17763) + // but it does not compare by the build number (last parameter). + GetVersionEx(&osvi); + return osvi.dwMajorVersion < 10 + || (osvi.dwMajorVersion == 10 + && osvi.dwMinorVersion == 0 + && osvi.dwBuildNumber < 17763); + } else { + return !IsWindows8OrGreater(); + } #else - return 0; + return 0; #endif } |