summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/graceful-fs/polyfills.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/graceful-fs/polyfills.js')
-rw-r--r--deps/npm/node_modules/graceful-fs/polyfills.js57
1 files changed, 40 insertions, 17 deletions
diff --git a/deps/npm/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/graceful-fs/polyfills.js
index 5e4f480461..2798050604 100644
--- a/deps/npm/node_modules/graceful-fs/polyfills.js
+++ b/deps/npm/node_modules/graceful-fs/polyfills.js
@@ -44,28 +44,28 @@ function patch (fs) {
fs.fchown = chownFix(fs.fchown)
fs.lchown = chownFix(fs.lchown)
- fs.chmod = chownFix(fs.chmod)
- fs.fchmod = chownFix(fs.fchmod)
- fs.lchmod = chownFix(fs.lchmod)
+ fs.chmod = chmodFix(fs.chmod)
+ fs.fchmod = chmodFix(fs.fchmod)
+ fs.lchmod = chmodFix(fs.lchmod)
fs.chownSync = chownFixSync(fs.chownSync)
fs.fchownSync = chownFixSync(fs.fchownSync)
fs.lchownSync = chownFixSync(fs.lchownSync)
- fs.chmodSync = chownFix(fs.chmodSync)
- fs.fchmodSync = chownFix(fs.fchmodSync)
- fs.lchmodSync = chownFix(fs.lchmodSync)
+ fs.chmodSync = chmodFixSync(fs.chmodSync)
+ fs.fchmodSync = chmodFixSync(fs.fchmodSync)
+ fs.lchmodSync = chmodFixSync(fs.lchmodSync)
// if lchmod/lchown do not exist, then make them no-ops
if (!fs.lchmod) {
fs.lchmod = function (path, mode, cb) {
- process.nextTick(cb)
+ if (cb) process.nextTick(cb)
}
fs.lchmodSync = function () {}
}
if (!fs.lchown) {
fs.lchown = function (path, uid, gid, cb) {
- process.nextTick(cb)
+ if (cb) process.nextTick(cb)
}
fs.lchownSync = function () {}
}
@@ -121,20 +121,19 @@ function patch (fs) {
function patchLchmod (fs) {
fs.lchmod = function (path, mode, callback) {
- callback = callback || noop
fs.open( path
, constants.O_WRONLY | constants.O_SYMLINK
, mode
, function (err, fd) {
if (err) {
- callback(err)
+ if (callback) callback(err)
return
}
// prefer to return the chmod error, if one occurs,
// but still try to close, and report closing errors if they occur.
fs.fchmod(fd, mode, function (err) {
fs.close(fd, function(err2) {
- callback(err || err2)
+ if (callback) callback(err || err2)
})
})
})
@@ -167,11 +166,13 @@ function patchLutimes (fs) {
if (constants.hasOwnProperty("O_SYMLINK")) {
fs.lutimes = function (path, at, mt, cb) {
fs.open(path, constants.O_SYMLINK, function (er, fd) {
- cb = cb || noop
- if (er) return cb(er)
+ if (er) {
+ if (cb) cb(er)
+ return
+ }
fs.futimes(fd, at, mt, function (er) {
fs.close(fd, function (er2) {
- return cb(er || er2)
+ if (cb) cb(er || er2)
})
})
})
@@ -197,17 +198,39 @@ function patchLutimes (fs) {
}
} else {
- fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
+ fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
fs.lutimesSync = function () {}
}
}
+function chmodFix (orig) {
+ if (!orig) return orig
+ return function (target, mode, cb) {
+ return orig.call(fs, target, mode, function (er) {
+ if (chownErOk(er)) er = null
+ if (cb) cb.apply(this, arguments)
+ })
+ }
+}
+
+function chmodFixSync (orig) {
+ if (!orig) return orig
+ return function (target, mode) {
+ try {
+ return orig.call(fs, target, mode)
+ } catch (er) {
+ if (!chownErOk(er)) throw er
+ }
+ }
+}
+
+
function chownFix (orig) {
if (!orig) return orig
return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er, res) {
+ return orig.call(fs, target, uid, gid, function (er) {
if (chownErOk(er)) er = null
- cb(er, res)
+ if (cb) cb.apply(this, arguments)
})
}
}