diff options
author | Ryan <ry@tinyclouds.org> | 2009-09-03 21:57:15 +0200 |
---|---|---|
committer | Ryan <ry@tinyclouds.org> | 2009-09-03 21:57:15 +0200 |
commit | 3736bf9f4952c9e86decc8ee685cd671fe0234b2 (patch) | |
tree | ba6ce379e76cf725ec35ed2897cb9caedcc234ed | |
parent | 9b3e2ae192e73f7ecc55e1686965a66c9a0107ff (diff) | |
download | node-new-3736bf9f4952c9e86decc8ee685cd671fe0234b2.tar.gz |
Add node.fs.mkdir()
-rw-r--r-- | src/file.cc | 17 | ||||
-rw-r--r-- | src/file.h | 8 | ||||
-rw-r--r-- | website/api.txt | 5 |
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 |