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:
authorisaacs <i@izs.me>2013-02-06 04:26:20 +0400
committerisaacs <i@izs.me>2013-02-06 04:26:20 +0400
commit4776734b2cc11a5003899bfde799b51ca7aab4c3 (patch)
tree1e8abdb69189469b64fe0a90d70e635eacc9d5b4 /node_modules/rimraf/rimraf.js
parent82fcfc8a6b914c76488d93f6c1a5dfdc03e6ebe2 (diff)
rimraf@2.1.3
Diffstat (limited to 'node_modules/rimraf/rimraf.js')
-rw-r--r--node_modules/rimraf/rimraf.js26
1 files changed, 20 insertions, 6 deletions
diff --git a/node_modules/rimraf/rimraf.js b/node_modules/rimraf/rimraf.js
index 6a67fb430..6c8bf98ec 100644
--- a/node_modules/rimraf/rimraf.js
+++ b/node_modules/rimraf/rimraf.js
@@ -63,16 +63,20 @@ function rimraf_ (p, cb) {
if (er && er.code === "ENOENT")
return cb()
if (er && (er.code === "EPERM" || er.code === "EISDIR"))
- return rmdir(p, cb)
+ return rmdir(p, er, cb)
return cb(er)
})
}
-function rmdir (p, cb) {
+function rmdir (p, originalEr, cb) {
// try to rmdir first, and only readdir on ENOTEMPTY
+ // if we guessed wrong, and it's not a directory, then
+ // raise the original error.
fs.rmdir(p, function (er) {
if (er && er.code === "ENOTEMPTY")
rmkids(p, cb)
+ else if (er && er.code === "ENOTDIR")
+ cb(originalEr)
else
cb(er)
})
@@ -110,9 +114,19 @@ function rimrafSync (p) {
return
if (er.code !== "EPERM" && er.code !== "EISDIR")
throw er
- fs.readdirSync(p).forEach(function (f) {
- rimrafSync(path.join(p, f))
- })
- fs.rmdirSync(p)
+ try {
+ fs.rmdirSync(p)
+ } catch (er2) {
+ if (er2.code === "ENOENT")
+ return
+ if (er2.code === "ENOTDIR")
+ throw er
+ if (er2.code === "ENOTEMPTY") {
+ fs.readdirSync(p).forEach(function (f) {
+ rimrafSync(path.join(p, f))
+ })
+ fs.rmdirSync(p)
+ }
+ }
}
}