|
|
|
@ -12,8 +12,7 @@ const IS_OSX = os.platform() === 'darwin'
|
|
|
|
|
const OSX_FOLDER_ICON = '/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/GenericFolderIcon.icns'
|
|
|
|
|
const HAS_FOLDER_ICON = IS_OSX && fs.existsSync(OSX_FOLDER_ICON)
|
|
|
|
|
const DEFAULT_TIMEOUT = 15 * 1000
|
|
|
|
|
const TIMEOUT_ERRNO = IS_OSX ? -110 : -60
|
|
|
|
|
|
|
|
|
|
const TIMEOUT_ERRNO = IS_OSX ? -60 : -110
|
|
|
|
|
const ENOTCONN = IS_OSX ? -57 : -107
|
|
|
|
|
|
|
|
|
|
const OpcodesAndDefaults = new Map([
|
|
|
|
@ -139,7 +138,7 @@ class Fuse extends Nanoresource {
|
|
|
|
|
this.opts = opts
|
|
|
|
|
this.mnt = path.resolve(mnt)
|
|
|
|
|
this.ops = ops
|
|
|
|
|
this.timeout = opts.timeout || DEFAULT_TIMEOUT
|
|
|
|
|
this.timeout = opts.timeout === false ? 0 : (opts.timeout || DEFAULT_TIMEOUT)
|
|
|
|
|
|
|
|
|
|
this._force = !!opts.force
|
|
|
|
|
this._mkdir = !!opts.mkdir
|
|
|
|
@ -204,7 +203,7 @@ class Fuse extends Nanoresource {
|
|
|
|
|
_makeHandlerArray () {
|
|
|
|
|
const self = this
|
|
|
|
|
const handlers = new Array(OpcodesAndDefaults.size)
|
|
|
|
|
const to = this.timeout || DEFAULT_TIMEOUT
|
|
|
|
|
const to = this.timeout
|
|
|
|
|
|
|
|
|
|
for (const [name, { op, defaults }] of OpcodesAndDefaults) {
|
|
|
|
|
const nativeSignal = binding[`fuse_native_signal_${name}`]
|
|
|
|
@ -217,7 +216,8 @@ class Fuse extends Nanoresource {
|
|
|
|
|
|
|
|
|
|
function makeHandler (name, op, defaults, nativeSignal) {
|
|
|
|
|
return function (nativeHandler, opCode, ...args) {
|
|
|
|
|
const boundSignal = autoTimeout(signal.bind(null, nativeHandler))
|
|
|
|
|
const sig = signal.bind(null, nativeHandler)
|
|
|
|
|
const boundSignal = to ? autoTimeout(sig) : sig
|
|
|
|
|
const funcName = `_op_${name}`
|
|
|
|
|
if (!self[funcName] || !self._implemented.has(op)) return boundSignal(-1, ...defaults)
|
|
|
|
|
return self[funcName].apply(self, [boundSignal, ...args])
|
|
|
|
|