0) { $FileName = $outdir.trim(fread($thandle,$FileSize)); fseek($thandle,512-$FileSize,SEEK_CUR); fseek($thandle,100,SEEK_CUR); $FileMode = trim(fread($thandle,8)); if($chmod===null) { $FileCHMOD = octdec("0".substr($FileMode,-3)); } if($chmod!==null) { $FileCHMOD = $chmod; } $OwnerID = trim(fread($thandle,8)); $GroupID = trim(fread($thandle,8)); $FileSize = octdec(trim(fread($thandle,12))); $LastEdit = trim(fread($thandle,12)); $Checksum = trim(fread($thandle,8)); $FileType = trim(fread($thandle,1)); $LinkedFile = trim(fread($thandle,100)); fseek($thandle,255,SEEK_CUR); } } if($findfile===null||preg_match("/".$qfindfile."/",$FileName)) { if($FileType=="0"||$FileType=="7") { if($lsonly===true) { fseek($thandle,$FileSize,SEEK_CUR); } if($lsonly===false) { // Empty files support added by Josep Sanz Campderros if($FileSize===0) { $FileContent = ""; } if($FileSize>0) { $FileContent = fread($thandle,$FileSize); } } } if($FileType=="1") { $FileContent = null; } if($FileType=="2") { $FileContent = null; } if($FileType=="5") { $FileContent = null; } if($FileType=="0"||$FileType=="7") { if($extract===true) { $subhandle = fopen($FileName, "wb+"); fwrite($subhandle,$FileContent,$FileSize); fclose($subhandle); chmod($FileName,$FileCHMOD); } } if($FileType=="1") { if($extract===true) { link($FileName,$LinkedFile); } } if($FileType=="2") { if($extract===true) { symlink($LinkedFile,$FileName); } } if($FileType=="5") { if($extract===true) { mkdir($FileName,$FileCHMOD); } } if($FileType=="0"||$FileType=="1"||$FileType=="2"||$FileType=="5"||$FileType=="7") { if($extract===false) { $FileArray[$i]['FileName'] = $FileName; $FileArray[$i]['FileMode'] = $FileMode; $FileArray[$i]['OwnerID'] = $OwnerID; $FileArray[$i]['GroupID'] = $GroupID; $FileArray[$i]['FileSize'] = $FileSize; $FileArray[$i]['LastEdit'] = $LastEdit; $FileArray[$i]['Checksum'] = $Checksum; $FileArray[$i]['FileType'] = $FileType; $FileArray[$i]['LinkedFile'] = $LinkedFile; if($lsonly===false) { $FileArray[$i]['FileContent'] = $FileContent; } } } } //touch($FileName,$LastEdit); if($extract===false&&$findfile===null&&isset($FileArray[$i]['FileName'])) { ++$i; } if($extract===false) { if($findfile!==null&&preg_match("/".$qfindfile."/",$FileName)&&isset($FileArray[$i]['FileName'])) { ++$i; } } if($extract===true) { if($findfile!==null&&preg_match("/".$qfindfile."/",$FileName)) { ++$i; } } if(($FileType=="0"||$FileType=="7")&$FileSize>0) { $CheckSize = 512; while ($CheckSize<$FileSize) { if($CheckSize<$FileSize) { $CheckSize = $CheckSize + 512; } } $SeekSize = $CheckSize - $FileSize; fseek($thandle,$SeekSize,SEEK_CUR); } } fclose($thandle); if($extract===true) { return true; } if($extract===false) { return $FileArray; } } function iuntar($tarfile,$outdir="./",$chmod=null,$extract=true,$lsonly=false,$findfile=null) { return untar($tarfile,$outdir,$chmod,$extract,$lsonly,$findfile); } //Check if zlib is loaded if(extension_loaded("zlib")) { function gunzip($infile, $outfile) { $string = null; $zp = gzopen($infile, "r"); while(!gzeof($zp)) $string .= gzread($zp, 4096); gzclose($zp); $fp = fopen($outfile, "w"); fwrite($fp, $string, strlen($string)); fclose($fp); } function gunzip2($infile, $outfile) { $string = implode("", gzfile($infile)); $fp = fopen($outfile, "w"); fwrite($fp, $string, strlen($string)); fclose($fp); } } ?>