Skip to content

Commit

Permalink
Enable link, symlink, and readlink on windows
Browse files Browse the repository at this point in the history
  • Loading branch information
Igor Zinkovsky authored and ry committed Sep 8, 2011
1 parent 4527de8 commit 65e6ba9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
11 changes: 7 additions & 4 deletions lib/fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -409,12 +409,15 @@ fs.readlinkSync = function(path) {
return binding.readlink(path);
};

fs.symlink = function(destination, path, callback) {
binding.symlink(destination, path, callback || noop);
fs.symlink = function(destination, path, mode_, callback) {
var mode = (typeof(mode_) == 'string' ? mode_ : null);
var callback_ = arguments[arguments.length - 1];
var callback = (typeof(callback_) == 'function' ? callback_ : null);
binding.symlink(destination, path, mode, callback);
};

fs.symlinkSync = function(destination, path) {
return binding.symlink(destination, path);
fs.symlinkSync = function(destination, path, mode) {
return binding.symlink(destination, path, mode);
};

fs.link = function(srcpath, dstpath, callback) {
Expand Down
21 changes: 9 additions & 12 deletions src/node_file.cc
Original file line number Diff line number Diff line change
Expand Up @@ -453,7 +453,6 @@ static Handle<Value> FStat(const Arguments& args) {
}
}

#ifdef __POSIX__
static Handle<Value> Symlink(const Arguments& args) {
HandleScope scope;

Expand All @@ -463,20 +462,23 @@ static Handle<Value> Symlink(const Arguments& args) {

String::Utf8Value dest(args[0]->ToString());
String::Utf8Value path(args[1]->ToString());

// Just set to zero for now. Support UV_FS_SYMLINK_DIR in the future.
int flags = 0;

if (args[2]->IsFunction()) {
ASYNC_CALL(symlink, args[2], *dest, *path, flags)
if (args[2]->IsString()) {
String::Utf8Value mode(args[2]->ToString());
if (memcmp(*mode, "dir\0", 4) == 0) {
flags |= UV_FS_SYMLINK_DIR;
}
}

if (args[3]->IsFunction()) {
ASYNC_CALL(symlink, args[3], *dest, *path, flags)
} else {
SYNC_CALL(symlink, *path, *dest, *path, flags)
return Undefined();
}
}
#endif // __POSIX__

#ifdef __POSIX__
static Handle<Value> Link(const Arguments& args) {
HandleScope scope;

Expand All @@ -494,9 +496,7 @@ static Handle<Value> Link(const Arguments& args) {
return Undefined();
}
}
#endif // __POSIX__

#ifdef __POSIX__
static Handle<Value> ReadLink(const Arguments& args) {
HandleScope scope;

Expand All @@ -513,7 +513,6 @@ static Handle<Value> ReadLink(const Arguments& args) {
return scope.Close(String::New((char*)SYNC_REQ.ptr));
}
}
#endif // __POSIX__

static Handle<Value> Rename(const Arguments& args) {
HandleScope scope;
Expand Down Expand Up @@ -1027,11 +1026,9 @@ void File::Initialize(Handle<Object> target) {
NODE_SET_METHOD(target, "stat", Stat);
NODE_SET_METHOD(target, "lstat", LStat);
NODE_SET_METHOD(target, "fstat", FStat);
#ifdef __POSIX__
NODE_SET_METHOD(target, "link", Link);
NODE_SET_METHOD(target, "symlink", Symlink);
NODE_SET_METHOD(target, "readlink", ReadLink);
#endif // __POSIX__
NODE_SET_METHOD(target, "unlink", Unlink);
NODE_SET_METHOD(target, "write", Write);

Expand Down

0 comments on commit 65e6ba9

Please sign in to comment.