52 lines
1.7 KiB
Diff
52 lines
1.7 KiB
Diff
commit 4374b79aed648738d2458ce027cbe2b372bf7b3a
|
|
Author: isaacs <i@izs.me>
|
|
Date: Wed Jun 26 12:12:17 2019 -0700
|
|
|
|
Add support for stat options
|
|
|
|
Fix #158
|
|
|
|
diff --git a/polyfills.js b/polyfills.js
|
|
index b964ed0..bc9759b 100644
|
|
--- a/polyfills.js
|
|
+++ b/polyfills.js
|
|
@@ -273,17 +273,23 @@ function patch (fs) {
|
|
}
|
|
|
|
|
|
+ // stat options added in v10.5.0
|
|
+ var supportsStatOptions = /^v[1-9][1-9]|^v10\.[5-9]/.test(process.version)
|
|
function statFix (orig) {
|
|
if (!orig) return orig
|
|
// Older versions of Node erroneously returned signed integers for
|
|
// uid + gid.
|
|
- return function (target, cb) {
|
|
- return orig.call(fs, target, function (er, stats) {
|
|
- if (!stats) return cb.apply(this, arguments)
|
|
+ return function (target, options, cb) {
|
|
+ if (typeof options === 'function')
|
|
+ cb = options, options = null
|
|
+ function callback (er, stats) {
|
|
+ if (!stats) return cb && cb.apply(this, arguments)
|
|
if (stats.uid < 0) stats.uid += 0x100000000
|
|
if (stats.gid < 0) stats.gid += 0x100000000
|
|
if (cb) cb.apply(this, arguments)
|
|
- })
|
|
+ }
|
|
+ return supportsStatOptions ? orig.call(fs, target, options || {}, callback)
|
|
+ : orig.call(fs, target, callback)
|
|
}
|
|
}
|
|
|
|
@@ -291,8 +297,8 @@ function patch (fs) {
|
|
if (!orig) return orig
|
|
// Older versions of Node erroneously returned signed integers for
|
|
// uid + gid.
|
|
- return function (target) {
|
|
- var stats = orig.call(fs, target)
|
|
+ return function (target, options) {
|
|
+ var stats = orig.call(fs, target, options)
|
|
if (stats.uid < 0) stats.uid += 0x100000000
|
|
if (stats.gid < 0) stats.gid += 0x100000000
|
|
return stats;
|