(entry, callback)
| 1558 | |
| 1559 | |
| 1560 | function _readEntryAsFiles(entry, callback){ |
| 1561 | if( !entry ){ |
| 1562 | // error |
| 1563 | var err = new Error('invalid entry'); |
| 1564 | entry = new Object(entry); |
| 1565 | entry.error = err; |
| 1566 | callback(err.message, [], [entry]); |
| 1567 | } |
| 1568 | else if( entry.isFile ){ |
| 1569 | // Read as file |
| 1570 | entry.file(function (file){ |
| 1571 | // success |
| 1572 | file.fullPath = entry.fullPath; |
| 1573 | callback(false, [file], [file]); |
| 1574 | }, function (err){ |
| 1575 | // error |
| 1576 | entry.error = err; |
| 1577 | callback('FileError.code: ' + err.code, [], [entry]); |
| 1578 | }); |
| 1579 | } |
| 1580 | else if( entry.isDirectory ){ |
| 1581 | var |
| 1582 | reader = entry.createReader() |
| 1583 | , firstAttempt = true |
| 1584 | , files = [] |
| 1585 | , all = [entry] |
| 1586 | ; |
| 1587 | |
| 1588 | var onerror = function (err){ |
| 1589 | // error |
| 1590 | entry.error = err; |
| 1591 | callback('DirectoryError.code: ' + err.code, files, all); |
| 1592 | }; |
| 1593 | var ondone = function ondone(entries){ |
| 1594 | if( firstAttempt ){ |
| 1595 | firstAttempt = false; |
| 1596 | if( !entries.length ){ |
| 1597 | entry.error = new Error('directory is empty'); |
| 1598 | } |
| 1599 | } |
| 1600 | |
| 1601 | // success |
| 1602 | if( entries.length ){ |
| 1603 | api.afor(entries, function (next, entry){ |
| 1604 | _readEntryAsFiles(entry, function (err, entryFiles, allEntries){ |
| 1605 | if( !err ){ |
| 1606 | files = files.concat(entryFiles); |
| 1607 | } |
| 1608 | all = all.concat(allEntries); |
| 1609 | |
| 1610 | if( next ){ |
| 1611 | next(); |
| 1612 | } |
| 1613 | else { |
| 1614 | reader.readEntries(ondone, onerror); |
| 1615 | } |
| 1616 | }); |
| 1617 | }); |
no test coverage detected