<Website>

getID3

PHK Home

File: /lib/module.archive.szip.php

Size:2258
Storage flags:strip

<?php
















class getid3_szip extends getid3_handler
{

public function 
Analyze() {
$info = &$this->getid3->info;

$this->fseek($info['avdataoffset']);
$SZIPHeader $this->fread(6);
if (
substr($SZIPHeader04) != "SZ\x0A\x04") {
$info['error'][] = 'Expecting "53 5A 0A 04" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($SZIPHeader04)).'"';
return 
false;
}
$info['fileformat'] = 'szip';
$info['szip']['major_version'] = getid3_lib::BigEndian2Int(substr($SZIPHeader41));
$info['szip']['minor_version'] = getid3_lib::BigEndian2Int(substr($SZIPHeader51));
$info['error'][] = 'SZIP parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
return 
false;

while (!
$this->feof()) {
$NextBlockID $this->fread(2);
switch (
$NextBlockID) {
case 
'SZ':

 
 
 
$this->fseek(4SEEK_CUR);
break;

case 
'BH':
$BHheaderbytes getid3_lib::BigEndian2Int($this->fread(3));
$BHheaderdata $this->fread($BHheaderbytes);
$BHheaderoffset 0;
while (
strpos($BHheaderdata"\x00"$BHheaderoffset) > 0) {

 
 
 
 
 
 
 

$BHdataArray['filename'] = substr($BHheaderdata$BHheaderoffsetstrcspn($BHheaderdata"\x00"));
$BHheaderoffset += (strlen($BHdataArray['filename']) + 1);

$BHdataArray['owner'] = substr($BHheaderdata$BHheaderoffsetstrcspn($BHheaderdata"\x00"));
$BHheaderoffset += (strlen($BHdataArray['owner']) + 1);

$BHdataArray['group'] = substr($BHheaderdata$BHheaderoffsetstrcspn($BHheaderdata"\x00"));
$BHheaderoffset += (strlen($BHdataArray['group']) + 1);

$BHdataArray['filelength'] = getid3_lib::BigEndian2Int(substr($BHheaderdata$BHheaderoffset3));
$BHheaderoffset += 3;

$BHdataArray['access_flags'] = getid3_lib::BigEndian2Int(substr($BHheaderdata$BHheaderoffset2));
$BHheaderoffset += 2;

$BHdataArray['creation_time'] = getid3_lib::BigEndian2Int(substr($BHheaderdata$BHheaderoffset4));
$BHheaderoffset += 4;

$BHdataArray['modification_time'] = getid3_lib::BigEndian2Int(substr($BHheaderdata$BHheaderoffset4));
$BHheaderoffset += 4;

$BHdataArray['access_time'] = getid3_lib::BigEndian2Int(substr($BHheaderdata$BHheaderoffset4));
$BHheaderoffset += 4;

$info['szip']['BH'][] = $BHdataArray;
}
break;

default:
break 
2;
}
}

return 
true;

}

}

For more information about the PHK package format: http://phk.tekwire.net