@@ -122,9 +122,9 @@ protected function extractAction(string $file, string $extractPath): void
122122 echo 'Extract finished! ' . PHP_EOL ;
123123 }
124124
125- protected function extractFiles (Volume $ primaryVolume , IsoFile $ isoFile , string $ destinationDir ): void
125+ protected function extractFiles (Volume $ volumeDescriptor , IsoFile $ isoFile , string $ destinationDir ): void
126126 {
127- $ pathTable = $ primaryVolume ->loadTable ($ isoFile );
127+ $ pathTable = $ volumeDescriptor ->loadTable ($ isoFile );
128128
129129 if ($ pathTable === null ) {
130130 return ;
@@ -135,7 +135,7 @@ protected function extractFiles(Volume $primaryVolume, IsoFile $isoFile, string
135135 /** @var PathTableRecord $pathRecord */
136136 foreach ($ pathTable as $ pathRecord ) {
137137 // check extents
138- $ extents = $ pathRecord ->loadExtents ($ isoFile , $ primaryVolume ->blockSize );
138+ $ extents = $ pathRecord ->loadExtents ($ isoFile , $ volumeDescriptor ->blockSize , ( $ volumeDescriptor -> getType () === Type:: SUPPLEMENTARY_VOLUME_DESC ), $ volumeDescriptor -> jolietLevel );
139139
140140 if ($ extents !== false ) {
141141 /** @var FileDirectory $extentRecord */
@@ -153,7 +153,7 @@ protected function extractFiles(Volume $primaryVolume, IsoFile $isoFile, string
153153 $ dataLength = $ extentRecord ->dataLength ;
154154 echo $ fullPath . ' (location: ' . $ location . ') (length: ' . $ dataLength . ') ' . PHP_EOL ;
155155
156- $ pathRecord ->extractFile ($ isoFile , $ primaryVolume ->blockSize , $ location , $ dataLength , $ fullPath );
156+ $ pathRecord ->extractFile ($ isoFile , $ volumeDescriptor ->blockSize , $ location , $ dataLength , $ fullPath );
157157 } else {
158158 if (! is_dir ($ fullPath )) {
159159 if (mkdir ($ fullPath ) === false ) {
@@ -172,6 +172,7 @@ protected function infoVolume(Volume $volumeDescriptor): void
172172 echo ' - System ID: ' . $ volumeDescriptor ->systemId . PHP_EOL ;
173173 echo ' - Volume ID: ' . $ volumeDescriptor ->volumeId . PHP_EOL ;
174174 echo ' - App ID: ' . $ volumeDescriptor ->appId . PHP_EOL ;
175+ echo ' - File Structure Version: ' . $ volumeDescriptor ->fileStructureVersion . PHP_EOL ;
175176 echo ' - Volume Space Size: ' . $ volumeDescriptor ->volumeSpaceSize . PHP_EOL ;
176177 echo ' - Volume Set Size: ' . $ volumeDescriptor ->volumeSetSize . PHP_EOL ;
177178 echo ' - Volume SeqNum: ' . $ volumeDescriptor ->volumeSeqNum . PHP_EOL ;
@@ -186,6 +187,10 @@ protected function infoVolume(Volume $volumeDescriptor): void
186187 echo ' - Modification Date: ' . $ volumeDescriptor ->modificationDate ?->toDateTimeString() . PHP_EOL ;
187188 echo ' - Expiration Date: ' . $ volumeDescriptor ->expirationDate ?->toDateTimeString() . PHP_EOL ;
188189 echo ' - Effective Date: ' . $ volumeDescriptor ->effectiveDate ?->toDateTimeString() . PHP_EOL ;
190+
191+ if ($ volumeDescriptor instanceof SupplementaryVolume && $ volumeDescriptor ->jolietLevel !== 0 ) {
192+ echo ' - Joliet Level: ' . $ volumeDescriptor ->jolietLevel . PHP_EOL ;
193+ }
189194 }
190195
191196 protected function displayFiles (Volume $ volumeDescriptor , IsoFile $ isoFile ): void
@@ -201,7 +206,7 @@ protected function displayFiles(Volume $volumeDescriptor, IsoFile $isoFile): voi
201206 /** @var PathTableRecord $pathRecord */
202207 foreach ($ pathTable as $ pathRecord ) {
203208 // check extents
204- $ extents = $ pathRecord ->loadExtents ($ isoFile , $ volumeDescriptor ->blockSize );
209+ $ extents = $ pathRecord ->loadExtents ($ isoFile , $ volumeDescriptor ->blockSize , ( $ volumeDescriptor -> getType () === Type:: SUPPLEMENTARY_VOLUME_DESC ), $ volumeDescriptor -> jolietLevel );
205210
206211 if ($ extents !== false ) {
207212 /** @var FileDirectory $extentRecord */
0 commit comments