Mercurial > gnulib
changeset 16334:1ec7f32bf1ef
sys_stat: Fix support for mingw64 and MSVC.
* lib/sys_stat.in.h (stat) [AIX]: Don't redefine 'stat' if the system
header files already do it.
(stat) [mingw, msvc]: Redefine the symbol to which stat is defined, not
stat itself.
Reported by Marc-André Lureau <marcandre.lureau@redhat.com>.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Mon, 30 Jan 2012 21:43:40 +0100 |
parents | 04de064f29e0 |
children | 46aabacf4f15 |
files | ChangeLog lib/sys_stat.in.h |
diffstat | 2 files changed, 32 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Mon Jan 30 21:31:57 2012 +0100 +++ b/ChangeLog Mon Jan 30 21:43:40 2012 +0100 @@ -1,3 +1,12 @@ +2012-01-29 Bruno Haible <bruno@clisp.org> + + sys_stat: Fix support for mingw64 and MSVC. + * lib/sys_stat.in.h (stat) [AIX]: Don't redefine 'stat' if the system + header files already do it. + (stat) [mingw, msvc]: Redefine the symbol to which stat is defined, not + stat itself. + Reported by Marc-André Lureau <marcandre.lureau@redhat.com>. + 2012-01-29 Bruno Haible <bruno@clisp.org> wcwidth: Work around bug in UTF-8 locale on OpenBSD 5.0.
--- a/lib/sys_stat.in.h Mon Jan 30 21:31:57 2012 +0100 +++ b/lib/sys_stat.in.h Mon Jan 30 21:43:40 2012 +0100 @@ -616,14 +616,33 @@ /* We can't use the object-like #define stat rpl_stat, because of struct stat. This means that rpl_stat will not be used if the user does (stat)(a,b). Oh well. */ -# undef stat -# ifdef _LARGE_FILES +# if defined _AIX && defined stat && defined _LARGE_FILES /* With _LARGE_FILES defined, AIX (only) defines stat to stat64, so we have to replace stat64() instead of stat(). */ -# define stat stat64 # undef stat64 # define stat64(name, st) rpl_stat (name, st) -# else /* !_LARGE_FILES */ +# elif defined __MINGW32__ && defined stat +# ifdef _USE_32BIT_TIME_T + /* The system headers define stat to _stat32i64. */ +# undef _stat32i64 +# define _stat32i64(name, st) rpl_stat (name, st) +# else + /* The system headers define stat to _stat64. */ +# undef _stat64 +# define _stat64(name, st) rpl_stat (name, st) +# endif +# elif defined _MSC_VER && defined stat +# ifdef _USE_32BIT_TIME_T + /* The system headers define stat to _stat32. */ +# undef _stat32 +# define _stat32(name, st) rpl_stat (name, st) +# else + /* The system headers define stat to _stat64i32. */ +# undef _stat64i32 +# define _stat64i32(name, st) rpl_stat (name, st) +# endif +# else /* !(_AIX ||__MINGW32__ || _MSC_VER) */ +# undef stat # define stat(name, st) rpl_stat (name, st) # endif /* !_LARGE_FILES */ _GL_EXTERN_C int stat (const char *name, struct stat *buf)