Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/graceful-fs/graceful-fs.js')
-rw-r--r--node_modules/graceful-fs/graceful-fs.js32
1 files changed, 15 insertions, 17 deletions
diff --git a/node_modules/graceful-fs/graceful-fs.js b/node_modules/graceful-fs/graceful-fs.js
index 856fc66bf..5d136c27f 100644
--- a/node_modules/graceful-fs/graceful-fs.js
+++ b/node_modules/graceful-fs/graceful-fs.js
@@ -7,12 +7,10 @@ var fs = require("fs")
if (fs.open === gracefulOpen) return
var queue = []
- , curOpen = 0
, constants = require("constants")
-
exports = module.exports = fs
-
+fs._curOpen = 0
fs.MIN_MAX_OPEN = 64
fs.MAX_OPEN = 1024
@@ -39,17 +37,17 @@ function gracefulOpen (path, flags, mode, cb) {
if (typeof mode === "function") cb = mode, mode = null
if (typeof cb !== "function") cb = noop
- if (curOpen >= fs.MAX_OPEN) {
+ if (fs._curOpen >= fs.MAX_OPEN) {
queue.push(new OpenReq(path, flags, mode, cb))
setTimeout(flush)
return
}
open(path, flags, mode, function (er, fd) {
- if (er && er.code === "EMFILE" && curOpen > fs.MIN_MAX_OPEN) {
+ if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) {
// that was too many. reduce max, get back in queue.
// this should only happen once in a great while, and only
// if the ulimit -n is set lower than 1024.
- fs.MAX_OPEN = curOpen - 1
+ fs.MAX_OPEN = fs._curOpen - 1
return fs.open(path, flags, mode, cb)
}
cb(er, fd)
@@ -58,33 +56,33 @@ function gracefulOpen (path, flags, mode, cb) {
function open (path, flags, mode, cb) {
cb = cb || noop
- curOpen ++
+ fs._curOpen ++
originalOpen.call(fs, path, flags, mode, function (er, fd) {
- if (er) {
- onclose()
- }
-
+ if (er) onclose()
cb(er, fd)
})
}
fs.openSync = function (path, flags, mode) {
- curOpen ++
- return originalOpenSync.call(fs, path, flags, mode)
+ var ret
+ try {
+ ret = originalOpenSync.call(fs, path, flags, mode)
+ fs._curOpen ++
+ } finally {}
+ return ret
}
function onclose () {
- curOpen --
+ fs._curOpen --
flush()
}
function flush () {
- while (curOpen < fs.MAX_OPEN) {
+ while (fs._curOpen < fs.MAX_OPEN) {
var req = queue.shift()
- if (!req) break
+ if (!req) return
open(req.path, req.flags || "r", req.mode || 0777, req.cb)
}
- if (queue.length === 0) return
}
fs.close = function (fd, cb) {