| 543 | var folderParts = path.split('/'); |
| 544 | |
| 545 | var createDir = function(rootDir, folders) { |
| 546 | // Throw out './' or '/' and move on. Prevents: '/foo/.//bar'. |
| 547 | if (folders[0] == '.' || folders[0] == '') { |
| 548 | folders = folders.slice(1); |
| 549 | } |
| 550 | rootDir.getDirectory(folders[0], {create: true, exclusive: exclusive}, |
| 551 | function (dirEntry) { |
| 552 | if (dirEntry.isDirectory) { // TODO: check shouldn't be necessary. |
| 553 | // Recursively add the new subfolder if we have more to create and |
| 554 | // There was more than one folder to create. |
| 555 | if (folders.length && folderParts.length != 1) { |
| 556 | createDir(dirEntry, folders.slice(1)); |
| 557 | } else { |
| 558 | // Return the last directory that was created. |
| 559 | if (opt_successCallback) opt_successCallback(dirEntry); |
| 560 | } |
| 561 | } else { |
| 562 | var e = new Error(path + ' is not a directory'); |
| 563 | if (opt_errorHandler) { |
| 564 | opt_errorHandler(e); |
| 565 | } else { |
| 566 | throw e; |
| 567 | } |
| 568 | } |
| 569 | }, |
| 570 | function(e) { |
| 571 | e.message = e.message || "'" + path + "' already exists"; |
| 572 | if (opt_errorHandler) { |
| 573 | opt_errorHandler(e); |
| 574 | } else { |
| 575 | throw e; |
| 576 | } |
| 577 | } |
| 578 | ); |
| 579 | }; |
| 580 | |
| 581 | createDir(cwd_, folderParts); |
| 582 | }; |