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) {
}
}
-#ifdef __POSIX__
static Handle<Value> Symlink(const Arguments& args) {
HandleScope scope;
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;
return Undefined();
}
}
-#endif // __POSIX__
-#ifdef __POSIX__
static Handle<Value> ReadLink(const Arguments& args) {
HandleScope scope;
return scope.Close(String::New((char*)SYNC_REQ.ptr));
}
}
-#endif // __POSIX__
static Handle<Value> Rename(const Arguments& args) {
HandleScope scope;
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);