diff options
Diffstat (limited to 'deps/npm/node_modules/mkdirp/index.js')
-rw-r--r-- | deps/npm/node_modules/mkdirp/index.js | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/deps/npm/node_modules/mkdirp/index.js b/deps/npm/node_modules/mkdirp/index.js index 871488f63f..874b31095a 100644 --- a/deps/npm/node_modules/mkdirp/index.js +++ b/deps/npm/node_modules/mkdirp/index.js @@ -3,14 +3,12 @@ var fs = require('fs'); module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; -function mkdirP (p, mode, f) { +function mkdirP (p, mode, f, made) { if (typeof mode === 'function' || mode === undefined) { f = mode; mode = 0777 & (~process.umask()); } - - // secret passalong argument. - var made = arguments[3] || null; + if (!made) made = null; var cb = f || function () {}; if (typeof mode === 'string') mode = parseInt(mode, 8); @@ -29,10 +27,21 @@ function mkdirP (p, mode, f) { }); break; + case 'EISDIR': + case 'EPERM': + // Operation not permitted or already is a dir. + // This is the error you get when trying to mkdir('c:/') + // on windows, or mkdir('/') on unix. Make sure it's a + // dir by falling through to the EEXIST case. + case 'EROFS': + // a read-only file system. + // However, the dir could already exist, in which case + // the EROFS error will be obscuring a EEXIST! + // Fallthrough to that case. case 'EEXIST': fs.stat(p, function (er2, stat) { // if the stat fails, then that's super weird. - // let the original EEXIST be the failure reason. + // let the original error be the failure reason. if (er2 || !stat.isDirectory()) cb(er, made) else cb(null, made); }); @@ -45,13 +54,11 @@ function mkdirP (p, mode, f) { }); } -mkdirP.sync = function sync (p, mode) { +mkdirP.sync = function sync (p, mode, made) { if (mode === undefined) { mode = 0777 & (~process.umask()); } - - // secret passalong argument - var made = arguments[2] || null; + if (!made) made = null; if (typeof mode === 'string') mode = parseInt(mode, 8); p = path.resolve(p); |