Viewing File: /opt/alt/tests/alt-php81-pecl-rar_4.2.0-1.el8/tests/046.phpt

--TEST--
RarEntry::getStream() function (broken set fixed with volume callback)
--SKIPIF--
<?php if(!extension_loaded("rar")) print "skip"; ?>
--FILE--
<?php
function resolve($vol) {
	if (preg_match('/_broken/', $vol))
		return str_replace('_broken', '', $vol);
	else
		return null;
}
function int32_to_hex($value) { 
  $value &= 0xffffffff; 
  return str_pad(strtoupper(dechex($value)), 8, "0", STR_PAD_LEFT); 
}
$rar_file1 = rar_open(dirname(__FILE__).'/multi_broken.part1.rar', null, 'resolve');
foreach ($rar_file1 as $e) {
	$stream = $e->getStream();
	echo $e->getName().": ";
	$a = "";
	while (is_resource($stream) && !feof($stream)) {
		$a .= fread($stream, 8192);
	}
	echo strlen($a)." bytes, CRC ";
	echo int32_to_hex(crc32($a))."\n\n"; //you can confirm they're equal to those given by $e->getCrc()
}

echo "Done\n";
?>
--EXPECTF--
file1.txt: 18 bytes, CRC 52B28202

file2.txt: 17704 bytes, CRC F2C79881

file3.txt: 18 bytes, CRC BCBCE32E

Done
Back to Directory File Manager
<