Source for file oleread.inc
Documentation is available at oleread.inc
define('NUM_BIG_BLOCK_DEPOT_BLOCKS_POS', 0x2c);  
define('SMALL_BLOCK_DEPOT_BLOCK_POS', 0x3c);  
define('ROOT_START_BLOCK_POS', 0x30);  
define('BIG_BLOCK_SIZE', 0x200);  
define('SMALL_BLOCK_SIZE', 0x40);  
define('EXTENSION_BLOCK_POS', 0x44);  
define('NUM_EXTENSION_BLOCK_POS', 0x48);  
define('PROPERTY_STORAGE_BLOCK_SIZE', 0x80);  
define('BIG_BLOCK_DEPOT_BLOCKS_POS', 0x4c);  
define('SMALL_BLOCK_THRESHOLD', 0x1000);  
// property storage offsets  
define('SIZE_OF_NAME_POS', 0x40);  
define('START_BLOCK_POS', 0x74);  
//echo 'ROOT_START_BLOCK_POS = '.ROOT_START_BLOCK_POS."\n";  
//echo bin2hex($data[ROOT_START_BLOCK_POS])."\n";  
//echo $data[ROOT_START_BLOCK_POS];  
        return ord($data[$pos]) | 
(ord($data[$pos+
1]) << 
8) | 
(ord($data[$pos+
2]) << 
16) | 
(ord($data[$pos+
3]) << 
24);   
    function read($sFileName){  
        // check if file exist and is readable (Darko Miljanovic)  
        echo $this->numBigBlockDepotBlocks." ";  
        echo $this->sbdStartBlock." ";  
        echo $this->rootStartBlock." ";  
        echo $this->extensionBlock." ";  
        echo $this->numExtensionBlocks." ";  
        //echo "sbdStartBlock = $this->sbdStartBlock\n";  
        $bigBlockDepotBlocks = 
array();  
    $bbdBlocks = 
$this->numBigBlockDepotBlocks;  
            if ($this->numExtensionBlocks != 
0) {  
        for ($i = 
0; $i < 
$bbdBlocks; $i++
) {  
        for ($j = 
0; $j < 
$this->numExtensionBlocks; $j++
) {  
            $blocksToRead = 
min($this->numBigBlockDepotBlocks - 
$bbdBlocks, BIG_BLOCK_SIZE / 
4 - 
1);  
            for ($i = 
$bbdBlocks; $i < 
$bbdBlocks + 
$blocksToRead; $i++
) {  
            $bbdBlocks += 
$blocksToRead;  
            if ($bbdBlocks < 
$this->numBigBlockDepotBlocks) {  
       // var_dump($bigBlockDepotBlocks);  
        $this->bigBlockChain = 
array();  
        for ($i = 
0; $i < 
$this->numBigBlockDepotBlocks; $i++
) {  
    //var_dump($this->bigBlockChain);  
        // readSmallBlockDepot();  
        $sbdBlock = 
$this->sbdStartBlock;  
        $this->smallBlockChain = 
array();  
        while ($sbdBlock != -
2) {  
            $this->smallBlockChain[$index] = 
GetInt4d($this->data, $pos);  
          $sbdBlock = 
$this->bigBlockChain[$sbdBlock];  
        // readData(rootStartBlock)  
        $block = 
$this->rootStartBlock;  
            $pos = ($block + 1) * BIG_BLOCK_SIZE;  
            $this->entry = $this->entry.substr($this->data, $pos, BIG_BLOCK_SIZE);  
            $block = $this->bigBlockChain[$block];  
        //echo '==='.$this->entry."===";  
            //echo "pos = $pos data=$data\n";      
        $block = 
$this->bigBlockChain[$block];  
        //var_dump($this->entry);  
        while ($offset < 
strlen($this->entry)) {  
              //$maxBlock = strlen($d) / BIG_BLOCK_SIZE - 1;  
            for ($i = 
0; $i < 
$nameSize ; $i++
) {  
                'startBlock' => 
$startBlock,  
            if (($name == 
"Workbook") || 
($name == 
"Book")) {  
                $this->wrkbook = 
count($this->props) - 
1;  
            if ($name == 
"Root Entry") {  
                $this->rootentry = 
count($this->props) - 
1;  
            //echo "name ==$name=\n";  
//          getSmallBlockStream(PropertyStorage ps)  
            $rootdata = 
$this->__readData($this->props[$this->rootentry]['startBlock']);  
            $block = 
$this->props[$this->wrkbook]['startBlock'];  
                  $block = 
$this->smallBlockChain[$block];  
            if ($numBlocks == 
0) return '';  
            //echo "numBlocks = $numBlocks\n";  
        //byte[] streamData = new byte[numBlocks * BIG_BLOCK_SIZE];  
            //print_r($this->wrkbook);  
            $block = 
$this->props[$this->wrkbook]['startBlock'];  
              $block = 
$this->bigBlockChain[$block];  
            //echo 'stream'.$streamData;  
 
 
	
		Documentation generated on Thu, 08 Jan 2009 17:47:35 +0100 by phpDocumentor 1.4.0a2