diff --git a/README.md b/README.md index 1869115..147789d 100644 --- a/README.md +++ b/README.md @@ -1348,7 +1348,7 @@ sh.tempDir(function(err, tmp) { }); ``` -#### sh.mkdirp(callback) +#### sh.mkdirp(path, callback) Recursively creates the directory at the provided path. If the directory already exists, no error is returned. All parents must diff --git a/src/providers/indexeddb.js b/src/providers/indexeddb.js index 2658163..4975d60 100644 --- a/src/providers/indexeddb.js +++ b/src/providers/indexeddb.js @@ -9,6 +9,7 @@ define(function(require) { var IDB_RW = require('src/constants').IDB_RW; var IDB_RO = require('src/constants').IDB_RO; + var Errors = require('src/errors'); function IndexedDBContext(db, mode) { var transaction = db.transaction(FILE_STORE_NAME, mode); @@ -112,7 +113,7 @@ define(function(require) { callback(null, firstAccess); }; openRequest.onerror = function onerror(error) { - callback(error); + callback(new Errors.EINVAL('IndexedDB cannot be accessed. If private browsing is enabled, disable it.')); }; }; IndexedDB.prototype.getReadOnlyContext = function() { diff --git a/src/providers/websql.js b/src/providers/websql.js index 4101de1..c765f8a 100644 --- a/src/providers/websql.js +++ b/src/providers/websql.js @@ -5,6 +5,7 @@ define(function(require) { var WSQL_SIZE = require('src/constants').WSQL_SIZE; var WSQL_DESC = require('src/constants').WSQL_DESC; var u8toArray = require('src/shared').u8toArray; + var Errors = require('src/errors'); function WebSQLContext(db, isReadOnly) { var that = this; @@ -116,6 +117,9 @@ define(function(require) { } function onError(transaction, error) { + if (error.code === 5) { + callback(new Errors.EINVAL('WebSQL cannot be accessed. If private browsing is enabled, disable it.')); + } callback(error); } function onSuccess(transaction, result) { diff --git a/src/shell/shell.js b/src/shell/shell.js index 97f91a1..22f2d01 100644 --- a/src/shell/shell.js +++ b/src/shell/shell.js @@ -499,19 +499,32 @@ define(function(require) { callback = callback || function(){}; if(!path) { - callback(new Errors.EINVAL('missing path argument')); + callback(new Errors.EINVAL("Missing path argument")); return; } - else if (path === '/'){ + else if (path === '/') { callback(); return; } - function _mkdirp(path, callback){ + function _mkdirp(path, callback) { fs.stat(path, function (err, stat) { - //doesn't exist - if (err && err.code === 'ENOENT') { + if(stat) { + if(stat.isDirectory()) { + callback(); + return; + } + else if (stat.isFile()) { + callback(new Errors.ENOTDIR()); + return; + } + } + else if (err && err.code !== 'ENOENT') { + callback(err); + return; + } + else { var parent = Path.dirname(path); - if(parent === '/'){ //parent is root + if(parent === '/') { fs.mkdir(path, function (err) { if (err && err.code != 'EEXIST') { callback(err); @@ -521,10 +534,10 @@ define(function(require) { return; }); } - else { //parent is not root, make parent first + else { _mkdirp(parent, function (err) { if (err) return callback(err); - fs.mkdir(path, function (err) { //then make dir + fs.mkdir(path, function (err) { if (err && err.code != 'EEXIST') { callback(err); return; @@ -535,21 +548,7 @@ define(function(require) { }); } } - //other error - else if (err){ - callback(err); - return; - } - //already exists - else if (stat.type === 'DIRECTORY') { - callback(); - return; - } - //not a directory - else if (stat.type === 'FILE') { - callback(new Errors.ENOTDIR()); - return; - } + }); }