summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2011-05-02 02:43:51 (GMT)
committerEvan Martin <martine@danga.com>2011-05-02 14:21:33 (GMT)
commitd660db1f8b7f1f2c1b87d2fa06da26fdc45809c3 (patch)
tree6c0b935b6e8c8b24c4420e8307393dc88f4e2f14 /src
parent2ca4e98e86d6b4a3879842468c9e3fd4745f8fe4 (diff)
downloadNinja-d660db1f8b7f1f2c1b87d2fa06da26fdc45809c3.zip
Ninja-d660db1f8b7f1f2c1b87d2fa06da26fdc45809c3.tar.gz
Ninja-d660db1f8b7f1f2c1b87d2fa06da26fdc45809c3.tar.bz2
windows: abstract around mkdir vs _mkdir
Diffstat (limited to 'src')
-rw-r--r--src/ninja_jumble.cc2
-rw-r--r--src/util.cc14
-rw-r--r--src/util.h4
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
+}
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_