Mingw 64 added <direct.h> as a place that declared getcwd. It is a non-standard header, but since we already include it in the replacement for <sys/stat.h>, we must also include it in the replacement for <unistd.h> to avoid compilation problems.
* lib/unistd.in.h (includes) [mingw]: Include <direct.h> for getcwd. Reported by Marc-André Lureau. Signed-off-by: Eric Blake <[email protected]> --- I was able to reproduce the failure, as well as verify that this patch resolves it. Oddly, mingw32 only uses <io.h>, but mingw64 changed things to use both <io.h> and <direct.h>. ChangeLog | 5 +++++ lib/unistd.in.h | 3 ++- 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/ChangeLog b/ChangeLog index 770bdf7..7c8781f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2011-08-17 Eric Blake <[email protected]> + getcwd: fix compilation on mingw64 + * lib/unistd.in.h (includes) [mingw]: Include <direct.h> for + getcwd. + Reported by Marc-André Lureau. + pipe2: silence compiler warning * lib/pipe2.c (pipe2): Hide label if it is not used. diff --git a/lib/unistd.in.h b/lib/unistd.in.h index e612fb3..c1cfb54 100644 --- a/lib/unistd.in.h +++ b/lib/unistd.in.h @@ -85,7 +85,8 @@ /* mingw declares getcwd in <io.h>, not in <unistd.h>. */ #if ((@GNULIB_GETCWD@ || defined GNULIB_POSIXCHECK) \ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) -# include <io.h> +# include <io.h> /* mingw32, mingw64 */ +# include <direct.h> /* mingw64 */ #endif /* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>. -- 1.7.4.4
