Fix Windows build.

This commit is contained in:
Victor Zverovich 2014-05-18 11:09:37 -07:00
parent f21fa23186
commit df991a0f46
3 changed files with 32 additions and 6 deletions

View File

@ -101,18 +101,21 @@ std::string FormatSystemErrorMessage(int error_code, fmt::StringRef message);
#ifndef FMT_POSIX
# ifdef _WIN32
// Fix warnings about deprecated symbols.
# define FMT_POSIX(name) _##name
# define FMT_POSIX(call) _##call
# else
# define FMT_POSIX(name) name
# define FMT_POSIX(call) call
# endif
#endif
#ifndef FMT_POSIX_CALL
#ifdef FMT_SYSTEM
# define FMT_POSIX_CALL(call) FMT_SYSTEM(call)
#else
# define FMT_SYSTEM(call) call
# ifdef _WIN32
// Fix warnings about deprecated symbols.
# define FMT_POSIX_CALL(name) ::_##name
# define FMT_POSIX_CALL(call) ::_##call
# else
# define FMT_POSIX_CALL(name) ::name
# define FMT_POSIX_CALL(call) ::call
# endif
#endif

View File

@ -30,6 +30,10 @@
#include <errno.h>
#include <fcntl.h>
#ifdef _WIN32
# include <io.h>
#endif
#include "gtest-extra.h"
namespace {
@ -42,6 +46,7 @@ int fileno_count;
int read_count;
int write_count;
int pipe_count;
int fclose_count;
}
#define EMULATE_EINTR(func, error_result) \
@ -102,10 +107,22 @@ test::ssize_t test::write(int fildes, const void *buf, test::size_t nbyte) {
return ::write(fildes, buf, nbyte);
}
#ifndef _WIN32
int test::pipe(int fildes[2]) {
EMULATE_EINTR(pipe, -1);
return ::pipe(fildes);
}
#else
int test::pipe(int *pfds, unsigned psize, int textmode) {
EMULATE_EINTR(pipe, -1);
return _pipe(fildes, 256, O_BINARY);
}
#endif
int test::fclose(FILE *stream) {
EMULATE_EINTR(fclose, EOF);
return ::fclose(stream);
}
#ifndef _WIN32
# define EXPECT_RETRY(statement, func, message) \

View File

@ -56,10 +56,16 @@ int fileno(FILE *stream);
ssize_t read(int fildes, void *buf, size_t nbyte);
ssize_t write(int fildes, const void *buf, size_t nbyte);
#ifndef _WIN32
int pipe(int fildes[2]);
#else
int pipe(int *pfds, unsigned psize, int textmode);
#endif
int fclose(FILE *stream);
} // namespace test
#define FMT_POSIX_CALL(call) test::call
#define FMT_SYSTEM(call) test::call
#endif // FMT_POSIX_TEST_H