GH-853 fs.lchown and fs.lchmod

This commit is contained in:
isaacs 2011-03-29 16:34:05 -07:00
parent 5cfac21852
commit 3935adced0
2 changed files with 42 additions and 0 deletions

View File

@ -440,6 +440,25 @@ fs.fchmodSync = function(fd, mode) {
return binding.fchmod(fd, modeNum(mode)); return binding.fchmod(fd, modeNum(mode));
}; };
if (constants.hasOwnProperty('O_SYMLINK')) {
fs.lchmod = function(path, mode, callback) {
callback = callback || noop;
fs.open(path, constants.O_WRONLY | constants.O_SYMLINK, function (err, fd) {
if (err) {
callback(err);
return;
}
fs.fchmod(fd, mode, callback);
});
};
fs.lchmodSync = function(path, mode) {
var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK);
return fs.fchmodSync(fd, mode);
};
}
fs.chmod = function(path, mode, callback) { fs.chmod = function(path, mode, callback) {
binding.chmod(path, modeNum(mode), callback || noop); binding.chmod(path, modeNum(mode), callback || noop);
}; };
@ -448,6 +467,24 @@ fs.chmodSync = function(path, mode) {
return binding.chmod(path, modeNum(mode)); return binding.chmod(path, modeNum(mode));
}; };
if (constants.hasOwnProperty('O_SYMLINK')) {
fs.lchown = function(path, uid, gid, callback) {
callback = callback || noop;
fs.open(path, constants.O_WRONLY | constants.O_SYMLINK, function (err, fd) {
if (err) {
callback(err);
return;
}
fs.fchown(fd, uid, gid, callback);
});
};
fs.lchownSync = function(path, uid, gid) {
var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK);
return fs.fchownSync(fd, uid, gid);
};
}
fs.fchown = function(fd, uid, gid, callback) { fs.fchown = function(fd, uid, gid, callback) {
binding.fchown(fd, uid, gid, callback || noop); binding.fchown(fd, uid, gid, callback || noop);
}; };

View File

@ -103,6 +103,11 @@ void DefineConstants(Handle<Object> target) {
NODE_DEFINE_CONSTANT(target, O_SYNC); NODE_DEFINE_CONSTANT(target, O_SYNC);
#endif #endif
#ifdef O_SYMLINK
NODE_DEFINE_CONSTANT(target, O_SYMLINK);
#endif
#ifdef S_IRWXU #ifdef S_IRWXU
NODE_DEFINE_CONSTANT(target, S_IRWXU); NODE_DEFINE_CONSTANT(target, S_IRWXU);
#endif #endif