From d660db1f8b7f1f2c1b87d2fa06da26fdc45809c3 Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Sun, 1 May 2011 19:43:51 -0700 Subject: windows: abstract around mkdir vs _mkdir --- src/ninja_jumble.cc | 2 +- src/util.cc | 14 ++++++++++++++ src/util.h | 4 ++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/ninja_jumble.cc b/src/ninja_jumble.cc index cb0ca5e..e33fa32 100644 --- a/src/ninja_jumble.cc +++ b/src/ninja_jumble.cc @@ -100,7 +100,7 @@ string RealDiskInterface::ReadFile(const string& path, string* err) { } bool RealDiskInterface::MakeDir(const string& path) { - if (mkdir(path.c_str(), 0777) < 0) { + if (::MakeDir(path) < 0) { Error("mkdir(%s): %s", path.c_str(), strerror(errno)); return false; } diff --git a/src/util.cc b/src/util.cc index 060ea16..9d13ca3 100644 --- a/src/util.cc +++ b/src/util.cc @@ -18,9 +18,15 @@ #include #include #include +#include +#include #include +#ifdef _WIN32 +#include // _mkdir +#endif + void Fatal(const char* msg, ...) { va_list ap; fprintf(stderr, "ninja: FATAL: "); @@ -127,3 +133,11 @@ bool CanonicalizePath(string* path, string* err) { return true; } + +int MakeDir(const string& path) { +#ifdef _WIN32 + return _mkdir(path.c_str()); +#else + return mkdir(path.c_str(), 0777); +#endif +} diff --git a/src/util.h b/src/util.h index a89cd3d..7fc5af9 100644 --- a/src/util.h +++ b/src/util.h @@ -28,4 +28,8 @@ void Error(const char* msg, ...); /// Canonicalize a path like "foo/../bar.h" into just "bar.h". bool CanonicalizePath(string* path, string* err); +/// Create a directory (mode 0777 on Unix). +/// Portability abstraction. +int MakeDir(const string& path); + #endif // NINJA_UTIL_H_ -- cgit v0.12