'use strict'; const createBufferReader = require("../../buffer-reader"); const createBitParser = require("../../../bit-parser"); const parsePrimaryVolumeDescriptor = require("./primary-volume"); const parseEscapeSequences = require("../../parse/escape-sequences"); /* Supplementary volume flags: (ref http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-119.pdf) * Bit Description * 0 If set, the Escape Sequences field specifies at least one escape sequence not registered according to ISO 2375. * 1 - 7 Reserved */ let parseVolumeFlags = createBitParser([ "hasNonISO2375EscapeSequences", null, null, null, null, null, null, null ]); module.exports = function parseSupplementaryVolumeDescriptor(data) { let bufferReader = createBufferReader(data); let escapeSequences = data.slice(81, 113); let encodings = parseEscapeSequences(escapeSequences); /* The format of a primary and supplementary volume descriptor are mostly the same - the only real difference is that a supplementary volume descriptor will also have a volumeFlags and escapeSequences field. We can therefore just parse this volume descriptor like a primary volume descriptor, and then merge in the additional fields. */ return Object.assign(parsePrimaryVolumeDescriptor(data, encodings[0]), { volumeFlags: parseVolumeFlags(bufferReader.int8(0)), escapeSequences: escapeSequences, encodings: encodings }); };