|
@ -24,6 +24,7 @@ |
|
|
#include "node_buffer.h" |
|
|
#include "node_buffer.h" |
|
|
#include "node_stat_watcher.h" |
|
|
#include "node_stat_watcher.h" |
|
|
#include "req_wrap.h" |
|
|
#include "req_wrap.h" |
|
|
|
|
|
#include "util.h" |
|
|
|
|
|
|
|
|
#include <fcntl.h> |
|
|
#include <fcntl.h> |
|
|
#include <sys/types.h> |
|
|
#include <sys/types.h> |
|
@ -403,7 +404,7 @@ static Handle<Value> Stat(const Arguments& args) { |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
|
|
|
|
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
|
|
|
|
|
|
if (args[1]->IsFunction()) { |
|
|
if (args[1]->IsFunction()) { |
|
|
ASYNC_CALL(stat, args[1], *path) |
|
|
ASYNC_CALL(stat, args[1], *path) |
|
@ -420,7 +421,7 @@ static Handle<Value> LStat(const Arguments& args) { |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
|
|
|
|
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
|
|
|
|
|
|
if (args[1]->IsFunction()) { |
|
|
if (args[1]->IsFunction()) { |
|
|
ASYNC_CALL(lstat, args[1], *path) |
|
|
ASYNC_CALL(lstat, args[1], *path) |
|
@ -458,12 +459,12 @@ static Handle<Value> Symlink(const Arguments& args) { |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string"); |
|
|
if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string"); |
|
|
if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string"); |
|
|
|
|
|
|
|
|
String::Utf8Value dest(args[0]); |
|
|
node::Utf8Value dest(args[0]); |
|
|
String::Utf8Value path(args[1]); |
|
|
node::Utf8Value path(args[1]); |
|
|
int flags = 0; |
|
|
int flags = 0; |
|
|
|
|
|
|
|
|
if (args[2]->IsString()) { |
|
|
if (args[2]->IsString()) { |
|
|
String::Utf8Value mode(args[2]); |
|
|
node::Utf8Value mode(args[2]); |
|
|
if (strcmp(*mode, "dir") == 0) { |
|
|
if (strcmp(*mode, "dir") == 0) { |
|
|
flags |= UV_FS_SYMLINK_DIR; |
|
|
flags |= UV_FS_SYMLINK_DIR; |
|
|
} else if (strcmp(*mode, "junction") == 0) { |
|
|
} else if (strcmp(*mode, "junction") == 0) { |
|
@ -491,8 +492,8 @@ static Handle<Value> Link(const Arguments& args) { |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string"); |
|
|
if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string"); |
|
|
if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string"); |
|
|
|
|
|
|
|
|
String::Utf8Value orig_path(args[0]); |
|
|
node::Utf8Value orig_path(args[0]); |
|
|
String::Utf8Value new_path(args[1]); |
|
|
node::Utf8Value new_path(args[1]); |
|
|
|
|
|
|
|
|
if (args[2]->IsFunction()) { |
|
|
if (args[2]->IsFunction()) { |
|
|
ASYNC_DEST_CALL(link, args[2], *new_path, *orig_path, *new_path) |
|
|
ASYNC_DEST_CALL(link, args[2], *new_path, *orig_path, *new_path) |
|
@ -508,7 +509,7 @@ static Handle<Value> ReadLink(const Arguments& args) { |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
|
|
|
|
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
|
|
|
|
|
|
if (args[1]->IsFunction()) { |
|
|
if (args[1]->IsFunction()) { |
|
|
ASYNC_CALL(readlink, args[1], *path) |
|
|
ASYNC_CALL(readlink, args[1], *path) |
|
@ -527,8 +528,8 @@ static Handle<Value> Rename(const Arguments& args) { |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("old path must be a string"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("old path must be a string"); |
|
|
if (!args[1]->IsString()) return TYPE_ERROR("new path must be a string"); |
|
|
if (!args[1]->IsString()) return TYPE_ERROR("new path must be a string"); |
|
|
|
|
|
|
|
|
String::Utf8Value old_path(args[0]); |
|
|
node::Utf8Value old_path(args[0]); |
|
|
String::Utf8Value new_path(args[1]); |
|
|
node::Utf8Value new_path(args[1]); |
|
|
|
|
|
|
|
|
if (args[2]->IsFunction()) { |
|
|
if (args[2]->IsFunction()) { |
|
|
ASYNC_DEST_CALL(rename, args[2], *new_path, *old_path, *new_path) |
|
|
ASYNC_DEST_CALL(rename, args[2], *new_path, *old_path, *new_path) |
|
@ -598,7 +599,7 @@ static Handle<Value> Unlink(const Arguments& args) { |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
|
|
|
|
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
|
|
|
|
|
|
if (args[1]->IsFunction()) { |
|
|
if (args[1]->IsFunction()) { |
|
|
ASYNC_CALL(unlink, args[1], *path) |
|
|
ASYNC_CALL(unlink, args[1], *path) |
|
@ -614,7 +615,7 @@ static Handle<Value> RMDir(const Arguments& args) { |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
|
|
|
|
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
|
|
|
|
|
|
if (args[1]->IsFunction()) { |
|
|
if (args[1]->IsFunction()) { |
|
|
ASYNC_CALL(rmdir, args[1], *path) |
|
|
ASYNC_CALL(rmdir, args[1], *path) |
|
@ -631,7 +632,7 @@ static Handle<Value> MKDir(const Arguments& args) { |
|
|
return THROW_BAD_ARGS; |
|
|
return THROW_BAD_ARGS; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
int mode = static_cast<int>(args[1]->Int32Value()); |
|
|
int mode = static_cast<int>(args[1]->Int32Value()); |
|
|
|
|
|
|
|
|
if (args[2]->IsFunction()) { |
|
|
if (args[2]->IsFunction()) { |
|
@ -648,7 +649,7 @@ static Handle<Value> ReadDir(const Arguments& args) { |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (args.Length() < 1) return TYPE_ERROR("path required"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string"); |
|
|
|
|
|
|
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
|
|
|
|
|
|
if (args[1]->IsFunction()) { |
|
|
if (args[1]->IsFunction()) { |
|
|
ASYNC_CALL(readdir, args[1], *path, 0 /*flags*/) |
|
|
ASYNC_CALL(readdir, args[1], *path, 0 /*flags*/) |
|
@ -686,7 +687,7 @@ static Handle<Value> Open(const Arguments& args) { |
|
|
if (!args[1]->IsInt32()) return TYPE_ERROR("flags must be an int"); |
|
|
if (!args[1]->IsInt32()) return TYPE_ERROR("flags must be an int"); |
|
|
if (!args[2]->IsInt32()) return TYPE_ERROR("mode must be an int"); |
|
|
if (!args[2]->IsInt32()) return TYPE_ERROR("mode must be an int"); |
|
|
|
|
|
|
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
int flags = args[1]->Int32Value(); |
|
|
int flags = args[1]->Int32Value(); |
|
|
int mode = static_cast<int>(args[2]->Int32Value()); |
|
|
int mode = static_cast<int>(args[2]->Int32Value()); |
|
|
|
|
|
|
|
@ -826,7 +827,7 @@ static Handle<Value> Chmod(const Arguments& args) { |
|
|
if(args.Length() < 2 || !args[0]->IsString() || !args[1]->IsInt32()) { |
|
|
if(args.Length() < 2 || !args[0]->IsString() || !args[1]->IsInt32()) { |
|
|
return THROW_BAD_ARGS; |
|
|
return THROW_BAD_ARGS; |
|
|
} |
|
|
} |
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
int mode = static_cast<int>(args[1]->Int32Value()); |
|
|
int mode = static_cast<int>(args[1]->Int32Value()); |
|
|
|
|
|
|
|
|
if(args[2]->IsFunction()) { |
|
|
if(args[2]->IsFunction()) { |
|
@ -873,7 +874,7 @@ static Handle<Value> Chown(const Arguments& args) { |
|
|
if (!args[1]->IsUint32()) return TYPE_ERROR("uid must be an unsigned int"); |
|
|
if (!args[1]->IsUint32()) return TYPE_ERROR("uid must be an unsigned int"); |
|
|
if (!args[2]->IsUint32()) return TYPE_ERROR("gid must be an unsigned int"); |
|
|
if (!args[2]->IsUint32()) return TYPE_ERROR("gid must be an unsigned int"); |
|
|
|
|
|
|
|
|
String::Utf8Value path(args[0]); |
|
|
node::Utf8Value path(args[0]); |
|
|
uv_uid_t uid = static_cast<uv_uid_t>(args[1]->Uint32Value()); |
|
|
uv_uid_t uid = static_cast<uv_uid_t>(args[1]->Uint32Value()); |
|
|
uv_gid_t gid = static_cast<uv_gid_t>(args[2]->Uint32Value()); |
|
|
uv_gid_t gid = static_cast<uv_gid_t>(args[2]->Uint32Value()); |
|
|
|
|
|
|
|
@ -924,7 +925,7 @@ static Handle<Value> UTimes(const Arguments& args) { |
|
|
if (!args[1]->IsNumber()) return TYPE_ERROR("atime must be a number"); |
|
|
if (!args[1]->IsNumber()) return TYPE_ERROR("atime must be a number"); |
|
|
if (!args[2]->IsNumber()) return TYPE_ERROR("mtime must be a number"); |
|
|
if (!args[2]->IsNumber()) return TYPE_ERROR("mtime must be a number"); |
|
|
|
|
|
|
|
|
const String::Utf8Value path(args[0]); |
|
|
const node::Utf8Value path(args[0]); |
|
|
const double atime = static_cast<double>(args[1]->NumberValue()); |
|
|
const double atime = static_cast<double>(args[1]->NumberValue()); |
|
|
const double mtime = static_cast<double>(args[2]->NumberValue()); |
|
|
const double mtime = static_cast<double>(args[2]->NumberValue()); |
|
|
|
|
|
|
|
|