You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.5 KiB
JavaScript
39 lines
1.5 KiB
JavaScript
'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
|
|
});
|
|
};
|