diff --git a/lib/parse.js b/lib/parse.js index 69fc2c40..1a4ed0c1 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -86,12 +86,20 @@ Parse.prototype._readFile = function () { if (err) { return self.emit('error', err); } - fileName = fileName.toString('utf8'); + var entry = new Entry(); + var fileSizeKnown = !(vars.flags & 0x08); + + fileName = fileName.toString('utf8'); + entry.path = fileName; entry.props.path = fileName; entry.type = (vars.compressedSize === 0 && /[\/\\]$/.test(fileName)) ? 'Directory' : 'File'; + if (entry.type === 'File' && fileSizeKnown) { + entry.size = vars.uncompressedSize; + } + if (self._opts.verbose) { if (entry.type === 'Directory') { console.log(' creating:', fileName); @@ -127,15 +135,12 @@ Parse.prototype._readFile = function () { return self._readRecord(); }); } else { - var fileSizeKnown = !(vars.flags & 0x08); - var inflater = zlib.createInflateRaw(); inflater.on('error', function (err) { self.emit('error', err); }); if (fileSizeKnown) { - entry.size = vars.uncompressedSize; if (hasEntryListener) { entry.on('finish', self._readRecord.bind(self)); self._pullStream.pipe(vars.compressedSize, inflater).pipe(entry);