diff options
author | Evan Martin <martine@danga.com> | 2011-05-02 02:43:51 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2011-05-02 14:21:33 (GMT) |
commit | d660db1f8b7f1f2c1b87d2fa06da26fdc45809c3 (patch) | |
tree | 6c0b935b6e8c8b24c4420e8307393dc88f4e2f14 | |
parent | 2ca4e98e86d6b4a3879842468c9e3fd4745f8fe4 (diff) | |
download | Ninja-d660db1f8b7f1f2c1b87d2fa06da26fdc45809c3.zip Ninja-d660db1f8b7f1f2c1b87d2fa06da26fdc45809c3.tar.gz Ninja-d660db1f8b7f1f2c1b87d2fa06da26fdc45809c3.tar.bz2 |
windows: abstract around mkdir vs _mkdir
-rw-r--r-- | src/ninja_jumble.cc | 2 | ||||
-rw-r--r-- | src/util.cc | 14 | ||||
-rw-r--r-- | src/util.h | 4 |
3 files changed, 19 insertions, 1 deletions
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 <stdio.h> #include <stdlib.h> #include <string.h> +#include <sys/stat.h> +#include <sys/types.h> #include <vector> +#ifdef _WIN32 +#include <direct.h> // _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 +} @@ -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_ |