UNPKG

@fredericgermain/wim

Version:
72 lines (54 loc) 1.35 kB
/** * FileHeader * @constructor * @memberOf WIM * @returns {FileHeader} */ function FileHeader() { if( !(this instanceof FileHeader) ) return new FileHeader() // _RESHDR_BASE_DISK this.size = 0x00000000000000 // 7 bytes (!) this.flags = 0x00 this.offset = 0x0000000000000000 // _RESHDR_DISK_SHORT this.originalSize = 0x0000000000000000 } FileHeader.size = 24 /** * Parse a WIM FileHeader * @param {Buffer} buffer * @param {Number} [offset=0] * @returns {FileHeader} */ FileHeader.parse = function( buffer, offset ) { return new FileHeader().parse( buffer, offset ) } /** * FileHeader prototype * @type {Object} * @ignore */ FileHeader.prototype = { constructor: FileHeader, getFlag( mask ) { return ( this.flags & mask ) === mask }, /** * Parse a WIM FileHeader * @param {Buffer} buffer * @param {Number} [offset=0] * @returns {FileHeader} */ parse( buffer, offset ) { offset = offset || 0 // _RESHDR_BASE_DISK this.size = buffer.readUIntLE( offset + 0, 6 ) + (1<<6)*buffer.readUIntLE( offset + 6, 1 ) this.flags = buffer.readUInt8( offset + 7 ) this.offset = Number(buffer.readBigInt64LE( offset + 8 )) // _RESHDR_DISK_SHORT this.originalSize = Number(buffer.readBigInt64LE( offset + 16 )) return this }, } module.exports = FileHeader