Merge branch 'develop' of github.com:js-platform/filer into develop

This commit is contained in:
Alan K 2014-04-17 12:51:12 -04:00
commit 9a3a2d14e6
4 changed files with 29 additions and 25 deletions

View File

@ -1323,7 +1323,7 @@ sh.tempDir(function(err, tmp) {
}); });
``` ```
#### sh.mkdirp(callback)<a name="mkdirp"></a> #### sh.mkdirp(path, callback)<a name="mkdirp"></a>
Recursively creates the directory at the provided path. If the Recursively creates the directory at the provided path. If the
directory already exists, no error is returned. All parents must directory already exists, no error is returned. All parents must

View File

@ -9,6 +9,7 @@ define(function(require) {
var IDB_RW = require('src/constants').IDB_RW; var IDB_RW = require('src/constants').IDB_RW;
var IDB_RO = require('src/constants').IDB_RO; var IDB_RO = require('src/constants').IDB_RO;
var Errors = require('src/errors');
function IndexedDBContext(db, mode) { function IndexedDBContext(db, mode) {
var transaction = db.transaction(FILE_STORE_NAME, mode); var transaction = db.transaction(FILE_STORE_NAME, mode);
@ -112,7 +113,7 @@ define(function(require) {
callback(null, firstAccess); callback(null, firstAccess);
}; };
openRequest.onerror = function onerror(error) { 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() { IndexedDB.prototype.getReadOnlyContext = function() {

View File

@ -5,6 +5,7 @@ define(function(require) {
var WSQL_SIZE = require('src/constants').WSQL_SIZE; var WSQL_SIZE = require('src/constants').WSQL_SIZE;
var WSQL_DESC = require('src/constants').WSQL_DESC; var WSQL_DESC = require('src/constants').WSQL_DESC;
var u8toArray = require('src/shared').u8toArray; var u8toArray = require('src/shared').u8toArray;
var Errors = require('src/errors');
function WebSQLContext(db, isReadOnly) { function WebSQLContext(db, isReadOnly) {
var that = this; var that = this;
@ -116,6 +117,9 @@ define(function(require) {
} }
function onError(transaction, error) { 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); callback(error);
} }
function onSuccess(transaction, result) { function onSuccess(transaction, result) {

View File

@ -365,19 +365,32 @@ define(function(require) {
callback = callback || function(){}; callback = callback || function(){};
if(!path) { if(!path) {
callback(new Errors.EINVAL('missing path argument')); callback(new Errors.EINVAL("Missing path argument"));
return; return;
} }
else if (path === '/'){ else if (path === '/') {
callback(); callback();
return; return;
} }
function _mkdirp(path, callback){ function _mkdirp(path, callback) {
fs.stat(path, function (err, stat) { fs.stat(path, function (err, stat) {
//doesn't exist if(stat) {
if (err && err.code === 'ENOENT') { 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); var parent = Path.dirname(path);
if(parent === '/'){ //parent is root if(parent === '/') {
fs.mkdir(path, function (err) { fs.mkdir(path, function (err) {
if (err && err.code != 'EEXIST') { if (err && err.code != 'EEXIST') {
callback(err); callback(err);
@ -387,10 +400,10 @@ define(function(require) {
return; return;
}); });
} }
else { //parent is not root, make parent first else {
_mkdirp(parent, function (err) { _mkdirp(parent, function (err) {
if (err) return callback(err); if (err) return callback(err);
fs.mkdir(path, function (err) { //then make dir fs.mkdir(path, function (err) {
if (err && err.code != 'EEXIST') { if (err && err.code != 'EEXIST') {
callback(err); callback(err);
return; return;
@ -401,21 +414,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;
}
}); });
} }