From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-2.6 required=3.0 tests=AWL,BAYES_00, BULK_RE_SUSP_NTLD,FROM_SUSPICIOUS_NTLD,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 5A3C31F55B for ; Sat, 30 May 2020 12:46:31 +0000 (UTC) Received: from localhost ([::1]:56036 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jf0sg-0005Nz-A3 for normalperson@yhbt.net; Sat, 30 May 2020 08:46:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47118) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jf0sS-0005Lo-Bp for bug-gnulib@gnu.org; Sat, 30 May 2020 08:46:16 -0400 Received: from mout-p-201.mailbox.org ([2001:67c:2050::465:201]:34318) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1jf0sL-0002vX-I7 for bug-gnulib@gnu.org; Sat, 30 May 2020 08:46:15 -0400 Received: from smtp2.mailbox.org (smtp2.mailbox.org [IPv6:2001:67c:2050:105:465:1:2:0]) (using TLSv1.2 with cipher ECDHE-RSA-CHACHA20-POLY1305 (256/256 bits)) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 49Z1Q55BpmzQlJm; Sat, 30 May 2020 14:46:05 +0200 (CEST) X-Virus-Scanned: amavisd-new at heinlein-support.de Received: from smtp2.mailbox.org ([80.241.60.241]) by gerste.heinlein-support.de (gerste.heinlein-support.de [91.198.250.173]) (amavisd-new, port 10030) with ESMTP id zITzC8LczUh1; Sat, 30 May 2020 14:46:00 +0200 (CEST) Date: Sat, 30 May 2020 14:46:00 +0200 (CEST) From: Steve Lhomme To: Bruno Haible , bug-gnulib@gnu.org Message-ID: <1262823724.18090.1590842760428@office.mailbox.org> In-Reply-To: <6006694.lM23qYLBot@omega> References: <20200519062610.8378-1-robux4@ycbcr.xyz> <1770924.rSmPk4iC63@omega> <6006694.lM23qYLBot@omega> Subject: Re: Don't assume that UNICODE is not defined MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Priority: 3 Importance: Normal X-Rspamd-Queue-Id: 2977C1669 X-Rspamd-Score: -0.95 / 15.00 / 15.00 Received-SPF: pass client-ip=2001:67c:2050::465:201; envelope-from=robux4@ycbcr.xyz; helo=mout-p-201.mailbox.org X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Steve Lhomme Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: "bug-gnulib" Why not use the proper call in the first place rather than use a define ? It could be useful in a generic header used by all to make sure everyone us= es the right thing. But since you need to edit each file it would be cleane= r not to use any define at all and use the proper functions and structures = directly. > On May 30, 2020 11:16 AM Bruno Haible wrote: >=20 > =20 > I wrote: > > some types depend on > > whether UNICODE is defined or not [1]. >=20 > Some functions also depend whether UNICODE is defined or not. >=20 > Since UWP applications are meant to defined the macro UNICODE, but we wan= t > Gnulib to produce the same code, regardless whether UNICODE is defined or= not, > we need to either explicitly use the functions with 'A' suffix (which is = ugly) > or use #defines for redirection. >=20 > Fortunately, packages that use gnulib don't need to do this stuff; nor do= we > need to do it in the tests/ directory. Only the gnulib/lib/ directory may > reasonably be used with -DUNICODE, therefore only the gnulib/lib/ directo= ry > needs this workaround. >=20 >=20 > 2020-05-30 Bruno Haible >=20 > =09Don't assume that UNICODE is not defined. > =09Many Windows API functions are defined differently (redirecting to a > =09function with suffix 'W') if the application defines the macro UNICODE > =09than by default (redirecting to a function with suffix 'A'). > =09* lib/clean-temp.c (OSVERSIONINFO, GetVersionEx): Redirect to the > =09variant with suffix 'A'. > =09* lib/dirent-private.h (WIN32_FIND_DATA): Likewise. > =09* lib/gc-gnulib.c (CryptAcquireContext): Likewise. > =09* lib/getaddrinfo.c (GetModuleHandle): Likewise. > =09* lib/getlogin.c (GetUserName): Likewise. > =09* lib/getlogin_r.c (GetUserName): Likewise. > =09* lib/gettimeofday.c (LoadLibrary): Likewise. > =09* lib/isatty.c (LoadLibrary, QueryFullProcessImageName): Likewise. > =09* lib/link.c (GetModuleHandle, CreateHardLink): Likewise. > =09* lib/localename.c (GetLocaleInfo, EnumSystemLocales): Likewise. > =09* lib/mountlist.c (GetDriveType): Likewise. > =09* lib/nonblocking.c (GetNamedPipeHandleState): Likewise. > =09* lib/opendir.c (WIN32_FIND_DATA, GetFullPathName, FindFirstFile): > =09Likewise. > =09* lib/physmem.c (GetModuleHandle): Likewise. > =09* lib/poll.c (GetModuleHandle, PeekConsoleInput, CreateEvent, > =09PeekMessage, DispatchMessage): Likewise. > =09* lib/progreloc.c (GetModuleFileName): Likewise. > =09* lib/putenv.c (SetEnvironmentVariable): Likewise. > =09* lib/read.c (GetNamedPipeHandleState): Likewise. > =09* lib/readdir.c (FindNextFile): Likewise. > =09* lib/relocatable.c (GetModuleFileName): Likewise. > =09* lib/rename.c (MoveFileEx): Likewise. > =09* lib/rewinddir.c (FindFirstFile): Likewise. > =09* lib/select.c (GetModuleHandle, PeekConsoleInput, CreateEvent, > =09PeekMessage, DispatchMessage): Likewise. > =09* lib/sethostname.c (GetComputerNameEx, SetComputerNameEx): Likewise. > =09* lib/socket.c (WSASocket): Likewise. > =09* lib/stat-w32.c (LoadLibrary, GetFinalPathNameByHandle): Likewise. > =09* lib/stat.c (WIN32_FIND_DATA, CreateFile, FindFirstFile): Likewise. > =09* lib/stdio-read.c (GetNamedPipeHandleState): Likewise. > =09* lib/stdio-write.c (GetNamedPipeHandleState): Likewise. > =09* lib/tmpdir.c (GetTempPath): Likewise. > =09* lib/tmpfile.c (OSVERSIONINFO, GetVersionEx, GetTempPath): Likewise. > =09* lib/uname.c (OSVERSIONINFO, GetVersionEx): Likewise. > =09* lib/utime.c (CreateFile, GetFileAttributes): Likewise. > =09* lib/windows-cond.c (CreateEvent): Likewise. > =09* lib/windows-rwlock.c (CreateEvent): Likewise. > =09* lib/windows-timedmutex.c (CreateEvent): Likewise. > =09* lib/windows-timedrecmutex.c (CreateEvent): Likewise. > =09* lib/windows-timedrwlock.c (CreateEvent): Likewise. > =09* lib/write.c (GetNamedPipeHandleState): Likewise. >=20 > diff --git a/lib/clean-temp.c b/lib/clean-temp.c > index 8d3cbd9..c57d658 100644 > --- a/lib/clean-temp.c > +++ b/lib/clean-temp.c > @@ -66,6 +66,14 @@ > # define PATH_MAX 1024 > #endif > =20 > +#if defined _WIN32 && ! defined __CYGWIN__ > +/* Don't assume that UNICODE is not defined. */ > +# undef OSVERSIONINFO > +# define OSVERSIONINFO OSVERSIONINFOA > +# undef GetVersionEx > +# define GetVersionEx GetVersionExA > +#endif > + > =20 > /* 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 4b4eba4..a3c6844 100644 > --- a/lib/dirent-private.h > +++ b/lib/dirent-private.h > @@ -20,6 +20,10 @@ > #define WIN32_LEAN_AND_MEAN > #include > =20 > +/* 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 8e9b88f..84f42e4 100644 > --- a/lib/gc-gnulib.c > +++ b/lib/gc-gnulib.c > @@ -89,6 +89,12 @@ HCRYPTPROV g_hProv =3D 0; > # endif > #endif > =20 > +#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 1db9be8..8d2c01c 100644 > --- a/lib/getaddrinfo.c > +++ b/lib/getaddrinfo.c > @@ -86,6 +86,10 @@ freeaddrinfo (struct addrinfo *ai) > =20 > # ifdef WINDOWS_NATIVE > =20 > +/* Don't assume that UNICODE is not defined. */ > +# undef GetModuleHandle > +# define GetModuleHandle GetModuleHandleA > + > # if !(_WIN32_WINNT >=3D _WIN32_WINNT_WINXP) > =20 > /* Avoid warnings from gcc -Wcast-function-type. */ > diff --git a/lib/getlogin.c b/lib/getlogin.c > index 5863feb..af93664 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 > =20 > char * > diff --git a/lib/getlogin_r.c b/lib/getlogin_r.c > index 598a6e4..2506b1b 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 93914ba..305ab98 100644 > --- a/lib/gettimeofday.c > +++ b/lib/gettimeofday.c > @@ -33,6 +33,10 @@ > =20 > #ifdef WINDOWS_NATIVE > =20 > +/* Don't assume that UNICODE is not defined. */ > +# undef LoadLibrary > +# define LoadLibrary LoadLibraryA > + > # if !(_WIN32_WINNT >=3D _WIN32_WINNT_WIN8) > =20 > /* Avoid warnings from gcc -Wcast-function-type. */ > diff --git a/lib/isatty.c b/lib/isatty.c > index 4c5b8e3..7c278ec 100644 > --- a/lib/isatty.c > +++ b/lib/isatty.c > @@ -39,6 +39,12 @@ > # include > #endif > =20 > +/* Don't assume that UNICODE is not defined. */ > +#undef LoadLibrary > +#define LoadLibrary LoadLibraryA > +#undef QueryFullProcessImageName > +#define QueryFullProcessImageName QueryFullProcessImageNameA > + > #if !(_WIN32_WINNT >=3D _WIN32_WINNT_VISTA) > =20 > /* Avoid warnings from gcc -Wcast-function-type. */ > diff --git a/lib/link.c b/lib/link.c > index 8680e3e..797cdf8 100644 > --- a/lib/link.c > +++ b/lib/link.c > @@ -30,6 +30,12 @@ > # define WIN32_LEAN_AND_MEAN > # include > =20 > +/* Don't assume that UNICODE is not defined. */ > +# undef GetModuleHandle > +# define GetModuleHandle GetModuleHandleA > +# undef CreateHardLink > +# define CreateHardLink CreateHardLinkA > + > # if !(_WIN32_WINNT >=3D _WIN32_WINNT_WINXP) > =20 > /* Avoid warnings from gcc -Wcast-function-type. */ > diff --git a/lib/localename.c b/lib/localename.c > index 4046a0b..dc60b07 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 > =20 > /* We want to use the system's setlocale() function here, not the gnulib > diff --git a/lib/mountlist.c b/lib/mountlist.c > index 9cf78c8..ca1be63 100644 > --- a/lib/mountlist.c > +++ b/lib/mountlist.c > @@ -195,6 +195,9 @@ > =20 > #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 b354e74..0c4e5f8 100644 > --- a/lib/nonblocking.c > +++ b/lib/nonblocking.c > @@ -38,6 +38,10 @@ > # include > # endif > =20 > +/* 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 162ae4a..500fa44 100644 > --- a/lib/opendir.c > +++ b/lib/opendir.c > @@ -45,6 +45,16 @@ > # include > #endif > =20 > +#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 6f0c5ef..db1bb07 100644 > --- a/lib/physmem.c > +++ b/lib/physmem.c > @@ -63,6 +63,10 @@ > # define WIN32_LEAN_AND_MEAN > # include > =20 > +/* 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 53bbafe..61dd639 100644 > --- a/lib/poll.c > +++ b/lib/poll.c > @@ -76,6 +76,18 @@ > =20 > #ifdef WINDOWS_NATIVE > =20 > +/* 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 =E2=80=9CWindows 8 Bugs 309411 - WSAPoll= does not > diff --git a/lib/progreloc.c b/lib/progreloc.c > index de00bf6..ab0007c 100644 > --- a/lib/progreloc.c > +++ b/lib/progreloc.c > @@ -80,6 +80,12 @@ > one. */ > extern char * canonicalize_file_name (const char *name); > =20 > +#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 ch= aracter. > IS_FILE_NAME_WITH_DIR(P) tests whether P contains a directory specif= ication. > diff --git a/lib/putenv.c b/lib/putenv.c > index 9e862e6..ce0c752 100644 > --- a/lib/putenv.c > +++ b/lib/putenv.c > @@ -58,6 +58,12 @@ __libc_lock_define_initialized (static, envlock) > # define UNLOCK > #endif > =20 > +#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 407738b..90d1053 100644 > --- a/lib/read.c > +++ b/lib/read.c > @@ -37,6 +37,10 @@ > # include > # endif > =20 > +/* Don't assume that UNICODE is not defined. */ > +# undef GetNamedPipeHandleState > +# define GetNamedPipeHandleState GetNamedPipeHandleStateA > + > # undef read > =20 > # if HAVE_MSVC_INVALID_PARAMETER_HANDLER > diff --git a/lib/readdir.c b/lib/readdir.c > index 1a02ce4..91a3516 100644 > --- a/lib/readdir.c > +++ b/lib/readdir.c > @@ -24,6 +24,10 @@ > =20 > #include "dirent-private.h" > =20 > +/* 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 e4b867b..04fb22e 100644 > --- a/lib/relocatable.c > +++ b/lib/relocatable.c > @@ -65,6 +65,12 @@ > # include > #endif > =20 > +#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 09881e8..108dc40 100644 > --- a/lib/rename.c > +++ b/lib/rename.c > @@ -39,6 +39,10 @@ > =20 > # include "dirname.h" > =20 > +/* 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 d8ae714..a18943d 100644 > --- a/lib/rewinddir.c > +++ b/lib/rewinddir.c > @@ -23,6 +23,10 @@ > =20 > #include "dirent-private.h" > =20 > +/* 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 4467eae..b2234ea 100644 > --- a/lib/select.c > +++ b/lib/select.c > @@ -47,6 +47,18 @@ > =20 > #undef select > =20 > +/* 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 96318fb..52064df 100644 > --- a/lib/sethostname.c > +++ b/lib/sethostname.c > @@ -103,13 +103,12 @@ sethostname (const char *name, size_t len) > # include > =20 > # include > -/* The mingw header files don't define GetComputerNameEx, SetComputerNam= eEx. */ > -# 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 > =20 > /* 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 67c6b1e..ebf777f 100644 > --- a/lib/socket.c > +++ b/lib/socket.c > @@ -28,6 +28,10 @@ > =20 > #include "sockets.h" > =20 > +/* 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 cca12dd..19bdfaa 100644 > --- a/lib/stat-w32.c > +++ b/lib/stat-w32.c > @@ -40,6 +40,12 @@ > #include "pathmax.h" > #include "verify.h" > =20 > +/* Don't assume that UNICODE is not defined. */ > +#undef LoadLibrary > +#define LoadLibrary LoadLibraryA > +#undef GetFinalPathNameByHandle > +#define GetFinalPathNameByHandle GetFinalPathNameByHandleA > + > #if !(_WIN32_WINNT >=3D _WIN32_WINNT_VISTA) > =20 > /* Avoid warnings from gcc -Wcast-function-type. */ > diff --git a/lib/stat.c b/lib/stat.c > index e074e6a..9d3965d 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 > =20 > #ifdef WINDOWS_NATIVE > diff --git a/lib/stdio-read.c b/lib/stdio-read.c > index 874c9b1..e63a327 100644 > --- a/lib/stdio-read.c > +++ b/lib/stdio-read.c > @@ -43,6 +43,10 @@ > # include > # endif > =20 > +/* 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 41bc74c..778e7cf 100644 > --- a/lib/stdio-write.c > +++ b/lib/stdio-write.c > @@ -45,6 +45,10 @@ > # include > # endif > =20 > +/* Don't assume that UNICODE is not defined. */ > +# undef GetNamedPipeHandleState > +# define GetNamedPipeHandleState GetNamedPipeHandleStateA > + > # if GNULIB_NONBLOCKING > # define CLEAR_ERRNO \ > errno =3D 0; > diff --git a/lib/tmpdir.c b/lib/tmpdir.c > index 74ae359..28ff99f 100644 > --- a/lib/tmpdir.c > +++ b/lib/tmpdir.c > @@ -49,6 +49,12 @@ > =20 > #include "pathmax.h" > =20 > +#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 99d6752..667c0f2 100644 > --- a/lib/tmpfile.c > +++ b/lib/tmpfile.c > @@ -52,6 +52,14 @@ > #if defined _WIN32 && ! defined __CYGWIN__ > /* A native Windows platforms. */ > =20 > +/* 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 passin= g > the FILE_FLAG_DELETE_ON_CLOSE flag to CreateFile(), which has the eff= ect > of deleting the file when it is closed - even when the program crashe= s. > diff --git a/lib/uname.c b/lib/uname.c > index d4778a8..cb6dd28 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__ > =20 > -#include > -#include > -#include > -#include > -#include > +# include > +# include > +# include > +# include > +# include > =20 > /* 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 > =20 > /* 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 > =20 > /* 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 > =20 > int > uname (struct utsname *buf) > @@ -108,7 +114,7 @@ uname (struct utsname *buf) > super_version =3D ""; > =20 > /* 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 > =20 > /* Fill in release, version. */ > /* The MSYS uname.exe programs uses strings from a modified Cygwin run= time: > diff --git a/lib/utime.c b/lib/utime.c > index 77968dc..c35eb16 100644 > --- a/lib/utime.c > +++ b/lib/utime.c > @@ -29,6 +29,12 @@ > # include "filename.h" > # include "malloca.h" > =20 > +/* 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 44586a6..45e9b83 100644 > --- a/lib/windows-cond.c > +++ b/lib/windows-cond.c > @@ -27,6 +27,10 @@ > #include > #include > =20 > +/* 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 > =20 > diff --git a/lib/windows-rwlock.c b/lib/windows-rwlock.c > index 85a8552..6afb45b 100644 > --- a/lib/windows-rwlock.c > +++ b/lib/windows-rwlock.c > @@ -25,6 +25,10 @@ > #include > #include > =20 > +/* 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 > =20 > diff --git a/lib/windows-timedmutex.c b/lib/windows-timedmutex.c > index e36f410..788fe40 100644 > --- a/lib/windows-timedmutex.c > +++ b/lib/windows-timedmutex.c > @@ -26,6 +26,10 @@ > #include > #include > =20 > +/* 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 81fcdb6..d244bfd 100644 > --- a/lib/windows-timedrecmutex.c > +++ b/lib/windows-timedrecmutex.c > @@ -26,6 +26,10 @@ > #include > #include > =20 > +/* 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 793e8b7..42ad746 100644 > --- a/lib/windows-timedrwlock.c > +++ b/lib/windows-timedrwlock.c > @@ -26,6 +26,10 @@ > #include > #include > =20 > +/* 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 > =20 > diff --git a/lib/write.c b/lib/write.c > index a391283..581e674 100644 > --- a/lib/write.c > +++ b/lib/write.c > @@ -43,6 +43,10 @@ > # include > # endif > =20 > +/* Don't assume that UNICODE is not defined. */ > +# undef GetNamedPipeHandleState > +# define GetNamedPipeHandleState GetNamedPipeHandleStateA > + > # undef write > =20 > # if HAVE_MSVC_INVALID_PARAMETER_HANDLER