Created
November 21, 2009 05:04
-
-
Save fwg/240016 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/doc/api.txt b/doc/api.txt | |
index b3a163c..8b439cc 100644 | |
--- a/doc/api.txt | |
+++ b/doc/api.txt | |
@@ -119,6 +119,11 @@ success code 0. | |
+process.cwd()+:: | |
Returns the current working directory of the process. | |
++process.umask(mask)+ :: | |
+Sets the process's file mode creation mask. Child processes inherit the mask | |
+from the parent process. | |
+ - returns the old mask. | |
+ | |
+process.kill(pid, signal="SIGTERM")+ :: | |
Send a signal to a process. +pid+ is the process id and +signal+ is the | |
signal to send; for example, "SIGINT" or "SIGUSR1". See kill(2) for more | |
@@ -636,7 +641,6 @@ sys.puts("stats: " + JSON.stringify(stats)); | |
- on success: returns an integer +written+ which specifies how many _bytes_ were written. | |
- on error: no parameters. | |
- | |
+posix.read(fd, length, position, encoding)+:: | |
Read data from the file specified by +fd+. | |
diff --git a/src/node.cc b/src/node.cc | |
index 5185fc5..dcb1110 100644 | |
--- a/src/node.cc | |
+++ b/src/node.cc | |
@@ -275,6 +275,19 @@ static Handle<Value> Cwd(const Arguments& args) { | |
return scope.Close(cwd); | |
} | |
+static Handle<Value> Umask(const Arguments& args){ | |
+ HandleScope scope; | |
+ | |
+ if(args.Length() < 1 || !args[0]->IsInt32()) { | |
+ return ThrowException(Exception::TypeError( | |
+ String::New("argument must be an integer."))); | |
+ } | |
+ unsigned int mask = args[0]->Uint32Value(); | |
+ unsigned int old = umask((mode_t)mask); | |
+ | |
+ return scope.Close(Uint32::New(old)); | |
+} | |
+ | |
v8::Handle<v8::Value> Exit(const v8::Arguments& args) { | |
int r = 0; | |
if (args.Length() > 0) | |
@@ -683,6 +696,7 @@ static Local<Object> Load(int argc, char *argv[]) { | |
NODE_SET_METHOD(process, "reallyExit", Exit); | |
NODE_SET_METHOD(process, "chdir", Chdir); | |
NODE_SET_METHOD(process, "cwd", Cwd); | |
+ NODE_SET_METHOD(process, "umask", Umask); | |
NODE_SET_METHOD(process, "dlopen", DLOpen); | |
NODE_SET_METHOD(process, "kill", Kill); | |
NODE_SET_METHOD(process, "memoryUsage", MemoryUsage); | |
diff --git a/test/mjsunit/test-umask.js b/test/mjsunit/test-umask.js | |
new file mode 100644 | |
index 0000000..1ac9578 | |
--- /dev/null | |
+++ b/test/mjsunit/test-umask.js | |
@@ -0,0 +1,6 @@ | |
+process.mixin(require("./common")); | |
+ | |
+var mask = 0664; | |
+var old = process.umask(mask); | |
+ | |
+assertEquals(true, mask === process.umask(old)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment