From 1e673c3af45ed7557e3dcee9c87107948a050016 Mon Sep 17 00:00:00 2001 From: Thiago Farina Date: Wed, 7 Sep 2011 21:23:33 -0300 Subject: Fix windows build by moving mkdtemp() implementation from ninja_test.cc to disk_interface_test.cc Signed-off-by: Thiago Farina --- src/disk_interface_test.cc | 29 +++++++++++++++++++++++++++++ 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 -- cgit v0.12