diff --git a/src/backend/main/main.c b/src/backend/main/main.c index c4ef56dc6c..51959371ce 100644 --- a/src/backend/main/main.c +++ b/src/backend/main/main.c @@ -392,7 +392,7 @@ get_current_username(const char *progname) /* Allocate new memory because later getpwuid() calls can overwrite it. */ return strdup(pw->pw_name); #else - long namesize = 256 /* UNLEN */ + 1; + unsigned long namesize = 256 /* UNLEN */ + 1; char *name; name = malloc(namesize); diff --git a/src/backend/port/win32/socket.c b/src/backend/port/win32/socket.c index dbbd4a35d1..e2ae0f8e4f 100644 --- a/src/backend/port/win32/socket.c +++ b/src/backend/port/win32/socket.c @@ -369,8 +369,18 @@ pgwin32_recv(SOCKET s, char *buf, int len, int f) return -1; } +/* + * The second argument to send() is defined by SUS to be a "const void *" + * and so we use the same signature here to keep compilers happy when + * handling callers. + * + * But the buf member of a WSABUF struct is defined as "char *", so we cast + * the second argument to that here when assigning it, also to keep compilers + * happy. + */ + int -pgwin32_send(SOCKET s, char *buf, int len, int flags) +pgwin32_send(SOCKET s, const void *buf, int len, int flags) { WSABUF wbuf; int r; @@ -380,7 +390,7 @@ pgwin32_send(SOCKET s, char *buf, int len, int flags) return -1; wbuf.len = len; - wbuf.buf = buf; + wbuf.buf = (char *) buf; /* * Readiness of socket to send data to UDP socket may be not true: socket diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index 8208d3cad9..7c941dd991 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -63,7 +63,16 @@ #include "utils/syscache.h" #ifdef WIN32 +/* + * This Windows file defines StrNCpy. We don't need it here, so we undefine + * it to keep the compiler quiet, and undefine it again after the file is + * included, so we don't accidentally use theirs. + */ +#undef StrNCpy #include +#ifdef StrNCpy +#undef STrNCpy +#endif #endif #define MAX_L10N_DATA 80 @@ -555,7 +564,9 @@ strftime_win32(char *dst, size_t dstlen, const wchar_t *format, const struct tm dst[len] = '\0'; if (encoding != PG_UTF8) { - char *convstr = pg_do_encoding_conversion(dst, len, PG_UTF8, encoding); + char *convstr = + (char *) pg_do_encoding_conversion((unsigned char *) dst, + len, PG_UTF8, encoding); if (dst != convstr) { diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index d26ff63e1d..3b321494e4 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -1561,7 +1561,7 @@ normalize_locale_name(char *new, const char *old) static void setup_collation(void) { -#ifdef HAVE_LOCALE_T +#if defined(HAVE_LOCALE_T) && !defined(WIN32) int i; FILE *locale_a_handle; char localebuf[NAMEDATALEN]; @@ -1687,10 +1687,10 @@ setup_collation(void) printf(_("No usable system locales were found.\n")); printf(_("Use the option \"--debug\" to see details.\n")); } -#else /* not HAVE_LOCALE_T */ +#else /* not HAVE_LOCALE_T && not WIN32 */ printf(_("not supported on this platform\n")); fflush(stdout); -#endif /* not HAVE_LOCALE_T */ +#endif /* not HAVE_LOCALE_T && not WIN32*/ } /* @@ -2387,7 +2387,10 @@ setlocales(void) #ifdef WIN32 typedef BOOL (WINAPI * __CreateRestrictedToken) (HANDLE, DWORD, DWORD, PSID_AND_ATTRIBUTES, DWORD, PLUID_AND_ATTRIBUTES, DWORD, PSID_AND_ATTRIBUTES, PHANDLE); +/* Windows API define missing from some versions of MingW headers */ +#ifndef DISABLE_MAX_PRIVILEGE #define DISABLE_MAX_PRIVILEGE 0x1 +#endif /* * Create a restricted token and execute the specified process with it. diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index 4e8d0b1d39..98de19fa38 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -1461,8 +1461,10 @@ typedef BOOL (WINAPI * __SetInformationJobObject) (HANDLE, JOBOBJECTINFOCLASS, L typedef BOOL (WINAPI * __AssignProcessToJobObject) (HANDLE, HANDLE); typedef BOOL (WINAPI * __QueryInformationJobObject) (HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD); -/* Windows API define missing from MingW headers */ +/* Windows API define missing from some versions of MingW headers */ +#ifndef DISABLE_MAX_PRIVILEGE #define DISABLE_MAX_PRIVILEGE 0x1 +#endif /* * Create a restricted token, a job object sandbox, and execute the specified diff --git a/src/include/port/win32.h b/src/include/port/win32.h index 2914a59811..34f4004129 100644 --- a/src/include/port/win32.h +++ b/src/include/port/win32.h @@ -336,7 +336,7 @@ SOCKET pgwin32_accept(SOCKET s, struct sockaddr * addr, int *addrlen); int pgwin32_connect(SOCKET s, const struct sockaddr * name, int namelen); int pgwin32_select(int nfds, fd_set *readfs, fd_set *writefds, fd_set *exceptfds, const struct timeval * timeout); int pgwin32_recv(SOCKET s, char *buf, int len, int flags); -int pgwin32_send(SOCKET s, char *buf, int len, int flags); +int pgwin32_send(SOCKET s, const void *buf, int len, int flags); const char *pgwin32_socket_strerror(int err); int pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout); diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index ac9134272c..b5418074ae 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -3551,7 +3551,7 @@ hv_store_string(HV *hv, const char *key, SV *val) * does not appear that hashes track UTF-8-ness of keys at all in Perl * 5.6. */ - hlen = -strlen(hkey); + hlen = - (int) strlen(hkey); ret = hv_store(hv, hkey, hlen, val, 0); if (hkey != key) @@ -3576,7 +3576,7 @@ hv_fetch_string(HV *hv, const char *key) GetDatabaseEncoding(), PG_UTF8); /* See notes in hv_store_string */ - hlen = -strlen(hkey); + hlen = - (int) strlen(hkey); ret = hv_fetch(hv, hkey, hlen, 0); if (hkey != key) diff --git a/src/port/noblock.c b/src/port/noblock.c index 9a90f6826e..883697535d 100644 --- a/src/port/noblock.c +++ b/src/port/noblock.c @@ -23,7 +23,7 @@ pg_set_noblock(pgsocket sock) #if !defined(WIN32) return (fcntl(sock, F_SETFL, O_NONBLOCK) != -1); #else - long ioctlsocket_ret = 1; + unsigned long ioctlsocket_ret = 1; /* Returns non-0 on failure, while fcntl() returns -1 on failure */ return (ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0); @@ -42,7 +42,7 @@ pg_set_block(pgsocket sock) return false; return true; #else - long ioctlsocket_ret = 0; + unsigned long ioctlsocket_ret = 0; /* Returns non-0 on failure, while fcntl() returns -1 on failure */ return (ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0); diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index 5fe3724c82..5dba7eb8f2 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -140,9 +140,11 @@ __attribute__((format(printf, 2, 3))); #ifdef WIN32 typedef BOOL (WINAPI * __CreateRestrictedToken) (HANDLE, DWORD, DWORD, PSID_AND_ATTRIBUTES, DWORD, PLUID_AND_ATTRIBUTES, DWORD, PSID_AND_ATTRIBUTES, PHANDLE); -/* Windows API define missing from MingW headers */ +/* Windows API define missing from some versions of MingW headers */ +#ifndef DISABLE_MAX_PRIVILEGE #define DISABLE_MAX_PRIVILEGE 0x1 #endif +#endif /* * allow core files if possible. diff --git a/src/timezone/pgtz.c b/src/timezone/pgtz.c index 382a4e04f5..cb66f6380b 100644 --- a/src/timezone/pgtz.c +++ b/src/timezone/pgtz.c @@ -1158,7 +1158,7 @@ identify_system_timezone(void) memset(zonename, 0, sizeof(zonename)); namesize = sizeof(zonename); - if ((r = RegQueryValueEx(key, "Std", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS) + if ((r = RegQueryValueEx(key, "Std", NULL, NULL, (unsigned char *) zonename, &namesize)) != ERROR_SUCCESS) { ereport(LOG, (errmsg_internal("could not query value for key \"std\" to identify system time zone \"%s\": %i", @@ -1175,7 +1175,7 @@ identify_system_timezone(void) } memset(zonename, 0, sizeof(zonename)); namesize = sizeof(zonename); - if ((r = RegQueryValueEx(key, "Dlt", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS) + if ((r = RegQueryValueEx(key, "Dlt", NULL, NULL, (unsigned char *) zonename, &namesize)) != ERROR_SUCCESS) { ereport(LOG, (errmsg_internal("could not query value for key \"dlt\" to identify system time zone \"%s\": %i",