From 0e9b2733fa46bb92178a832d85c0773ce16814af Mon Sep 17 00:00:00 2001 From: Nguyễn Thái Ngọc Duy Date: Wed, 14 Apr 2010 06:52:29 +0200 Subject: win32: Work around for dup2 Original dup2() does not return the fdto. --- include/mingw.h | 2 ++ win32/mingw.c | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/include/mingw.h b/include/mingw.h index a828bd835..ed718fb5d 100644 --- a/include/mingw.h +++ b/include/mingw.h @@ -258,6 +258,7 @@ IMPL(strptime,char*,NULL,const char *s UNUSED_PARAM, const char *format UNUSED_P IMPL(alarm,unsigned int,0,unsigned int seconds UNUSED_PARAM); NOIMPL(chown,const char *path UNUSED_PARAM, uid_t uid UNUSED_PARAM, gid_t gid UNUSED_PARAM); NOIMPL(chroot,const char *root UNUSED_PARAM); +int mingw_dup2 (int fd, int fdto); char *mingw_getcwd(char *pointer, int len); @@ -293,6 +294,7 @@ static inline void sync(void) {} int mingw_unlink(const char *pathname); NOIMPL(vfork,void); +#define dup2 mingw_dup2 #define getcwd mingw_getcwd #define lchown(a,b,c) chown(a,b,c) #define open mingw_open diff --git a/win32/mingw.c b/win32/mingw.c index e8096b5bc..e4ff14357 100644 --- a/win32/mingw.c +++ b/win32/mingw.c @@ -149,6 +149,13 @@ FILE *mingw_fopen (const char *filename, const char *mode) return fopen(filename, mode); } +#undef dup2 +int mingw_dup2 (int fd, int fdto) +{ + int ret = dup2(fd, fdto); + return ret != -1 ? fdto : -1; +} + static inline time_t filetime_to_time_t(const FILETIME *ft) { long long winTime = ((long long)ft->dwHighDateTime << 32) + ft->dwLowDateTime; -- cgit v1.2.3-55-g6feb