예제 #1
0
파일: ITSP.php 프로젝트: mlocati/chm-lib
 /**
  * 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();
 }
예제 #2
0
파일: ITSF.php 프로젝트: mlocati/chm-lib
 /**
  * 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;
     }
 }
예제 #3
0
파일: PMGI.php 프로젝트: mlocati/chm-lib
 /**
  * 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();
 }
예제 #4
0
파일: PMGL.php 프로젝트: mlocati/chm-lib
 /**
  * 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();
 }
예제 #5
0
파일: LZXC.php 프로젝트: mlocati/chm-lib
 /**
  * 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();
 }