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.
'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
} ) ;
} ;