diff options
author | Thiago Farina <tfarina@chromium.org> | 2011-09-08 00:23:33 (GMT) |
---|---|---|
committer | Thiago Farina <tfarina@chromium.org> | 2011-09-08 00:23:33 (GMT) |
commit | 1e673c3af45ed7557e3dcee9c87107948a050016 (patch) | |
tree | fe7a88679ac10e9d5c73b77473b64f49d4138ee8 /src | |
parent | 7a3dd0d534e7be3e8c8a57917e66c73b4e8a9ba0 (diff) | |
download | Ninja-1e673c3af45ed7557e3dcee9c87107948a050016.zip Ninja-1e673c3af45ed7557e3dcee9c87107948a050016.tar.gz Ninja-1e673c3af45ed7557e3dcee9c87107948a050016.tar.bz2 |
Fix windows build by moving mkdtemp() implementation from ninja_test.cc to disk_interface_test.cc
Signed-off-by: Thiago Farina <tfarina@chromium.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/disk_interface_test.cc | 29 | ||||
-rw-r--r-- | src/ninja_test.cc | 28 |
2 files changed, 29 insertions, 28 deletions
diff --git a/src/disk_interface_test.cc b/src/disk_interface_test.cc index ed26975..672d57c 100644 --- a/src/disk_interface_test.cc +++ b/src/disk_interface_test.cc @@ -25,6 +25,35 @@ using namespace std; namespace { +#ifdef _WIN32 +#ifndef _mktemp_s +/// mingw has no mktemp. Implement one with the same type as the one +/// found in the Windows API. +int _mktemp_s(char* templ) { + char* ofs = strchr(templ, 'X'); + sprintf(ofs, "%d", rand() % 1000000); + return 0; +} +#endif + +/// Windows has no mkdtemp. Implement it in terms of _mktemp_s. +char* mkdtemp(char* name_template) { + int err = _mktemp_s(name_template); + if (err < 0) { + perror("_mktemp_s"); + return NULL; + } + + err = _mkdir(name_template); + if (err < 0) { + perror("mkdir"); + return NULL; + } + + return name_template; +} +#endif + class DiskInterfaceTest : public testing::Test { public: virtual void SetUp() { diff --git a/src/ninja_test.cc b/src/ninja_test.cc index 2ccc151..c1999d9 100644 --- a/src/ninja_test.cc +++ b/src/ninja_test.cc @@ -211,32 +211,4 @@ TEST_F(StatTest, Middle) { ASSERT_TRUE(GetNode("out")->dirty_); } -#ifdef _WIN32 -#ifndef _mktemp_s -/// mingw has no mktemp. Implement one with the same type as the one -/// found in the Windows API. -int _mktemp_s(char* templ) { - char* ofs = strchr(templ, 'X'); - sprintf(ofs, "%d", rand() % 1000000); - return 0; -} -#endif - -/// Windows has no mkdtemp. Implement it in terms of _mktemp_s. -char* mkdtemp(char* name_template) { - int err = _mktemp_s(name_template); - if (err < 0) { - perror("_mktemp_s"); - return NULL; - } - - err = _mkdir(name_template); - if (err < 0) { - perror("mkdir"); - return NULL; - } - - return name_template; -} -#endif |