_SERVER array elements are all upper-case.
[core.git] / contrib / lfdb2 / read.php
1 <?php
2 error_reporting(E_ALL | E_STRICT);
3
4 define('__STEP_32'  , 3);
5 define('__FACTOR_32', 16);
6 define('__FORMAT_READ_32', 'I2');
7
8 define('__STEP_64'  , 7);
9 define('__FACTOR_64', 32);
10 define('__FORMAT_READ_64', 'N2');
11
12 // Default is 32-bit
13 $__factor = constant('__FACTOR_32');
14 $__format = constant('__FORMAT_READ_32');
15 $__step   = constant('__STEP_32');
16
17 if ((isset($_SERVER['argv'][1])) && ($_SERVER['argv'][1] == '-64')) {
18         // Use 64-bit
19         $__factor = constant('__FACTOR_64');
20         $__format = constant('__FORMAT_READ_64');
21         $__step   = constant('__STEP_64');
22 } // END - if
23
24 $buffer = file_get_contents('test.data.bin' . ($__factor * 2)) or die('Please run write.php first!' . PHP_EOL);
25
26 assert(filesize('test.data.bin' . ($__factor * 2)) == strlen($buffer));
27 assert((strlen($buffer) % 8) == 0);
28
29 print 'Hash(' . strlen($buffer) . ')=' . md5($buffer) . PHP_EOL;
30
31 $decoded = '';
32 $i = 0;
33 for ($pos = 0; $pos < strlen($buffer); $pos += 8) {
34         $part = substr($buffer, $pos, 8);
35         assert(strlen($part) == 8);
36         //print 'part='.md5($part).PHP_EOL;
37         $unpacked = unpack($__format, $part);
38         //print 'unpacked='.print_r($unpacked,true);
39         $unpacked = $unpacked[1] << $__factor | $unpacked[2];
40
41         //print 'unpacked=' . $unpacked . PHP_EOL;
42         for ($i = 0; $i < $__step; $i++) {
43                 $factor = pow(256, ($__step - 1 - $i));
44                 //print __LINE__.':i=' . $i . ',factor=' . $factor . ',unpacked=' . $unpacked . PHP_EOL;
45                 $chr = ($unpacked / $factor);
46                 //print __LINE__.':i=' . $i . ',chr=' . $chr . PHP_EOL;
47
48                 if ($chr > 0) {
49                         $a = explode('.', $chr);
50                         $chr = $a[0];
51                         //print __LINE__.':i=' . $i . ',chr=' . $chr . ',unpacked=' . $unpacked . PHP_EOL;
52                         $unpacked -= ($chr * $factor);
53                         //print __LINE__.':i=' . $i . ',chr=' . $chr . ',unpacked=' . $unpacked . PHP_EOL;
54                 } else {
55                         $chr = $unpacked;
56                         $unpacked = 0;
57                 }
58
59                 //print 'chr=' . $chr . PHP_EOL;
60                 $decoded .= chr($chr);
61         } // END - for
62 } // END - for
63
64 $decoded = gzuncompress($decoded);
65
66 print 'Writing ' . strlen($decoded) . ' bytes to output ...' . PHP_EOL;
67 file_put_contents('test.data.out' . ($__factor * 2), $decoded);
68
69 // [EOF]
70 ?>