From 57f80070ccd8461a224cc84b255844539ab72a8d Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 30 May 2020 11:04:02 +0200 Subject: [PATCH] Don't assume that UNICODE is not defined. Many Windows API functions are defined differently (redirecting to a function with suffix 'W') if the application defines the macro UNICODE than by default (redirecting to a function with suffix 'A'). * lib/clean-temp.c (OSVERSIONINFO, GetVersionEx): Redirect to the variant with suffix 'A'. * lib/dirent-private.h (WIN32_FIND_DATA): Likewise. * lib/gc-gnulib.c (CryptAcquireContext): Likewise. * lib/getaddrinfo.c (GetModuleHandle): Likewise. * lib/getlogin.c (GetUserName): Likewise. * lib/getlogin_r.c (GetUserName): Likewise. * lib/gettimeofday.c (LoadLibrary): Likewise. * lib/isatty.c (LoadLibrary, QueryFullProcessImageName): Likewise. * lib/link.c (GetModuleHandle, CreateHardLink): Likewise. * lib/localename.c (GetLocaleInfo, EnumSystemLocales): Likewise. * lib/mountlist.c (GetDriveType): Likewise. * lib/nonblocking.c (GetNamedPipeHandleState): Likewise. * lib/opendir.c (WIN32_FIND_DATA, GetFullPathName, FindFirstFile): Likewise. * lib/physmem.c (GetModuleHandle): Likewise. * lib/poll.c (GetModuleHandle, PeekConsoleInput, CreateEvent, PeekMessage, DispatchMessage): Likewise. * lib/progreloc.c (GetModuleFileName): Likewise. * lib/putenv.c (SetEnvironmentVariable): Likewise. * lib/read.c (GetNamedPipeHandleState): Likewise. * lib/readdir.c (FindNextFile): Likewise. * lib/relocatable.c (GetModuleFileName): Likewise. * lib/rename.c (MoveFileEx): Likewise. * lib/rewinddir.c (FindFirstFile): Likewise. * lib/select.c (GetModuleHandle, PeekConsoleInput, CreateEvent, PeekMessage, DispatchMessage): Likewise. * lib/sethostname.c (GetComputerNameEx, SetComputerNameEx): Likewise. * lib/socket.c (WSASocket): Likewise. * lib/stat-w32.c (LoadLibrary, GetFinalPathNameByHandle): Likewise. * lib/stat.c (WIN32_FIND_DATA, CreateFile, FindFirstFile): Likewise. * lib/stdio-read.c (GetNamedPipeHandleState): Likewise. * lib/stdio-write.c (GetNamedPipeHandleState): Likewise. * lib/tmpdir.c (GetTempPath): Likewise. * lib/tmpfile.c (OSVERSIONINFO, GetVersionEx, GetTempPath): Likewise. * lib/uname.c (OSVERSIONINFO, GetVersionEx): Likewise. * lib/utime.c (CreateFile, GetFileAttributes): Likewise. * lib/windows-cond.c (CreateEvent): Likewise. * lib/windows-rwlock.c (CreateEvent): Likewise. * lib/windows-timedmutex.c (CreateEvent): Likewise. * lib/windows-timedrecmutex.c (CreateEvent): Likewise. * lib/windows-timedrwlock.c (CreateEvent): Likewise. * lib/write.c (GetNamedPipeHandleState): Likewise. --- ChangeLog | 50 +++++++++++++++++++++++++++++++++++++ lib/clean-temp.c | 8 ++++++ lib/dirent-private.h | 4 +++ lib/gc-gnulib.c | 6 +++++ lib/getaddrinfo.c | 4 +++ lib/getlogin.c | 3 +++ lib/getlogin_r.c | 3 +++ lib/gettimeofday.c | 4 +++ lib/isatty.c | 6 +++++ lib/link.c | 6 +++++ lib/localename.c | 5 ++++ lib/mountlist.c | 3 +++ lib/nonblocking.c | 4 +++ lib/opendir.c | 10 ++++++++ lib/physmem.c | 4 +++ lib/poll.c | 12 +++++++++ lib/progreloc.c | 6 +++++ lib/putenv.c | 6 +++++ lib/read.c | 4 +++ lib/readdir.c | 4 +++ lib/relocatable.c | 6 +++++ lib/rename.c | 4 +++ lib/rewinddir.c | 4 +++ lib/select.c | 12 +++++++++ lib/sethostname.c | 13 +++++----- lib/socket.c | 4 +++ lib/stat-w32.c | 6 +++++ lib/stat.c | 7 ++++++ lib/stdio-read.c | 4 +++ lib/stdio-write.c | 4 +++ lib/tmpdir.c | 6 +++++ lib/tmpfile.c | 8 ++++++ lib/uname.c | 46 +++++++++++++++++++--------------- lib/utime.c | 6 +++++ lib/windows-cond.c | 4 +++ lib/windows-rwlock.c | 4 +++ lib/windows-timedmutex.c | 4 +++ lib/windows-timedrecmutex.c | 4 +++ lib/windows-timedrwlock.c | 4 +++ lib/write.c | 4 +++ 40 files changed, 279 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 33b61863aa..bc21cf70b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,53 @@ +2020-05-30 Bruno Haible + + Don't assume that UNICODE is not defined. + Many Windows API functions are defined differently (redirecting to a + function with suffix 'W') if the application defines the macro UNICODE + than by default (redirecting to a function with suffix 'A'). + * lib/clean-temp.c (OSVERSIONINFO, GetVersionEx): Redirect to the + variant with suffix 'A'. + * lib/dirent-private.h (WIN32_FIND_DATA): Likewise. + * lib/gc-gnulib.c (CryptAcquireContext): Likewise. + * lib/getaddrinfo.c (GetModuleHandle): Likewise. + * lib/getlogin.c (GetUserName): Likewise. + * lib/getlogin_r.c (GetUserName): Likewise. + * lib/gettimeofday.c (LoadLibrary): Likewise. + * lib/isatty.c (LoadLibrary, QueryFullProcessImageName): Likewise. + * lib/link.c (GetModuleHandle, CreateHardLink): Likewise. + * lib/localename.c (GetLocaleInfo, EnumSystemLocales): Likewise. + * lib/mountlist.c (GetDriveType): Likewise. + * lib/nonblocking.c (GetNamedPipeHandleState): Likewise. + * lib/opendir.c (WIN32_FIND_DATA, GetFullPathName, FindFirstFile): + Likewise. + * lib/physmem.c (GetModuleHandle): Likewise. + * lib/poll.c (GetModuleHandle, PeekConsoleInput, CreateEvent, + PeekMessage, DispatchMessage): Likewise. + * lib/progreloc.c (GetModuleFileName): Likewise. + * lib/putenv.c (SetEnvironmentVariable): Likewise. + * lib/read.c (GetNamedPipeHandleState): Likewise. + * lib/readdir.c (FindNextFile): Likewise. + * lib/relocatable.c (GetModuleFileName): Likewise. + * lib/rename.c (MoveFileEx): Likewise. + * lib/rewinddir.c (FindFirstFile): Likewise. + * lib/select.c (GetModuleHandle, PeekConsoleInput, CreateEvent, + PeekMessage, DispatchMessage): Likewise. + * lib/sethostname.c (GetComputerNameEx, SetComputerNameEx): Likewise. + * lib/socket.c (WSASocket): Likewise. + * lib/stat-w32.c (LoadLibrary, GetFinalPathNameByHandle): Likewise. + * lib/stat.c (WIN32_FIND_DATA, CreateFile, FindFirstFile): Likewise. + * lib/stdio-read.c (GetNamedPipeHandleState): Likewise. + * lib/stdio-write.c (GetNamedPipeHandleState): Likewise. + * lib/tmpdir.c (GetTempPath): Likewise. + * lib/tmpfile.c (OSVERSIONINFO, GetVersionEx, GetTempPath): Likewise. + * lib/uname.c (OSVERSIONINFO, GetVersionEx): Likewise. + * lib/utime.c (CreateFile, GetFileAttributes): Likewise. + * lib/windows-cond.c (CreateEvent): Likewise. + * lib/windows-rwlock.c (CreateEvent): Likewise. + * lib/windows-timedmutex.c (CreateEvent): Likewise. + * lib/windows-timedrecmutex.c (CreateEvent): Likewise. + * lib/windows-timedrwlock.c (CreateEvent): Likewise. + * lib/write.c (GetNamedPipeHandleState): Likewise. + 2020-05-30 Bruno Haible physmem: Fix compilation errors on MSVC. diff --git a/lib/clean-temp.c b/lib/clean-temp.c index 8d3cbd9f53..c57d658171 100644 --- a/lib/clean-temp.c +++ b/lib/clean-temp.c @@ -66,6 +66,14 @@ # define PATH_MAX 1024 #endif +#if defined _WIN32 && ! defined __CYGWIN__ +/* Don't assume that UNICODE is not defined. */ +# undef OSVERSIONINFO +# define OSVERSIONINFO OSVERSIONINFOA +# undef GetVersionEx +# define GetVersionEx GetVersionExA +#endif + /* The use of 'volatile' in the types below (and ISO C 99 section 5.1.2.3.(5)) ensure that while constructing or modifying the data structures, the field diff --git a/lib/dirent-private.h b/lib/dirent-private.h index 4b4eba4e62..a3c684439f 100644 --- a/lib/dirent-private.h +++ b/lib/dirent-private.h @@ -20,6 +20,10 @@ #define WIN32_LEAN_AND_MEAN #include +/* Don't assume that UNICODE is not defined. */ +#undef WIN32_FIND_DATA +#define WIN32_FIND_DATA WIN32_FIND_DATAA + struct gl_directory { /* Status, or error code to produce in next readdir() call. diff --git a/lib/gc-gnulib.c b/lib/gc-gnulib.c index 8e9b88f075..84f42e43f8 100644 --- a/lib/gc-gnulib.c +++ b/lib/gc-gnulib.c @@ -89,6 +89,12 @@ HCRYPTPROV g_hProv = 0; # endif #endif +#if defined _WIN32 && ! defined __CYGWIN__ +/* Don't assume that UNICODE is not defined. */ +# undef CryptAcquireContext +# define CryptAcquireContext CryptAcquireContextA +#endif + Gc_rc gc_init (void) { diff --git a/lib/getaddrinfo.c b/lib/getaddrinfo.c index 1db9be8698..8d2c01c996 100644 --- a/lib/getaddrinfo.c +++ b/lib/getaddrinfo.c @@ -86,6 +86,10 @@ freeaddrinfo (struct addrinfo *ai) # ifdef WINDOWS_NATIVE +/* Don't assume that UNICODE is not defined. */ +# undef GetModuleHandle +# define GetModuleHandle GetModuleHandleA + # if !(_WIN32_WINNT >= _WIN32_WINNT_WINXP) /* Avoid warnings from gcc -Wcast-function-type. */ diff --git a/lib/getlogin.c b/lib/getlogin.c index 5863feb77c..af93664278 100644 --- a/lib/getlogin.c +++ b/lib/getlogin.c @@ -25,6 +25,9 @@ #if defined _WIN32 && ! defined __CYGWIN__ # define WIN32_LEAN_AND_MEAN # include +/* Don't assume that UNICODE is not defined. */ +# undef GetUserName +# define GetUserName GetUserNameA #endif char * diff --git a/lib/getlogin_r.c b/lib/getlogin_r.c index 598a6e4708..2506b1b5ff 100644 --- a/lib/getlogin_r.c +++ b/lib/getlogin_r.c @@ -30,6 +30,9 @@ #if defined _WIN32 && ! defined __CYGWIN__ # define WIN32_LEAN_AND_MEAN # include +/* Don't assume that UNICODE is not defined. */ +# undef GetUserName +# define GetUserName GetUserNameA #else # if !HAVE_DECL_GETLOGIN extern char *getlogin (void); diff --git a/lib/gettimeofday.c b/lib/gettimeofday.c index 93914ba920..305ab984e0 100644 --- a/lib/gettimeofday.c +++ b/lib/gettimeofday.c @@ -33,6 +33,10 @@ #ifdef WINDOWS_NATIVE +/* Don't assume that UNICODE is not defined. */ +# undef LoadLibrary +# define LoadLibrary LoadLibraryA + # if !(_WIN32_WINNT >= _WIN32_WINNT_WIN8) /* Avoid warnings from gcc -Wcast-function-type. */ diff --git a/lib/isatty.c b/lib/isatty.c index 4c5b8e378f..7c278ec097 100644 --- a/lib/isatty.c +++ b/lib/isatty.c @@ -39,6 +39,12 @@ # include #endif +/* Don't assume that UNICODE is not defined. */ +#undef LoadLibrary +#define LoadLibrary LoadLibraryA +#undef QueryFullProcessImageName +#define QueryFullProcessImageName QueryFullProcessImageNameA + #if !(_WIN32_WINNT >= _WIN32_WINNT_VISTA) /* Avoid warnings from gcc -Wcast-function-type. */ diff --git a/lib/link.c b/lib/link.c index 8680e3e985..797cdf8b9b 100644 --- a/lib/link.c +++ b/lib/link.c @@ -30,6 +30,12 @@ # define WIN32_LEAN_AND_MEAN # include +/* Don't assume that UNICODE is not defined. */ +# undef GetModuleHandle +# define GetModuleHandle GetModuleHandleA +# undef CreateHardLink +# define CreateHardLink CreateHardLinkA + # if !(_WIN32_WINNT >= _WIN32_WINNT_WINXP) /* Avoid warnings from gcc -Wcast-function-type. */ diff --git a/lib/localename.c b/lib/localename.c index 4046a0bb61..dc60b07c56 100644 --- a/lib/localename.c +++ b/lib/localename.c @@ -1150,6 +1150,11 @@ extern char * getlocalename_l(int, locale_t); # ifndef LOCALE_NAME_MAX_LENGTH # define LOCALE_NAME_MAX_LENGTH 85 # endif +/* Don't assume that UNICODE is not defined. */ +# undef GetLocaleInfo +# define GetLocaleInfo GetLocaleInfoA +# undef EnumSystemLocales +# define EnumSystemLocales EnumSystemLocalesA #endif /* We want to use the system's setlocale() function here, not the gnulib diff --git a/lib/mountlist.c b/lib/mountlist.c index 9cf78c82e0..ca1be63f21 100644 --- a/lib/mountlist.c +++ b/lib/mountlist.c @@ -195,6 +195,9 @@ #ifdef __CYGWIN__ # include +/* Don't assume that UNICODE is not defined. */ +# undef GetDriveType +# define GetDriveType GetDriveTypeA # define ME_REMOTE me_remote /* All cygwin mount points include ':' or start with '//'; so it requires a native Windows call to determine remote disks. */ diff --git a/lib/nonblocking.c b/lib/nonblocking.c index b354e74cef..0c4e5f8ee0 100644 --- a/lib/nonblocking.c +++ b/lib/nonblocking.c @@ -38,6 +38,10 @@ # include # endif +/* Don't assume that UNICODE is not defined. */ +# undef GetNamedPipeHandleState +# define GetNamedPipeHandleState GetNamedPipeHandleStateA + int get_nonblocking_flag (int desc) { diff --git a/lib/opendir.c b/lib/opendir.c index 162ae4a03e..500fa44f61 100644 --- a/lib/opendir.c +++ b/lib/opendir.c @@ -45,6 +45,16 @@ # include #endif +#if defined _WIN32 && ! defined __CYGWIN__ +/* Don't assume that UNICODE is not defined. */ +# undef WIN32_FIND_DATA +# define WIN32_FIND_DATA WIN32_FIND_DATAA +# undef GetFullPathName +# define GetFullPathName GetFullPathNameA +# undef FindFirstFile +# define FindFirstFile FindFirstFileA +#endif + DIR * opendir (const char *dir_name) { diff --git a/lib/physmem.c b/lib/physmem.c index 6f0c5ef84a..db1bb07d6b 100644 --- a/lib/physmem.c +++ b/lib/physmem.c @@ -63,6 +63,10 @@ # define WIN32_LEAN_AND_MEAN # include +/* Don't assume that UNICODE is not defined. */ +# undef GetModuleHandle +# define GetModuleHandle GetModuleHandleA + /* Avoid warnings from gcc -Wcast-function-type. */ # define GetProcAddress \ (void *) GetProcAddress diff --git a/lib/poll.c b/lib/poll.c index 53bbafee2f..61dd639eea 100644 --- a/lib/poll.c +++ b/lib/poll.c @@ -76,6 +76,18 @@ #ifdef WINDOWS_NATIVE +/* Don't assume that UNICODE is not defined. */ +# undef GetModuleHandle +# define GetModuleHandle GetModuleHandleA +# undef PeekConsoleInput +# define PeekConsoleInput PeekConsoleInputA +# undef CreateEvent +# define CreateEvent CreateEventA +# undef PeekMessage +# define PeekMessage PeekMessageA +# undef DispatchMessage +# define DispatchMessage DispatchMessageA + /* Do *not* use the function WSAPoll because there is a bug named “Windows 8 Bugs 309411 - WSAPoll does not diff --git a/lib/progreloc.c b/lib/progreloc.c index de00bf6333..ab0007ca06 100644 --- a/lib/progreloc.c +++ b/lib/progreloc.c @@ -80,6 +80,12 @@ one. */ extern char * canonicalize_file_name (const char *name); +#if defined WINDOWS_NATIVE +/* Don't assume that UNICODE is not defined. */ +# undef GetModuleFileName +# define GetModuleFileName GetModuleFileNameA +#endif + /* Pathname support. ISSLASH(C) tests whether C is a directory separator character. IS_FILE_NAME_WITH_DIR(P) tests whether P contains a directory specification. diff --git a/lib/putenv.c b/lib/putenv.c index 9e862e63d3..ce0c752aab 100644 --- a/lib/putenv.c +++ b/lib/putenv.c @@ -58,6 +58,12 @@ __libc_lock_define_initialized (static, envlock) # define UNLOCK #endif +#if defined _WIN32 && ! defined __CYGWIN__ +/* Don't assume that UNICODE is not defined. */ +# undef SetEnvironmentVariable +# define SetEnvironmentVariable SetEnvironmentVariableA +#endif + static int _unsetenv (const char *name) { diff --git a/lib/read.c b/lib/read.c index 407738b90a..90d1053052 100644 --- a/lib/read.c +++ b/lib/read.c @@ -37,6 +37,10 @@ # include # endif +/* Don't assume that UNICODE is not defined. */ +# undef GetNamedPipeHandleState +# define GetNamedPipeHandleState GetNamedPipeHandleStateA + # undef read # if HAVE_MSVC_INVALID_PARAMETER_HANDLER diff --git a/lib/readdir.c b/lib/readdir.c index 1a02ce4173..91a351650d 100644 --- a/lib/readdir.c +++ b/lib/readdir.c @@ -24,6 +24,10 @@ #include "dirent-private.h" +/* Don't assume that UNICODE is not defined. */ +#undef FindNextFile +#define FindNextFile FindNextFileA + struct dirent * readdir (DIR *dirp) { diff --git a/lib/relocatable.c b/lib/relocatable.c index e4b867b9e9..04fb22e0f8 100644 --- a/lib/relocatable.c +++ b/lib/relocatable.c @@ -65,6 +65,12 @@ # include #endif +#if defined _WIN32 && !defined __CYGWIN__ +/* Don't assume that UNICODE is not defined. */ +# undef GetModuleFileName +# define GetModuleFileName GetModuleFileNameA +#endif + /* Faked cheap 'bool'. */ #undef bool #undef false diff --git a/lib/rename.c b/lib/rename.c index 09881e8cfd..108dc40c4f 100644 --- a/lib/rename.c +++ b/lib/rename.c @@ -39,6 +39,10 @@ # include "dirname.h" +/* Don't assume that UNICODE is not defined. */ +# undef MoveFileEx +# define MoveFileEx MoveFileExA + /* Rename the file SRC to DST. This replacement is necessary on Windows, on which the system rename function will not replace an existing DST. */ diff --git a/lib/rewinddir.c b/lib/rewinddir.c index d8ae71405a..a18943d7d6 100644 --- a/lib/rewinddir.c +++ b/lib/rewinddir.c @@ -23,6 +23,10 @@ #include "dirent-private.h" +/* Don't assume that UNICODE is not defined. */ +#undef FindFirstFile +#define FindFirstFile FindFirstFileA + void rewinddir (DIR *dirp) { diff --git a/lib/select.c b/lib/select.c index 4467eae84b..b2234ea334 100644 --- a/lib/select.c +++ b/lib/select.c @@ -47,6 +47,18 @@ #undef select +/* Don't assume that UNICODE is not defined. */ +#undef GetModuleHandle +#define GetModuleHandle GetModuleHandleA +#undef PeekConsoleInput +#define PeekConsoleInput PeekConsoleInputA +#undef CreateEvent +#define CreateEvent CreateEventA +#undef PeekMessage +#define PeekMessage PeekMessageA +#undef DispatchMessage +#define DispatchMessage DispatchMessageA + /* Avoid warnings from gcc -Wcast-function-type. */ #define GetProcAddress \ (void *) GetProcAddress diff --git a/lib/sethostname.c b/lib/sethostname.c index 96318fb801..52064df46a 100644 --- a/lib/sethostname.c +++ b/lib/sethostname.c @@ -103,13 +103,12 @@ sethostname (const char *name, size_t len) # include # include -/* The mingw header files don't define GetComputerNameEx, SetComputerNameEx. */ -# ifndef GetComputerNameEx -# define GetComputerNameEx GetComputerNameExA -# endif -# ifndef SetComputerNameEx -# define SetComputerNameEx SetComputerNameExA -# endif + +/* Don't assume that UNICODE is not defined. */ +# undef GetComputerNameEx +# define GetComputerNameEx GetComputerNameExA +# undef SetComputerNameEx +# define SetComputerNameEx SetComputerNameExA /* Set up to LEN chars of NAME as system hostname. Return 0 if ok, set errno and return -1 on error. */ diff --git a/lib/socket.c b/lib/socket.c index 67c6b1e877..ebf777f25f 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -28,6 +28,10 @@ #include "sockets.h" +/* Don't assume that UNICODE is not defined. */ +#undef WSASocket +#define WSASocket WSASocketA + int rpl_socket (int domain, int type, int protocol) { diff --git a/lib/stat-w32.c b/lib/stat-w32.c index cca12dd9cd..19bdfaa379 100644 --- a/lib/stat-w32.c +++ b/lib/stat-w32.c @@ -40,6 +40,12 @@ #include "pathmax.h" #include "verify.h" +/* Don't assume that UNICODE is not defined. */ +#undef LoadLibrary +#define LoadLibrary LoadLibraryA +#undef GetFinalPathNameByHandle +#define GetFinalPathNameByHandle GetFinalPathNameByHandleA + #if !(_WIN32_WINNT >= _WIN32_WINNT_VISTA) /* Avoid warnings from gcc -Wcast-function-type. */ diff --git a/lib/stat.c b/lib/stat.c index e074e6a0a0..9d3965d3ce 100644 --- a/lib/stat.c +++ b/lib/stat.c @@ -65,6 +65,13 @@ orig_stat (const char *filename, struct stat *buf) # define WIN32_LEAN_AND_MEAN # include # include "stat-w32.h" +/* Don't assume that UNICODE is not defined. */ +# undef WIN32_FIND_DATA +# define WIN32_FIND_DATA WIN32_FIND_DATAA +# undef CreateFile +# define CreateFile CreateFileA +# undef FindFirstFile +# define FindFirstFile FindFirstFileA #endif #ifdef WINDOWS_NATIVE diff --git a/lib/stdio-read.c b/lib/stdio-read.c index 874c9b1134..e63a327691 100644 --- a/lib/stdio-read.c +++ b/lib/stdio-read.c @@ -43,6 +43,10 @@ # include # endif +/* Don't assume that UNICODE is not defined. */ +# undef GetNamedPipeHandleState +# define GetNamedPipeHandleState GetNamedPipeHandleStateA + # define CALL_WITH_ERRNO_FIX(RETTYPE, EXPRESSION, FAILED) \ if (ferror (stream)) \ return (EXPRESSION); \ diff --git a/lib/stdio-write.c b/lib/stdio-write.c index 41bc74c6f9..778e7cf16d 100644 --- a/lib/stdio-write.c +++ b/lib/stdio-write.c @@ -45,6 +45,10 @@ # include # endif +/* Don't assume that UNICODE is not defined. */ +# undef GetNamedPipeHandleState +# define GetNamedPipeHandleState GetNamedPipeHandleStateA + # if GNULIB_NONBLOCKING # define CLEAR_ERRNO \ errno = 0; diff --git a/lib/tmpdir.c b/lib/tmpdir.c index 74ae359262..28ff99f58a 100644 --- a/lib/tmpdir.c +++ b/lib/tmpdir.c @@ -49,6 +49,12 @@ #include "pathmax.h" +#if defined _WIN32 && ! defined __CYGWIN__ +/* Don't assume that UNICODE is not defined. */ +# undef GetTempPath +# define GetTempPath GetTempPathA +#endif + #if _LIBC # define struct_stat64 struct stat64 #else diff --git a/lib/tmpfile.c b/lib/tmpfile.c index 99d6752bb1..667c0f234e 100644 --- a/lib/tmpfile.c +++ b/lib/tmpfile.c @@ -52,6 +52,14 @@ #if defined _WIN32 && ! defined __CYGWIN__ /* A native Windows platforms. */ +/* Don't assume that UNICODE is not defined. */ +# undef OSVERSIONINFO +# define OSVERSIONINFO OSVERSIONINFOA +# undef GetVersionEx +# define GetVersionEx GetVersionExA +# undef GetTempPath +# define GetTempPath GetTempPathA + /* On Windows, opening a file with _O_TEMPORARY has the effect of passing the FILE_FLAG_DELETE_ON_CLOSE flag to CreateFile(), which has the effect of deleting the file when it is closed - even when the program crashes. diff --git a/lib/uname.c b/lib/uname.c index d4778a8e3d..cb6dd28ea0 100644 --- a/lib/uname.c +++ b/lib/uname.c @@ -22,29 +22,35 @@ /* This file provides an implementation only for the native Windows API. */ #if defined _WIN32 && ! defined __CYGWIN__ -#include -#include -#include -#include -#include +# include +# include +# include +# include +# include /* Mingw headers don't have all the platform codes. */ -#ifndef VER_PLATFORM_WIN32_CE -# define VER_PLATFORM_WIN32_CE 3 -#endif +# ifndef VER_PLATFORM_WIN32_CE +# define VER_PLATFORM_WIN32_CE 3 +# endif /* Some headers don't have all the processor architecture codes. */ -#ifndef PROCESSOR_ARCHITECTURE_AMD64 -# define PROCESSOR_ARCHITECTURE_AMD64 9 -#endif -#ifndef PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 -# define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 -#endif +# ifndef PROCESSOR_ARCHITECTURE_AMD64 +# define PROCESSOR_ARCHITECTURE_AMD64 9 +# endif +# ifndef PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 +# define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 +# endif /* Mingw headers don't have the latest processor codes. */ -#ifndef PROCESSOR_AMD_X8664 -# define PROCESSOR_AMD_X8664 8664 -#endif +# ifndef PROCESSOR_AMD_X8664 +# define PROCESSOR_AMD_X8664 8664 +# endif + +/* Don't assume that UNICODE is not defined. */ +# undef OSVERSIONINFO +# define OSVERSIONINFO OSVERSIONINFOA +# undef GetVersionEx +# define GetVersionEx GetVersionExA int uname (struct utsname *buf) @@ -108,7 +114,7 @@ uname (struct utsname *buf) super_version = ""; /* Fill in sysname. */ -#ifdef __MINGW32__ +# ifdef __MINGW32__ /* Returns a string compatible with the MSYS uname.exe program, so that no further changes are needed to GNU config.guess. For example, @@ -117,9 +123,9 @@ uname (struct utsname *buf) sprintf (buf->sysname, "MINGW32_%s-%u.%u", super_version, (unsigned int) version.dwMajorVersion, (unsigned int) version.dwMinorVersion); -#else +# else sprintf (buf->sysname, "Windows%s", super_version); -#endif +# endif /* Fill in release, version. */ /* The MSYS uname.exe programs uses strings from a modified Cygwin runtime: diff --git a/lib/utime.c b/lib/utime.c index 77968dca7f..c35eb169e6 100644 --- a/lib/utime.c +++ b/lib/utime.c @@ -29,6 +29,12 @@ # include "filename.h" # include "malloca.h" +/* Don't assume that UNICODE is not defined. */ +# undef CreateFile +# define CreateFile CreateFileA +# undef GetFileAttributes +# define GetFileAttributes GetFileAttributesA + int _gl_utimens_windows (const char *name, struct timespec ts[2]) { diff --git a/lib/windows-cond.c b/lib/windows-cond.c index 44586a6d2c..45e9b836ca 100644 --- a/lib/windows-cond.c +++ b/lib/windows-cond.c @@ -27,6 +27,10 @@ #include #include +/* Don't assume that UNICODE is not defined. */ +#undef CreateEvent +#define CreateEvent CreateEventA + /* In this file, the waitqueues are implemented as linked lists. */ #define glwthread_waitqueue_t glwthread_linked_waitqueue_t diff --git a/lib/windows-rwlock.c b/lib/windows-rwlock.c index 85a8552358..6afb45b090 100644 --- a/lib/windows-rwlock.c +++ b/lib/windows-rwlock.c @@ -25,6 +25,10 @@ #include #include +/* Don't assume that UNICODE is not defined. */ +#undef CreateEvent +#define CreateEvent CreateEventA + /* In this file, the waitqueues are implemented as circular arrays. */ #define glwthread_waitqueue_t glwthread_carray_waitqueue_t diff --git a/lib/windows-timedmutex.c b/lib/windows-timedmutex.c index e36f4107ba..788fe40fc3 100644 --- a/lib/windows-timedmutex.c +++ b/lib/windows-timedmutex.c @@ -26,6 +26,10 @@ #include #include +/* Don't assume that UNICODE is not defined. */ +#undef CreateEvent +#define CreateEvent CreateEventA + int glwthread_timedmutex_init (glwthread_timedmutex_t *mutex) { diff --git a/lib/windows-timedrecmutex.c b/lib/windows-timedrecmutex.c index 81fcdb66da..d244bfd015 100644 --- a/lib/windows-timedrecmutex.c +++ b/lib/windows-timedrecmutex.c @@ -26,6 +26,10 @@ #include #include +/* Don't assume that UNICODE is not defined. */ +#undef CreateEvent +#define CreateEvent CreateEventA + int glwthread_timedrecmutex_init (glwthread_timedrecmutex_t *mutex) { diff --git a/lib/windows-timedrwlock.c b/lib/windows-timedrwlock.c index 793e8b76b2..42ad7461d2 100644 --- a/lib/windows-timedrwlock.c +++ b/lib/windows-timedrwlock.c @@ -26,6 +26,10 @@ #include #include +/* Don't assume that UNICODE is not defined. */ +#undef CreateEvent +#define CreateEvent CreateEventA + /* In this file, the waitqueues are implemented as linked lists. */ #define glwthread_waitqueue_t glwthread_clinked_waitqueue_t diff --git a/lib/write.c b/lib/write.c index a3912838cd..581e674b40 100644 --- a/lib/write.c +++ b/lib/write.c @@ -43,6 +43,10 @@ # include # endif +/* Don't assume that UNICODE is not defined. */ +# undef GetNamedPipeHandleState +# define GetNamedPipeHandleState GetNamedPipeHandleStateA + # undef write # if HAVE_MSVC_INVALID_PARAMETER_HANDLER -- 2.39.5