Deal with file type bits in mode when setting permissions via chmod
This commit is contained in:
parent
4e73ef8d9b
commit
1087371fc4
|
@ -1953,7 +1953,7 @@ function chmod_file(context, path, mode, callback) {
|
||||||
if (error) {
|
if (error) {
|
||||||
callback(error);
|
callback(error);
|
||||||
} else {
|
} else {
|
||||||
node.mode = mode;
|
Node.setMode(mode, node);
|
||||||
update_node_times(context, path, node, { mtime: Date.now() }, callback);
|
update_node_times(context, path, node, { mtime: Date.now() }, callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
13
src/node.js
13
src/node.js
|
@ -12,17 +12,17 @@ var S_IFLNK = require('./constants.js').S_IFLNK;
|
||||||
var DEFAULT_FILE_PERMISSIONS = require('./constants.js').DEFAULT_FILE_PERMISSIONS;
|
var DEFAULT_FILE_PERMISSIONS = require('./constants.js').DEFAULT_FILE_PERMISSIONS;
|
||||||
var DEFAULT_DIR_PERMISSIONS = require('./constants.js').DEFAULT_DIR_PERMISSIONS;
|
var DEFAULT_DIR_PERMISSIONS = require('./constants.js').DEFAULT_DIR_PERMISSIONS;
|
||||||
|
|
||||||
function getMode(type) {
|
function getMode(type, mode) {
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case NODE_TYPE_DIRECTORY:
|
case NODE_TYPE_DIRECTORY:
|
||||||
return DEFAULT_DIR_PERMISSIONS | S_IFDIR;
|
return (mode || DEFAULT_DIR_PERMISSIONS) | S_IFDIR;
|
||||||
case NODE_TYPE_SYMBOLIC_LINK:
|
case NODE_TYPE_SYMBOLIC_LINK:
|
||||||
return DEFAULT_FILE_PERMISSIONS | S_IFLNK;
|
return (mode || DEFAULT_FILE_PERMISSIONS) | S_IFLNK;
|
||||||
/* jshint -W086 */
|
/* jshint -W086 */
|
||||||
case NODE_TYPE_FILE:
|
case NODE_TYPE_FILE:
|
||||||
// falls through
|
// falls through
|
||||||
default:
|
default:
|
||||||
return DEFAULT_FILE_PERMISSIONS | S_IFREG;
|
return (mode || DEFAULT_FILE_PERMISSIONS) | S_IFREG;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,4 +79,9 @@ Node.create = function(options, callback) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Update the node's mode (permissions), taking file type bits into account.
|
||||||
|
Node.setMode = function(mode, node) {
|
||||||
|
node.mode = getMode(node.type, mode);
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = Node;
|
module.exports = Node;
|
||||||
|
|
Loading…
Reference in New Issue