'use strict'; const Promise = require("bluebird"); const parseDirectoryRecord = require("../parse/directory-record"); module.exports = function readDirectoryExtent(image, sector, length, encoding) { return Promise.try(() => { return image.getSectorSize(); }).then((sectorSize) => { const roundToNextSector = require("../round-to-next-sector")(sectorSize); function splitRecordBuffers(buffer) { let pos = 0; let recordBuffers = []; while (pos < buffer.length) { let recordLength = buffer.readUInt8(pos); if (recordLength === 0) { /* We ran out of records for this sector, skip to the next. */ pos = roundToNextSector(pos); } else { let directoryRecord = buffer.slice(pos, pos + recordLength); recordBuffers.push(directoryRecord); pos += recordLength; } } return recordBuffers; } return Promise.try(() => { let sectorOffset = sector * sectorSize; return image.readRange(sectorOffset, sectorOffset + length - 1); }).then((buffer) => { let recordBuffers = splitRecordBuffers(buffer); }) }) };