/** * Initialize the instance. * * @param Reader $reader The reader that provides the data. * * @throws UnexpectedHeaderException Throws an UnexpectedHeaderException if the header signature is not valid. * @throws Exception Throws an Exception in case of errors. */ public function __construct(Reader $reader) { parent::__construct($reader); if ($this->headerSignature !== 'ITSP') { throw UnexpectedHeaderException::create('ITSP', $this->headerSignature); } if ($this->headerVersion !== 1) { throw new Exception('Unsupported ITSP version number: ' . $this->headerVersion); } /* Unknown (10) */ $reader->readUInt32(); $this->directoryChunkSize = $reader->readUInt32(); $this->quickRefDensity = $reader->readUInt32(); $this->indexDepth = $reader->readUInt32(); $this->rootIndexChunkNumber = $reader->readInt32(); $this->firstPMGLChunkNumber = $reader->readUInt32(); $this->lastPMGLChunkNumber = $reader->readUInt32(); /* Unknown (-1) */ $reader->readInt32(); $this->numberOfDirectoryChunks = $reader->readUInt32(); $this->generatorLanguage = new Language($reader->readUInt32()); $this->systemGUID = $reader->readGUID(); /* Again the size of this header (84) */ $reader->readUInt32(); /* Unknown (-1) */ $reader->readInt32(); /* Unknown (-1) */ $reader->readInt32(); /* Unknown (-1) */ $reader->readInt32(); }
/** * Initialize the instance. * * @param Reader $reader The reader that provides the data. * * @throws UnexpectedHeaderException Throws an UnexpectedHeaderException if the header signature is not valid. * @throws Exception Throws an Exception in case of errors. */ public function __construct(Reader $reader) { parent::__construct($reader); if ($this->headerSignature !== 'ITSF') { throw UnexpectedHeaderException::create('ITSF', $this->headerSignature); } if ($this->headerVersion < 2 || $this->headerVersion > 3) { throw new Exception('Unsupported ITSF version number: ' . $this->headerVersion); } /* Unknown (1) */ $reader->readUInt32(); $this->timestamp = $reader->readUInt32(); $this->originalOSLanguage = new Language($reader->readUInt32()); $this->directoryGUID = $reader->readGUID(); $this->streamGUID = $reader->readGUID(); $this->sectionOffset = $reader->readUInt64(); $this->sectionLength = $reader->readUInt64(); $this->directoryOffset = $reader->readUInt64(); $this->directoryLength = $reader->readUInt64(); if ($this->headerLength >= 96) { $this->contentOffset = $reader->readUInt64(); } else { $this->contentOffset = $this->directoryOffset + $this->directoryLength; } }
/** * Initializes the instance. * * @param Reader $reader The reader that provides the data. * * @throws UnexpectedHeaderException Throws an UnexpectedHeaderException if the header signature is not valid. * @throws Exception Throws an Exception in case of errors. */ public function __construct(Reader $reader) { parent::__construct($reader); if ($this->headerSignature !== 'PMGI') { throw UnexpectedHeaderException::create('PMGI', $this->headerSignature); } $this->freeSpace = $reader->readUInt32(); }
/** * Initializes the instance. * * @param Reader $reader The reader that provides the data. * * @throws UnexpectedHeaderException Throws an UnexpectedHeaderException if the header signature is not valid. * @throws Exception Throws an Exception in case of errors. */ public function __construct(Reader $reader) { parent::__construct($reader); if ($this->headerSignature !== 'PMGL') { throw UnexpectedHeaderException::create('PMGL', $this->headerSignature); } $this->freeSpace = $reader->readUInt32(); /* Unknown (0) */ $reader->readUInt32(); $this->previousChunk = $reader->readInt32(); $this->nextChunk = $reader->readInt32(); }
/** * Initializes the instance. * * @param Reader $reader The reader that provides the data. * * @throws UnexpectedHeaderException Throws an UnexpectedHeaderException if the header signature is not valid. * @throws Exception Throws an Exception in case of errors. */ public function __construct(Reader $reader) { $size = $reader->readUInt32(); if ($size < 6) { throw new Exception('The LZXC entry is too small'); } parent::__construct($reader); if ($this->headerSignature !== 'LZXC') { throw UnexpectedHeaderException::create('LZXC', $this->headerSignature); } $this->version = $reader->readUInt32(); if ($this->version !== 2) { throw new Exception("Unsupported LZXC header version: {$this->version}"); } $this->resetInterval = $reader->readUInt32(); $this->windowSize = $reader->readUInt32(); $this->cacheSize = $reader->readUInt32(); }