summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan <ry@tinyclouds.org>2009-09-03 21:57:15 +0200
committerRyan <ry@tinyclouds.org>2009-09-03 21:57:15 +0200
commit3736bf9f4952c9e86decc8ee685cd671fe0234b2 (patch)
treeba6ce379e76cf725ec35ed2897cb9caedcc234ed
parent9b3e2ae192e73f7ecc55e1686965a66c9a0107ff (diff)
downloadnode-new-3736bf9f4952c9e86decc8ee685cd671fe0234b2.tar.gz
Add node.fs.mkdir()
-rw-r--r--src/file.cc17
-rw-r--r--src/file.h8
-rw-r--r--website/api.txt5
3 files changed, 30 insertions, 0 deletions
diff --git a/src/file.cc b/src/file.cc
index c5fbbb3755..8cb1bc6c89 100644
--- a/src/file.cc
+++ b/src/file.cc
@@ -82,6 +82,7 @@ EIOPromise::After (eio_req *req)
case EIO_RENAME:
case EIO_UNLINK:
case EIO_RMDIR:
+ case EIO_MKDIR:
argc = 0;
break;
@@ -252,6 +253,21 @@ RMDir (const Arguments& args)
}
static Handle<Value>
+MKDir (const Arguments& args)
+{
+ HandleScope scope;
+
+ if (args.Length() < 2 || !args[0]->IsString() || !args[1]->IsInt32()) {
+ return ThrowException(BAD_ARGUMENTS);
+ }
+
+ String::Utf8Value path(args[0]->ToString());
+ mode_t mode = static_cast<mode_t>(args[1]->Int32Value());
+
+ return scope.Close(EIOPromise::MKDir(*path, mode));
+}
+
+static Handle<Value>
ReadDir (const Arguments& args)
{
HandleScope scope;
@@ -369,6 +385,7 @@ File::Initialize (Handle<Object> target)
NODE_SET_METHOD(target, "read", Read);
NODE_SET_METHOD(target, "rename", Rename);
NODE_SET_METHOD(target, "rmdir", RMDir);
+ NODE_SET_METHOD(target, "mkdir", MKDir);
NODE_SET_METHOD(target, "readdir", ReadDir);
NODE_SET_METHOD(target, "stat", Stat);
NODE_SET_METHOD(target, "unlink", Unlink);
diff --git a/src/file.h b/src/file.h
index 3eb4bd53ef..5d44695d83 100644
--- a/src/file.h
+++ b/src/file.h
@@ -94,6 +94,14 @@ class EIOPromise : public Promise {
}
static v8::Handle<v8::Object>
+ MKDir (const char *path, mode_t mode)
+ {
+ EIOPromise *p = Create();
+ p->req_ = eio_mkdir(path, mode, EIO_PRI_DEFAULT, After, p);
+ return p->handle_;
+ }
+
+ static v8::Handle<v8::Object>
ReadDir (const char *path)
{
EIOPromise *p = Create();
diff --git a/website/api.txt b/website/api.txt
index cf615e84d5..01890c545a 100644
--- a/website/api.txt
+++ b/website/api.txt
@@ -453,6 +453,11 @@ node.fs.stat("/tmp/world").addCallback(function (stats) {
- on success: no parameters.
- on error: no parameters.
++node.fs.mkdir(path, mode)+ ::
+ See mkdir(2)
+ - on success: no parameters.
+ - on error: no parameters.
+
+node.fs.readdir(path)+ ::
Reads the contents of a directory.
- on success: One argument, an array containing the names (strings) of the