function untar($tarfile)
{
$tarfile=fopen($tarfile,"r");
$datainfo="";
$data="";
while (!feof($tarfile))
{
$readdata=fread($tarfile,512);
if (substr($readdata,257,5)=="ustar")
{
if (!empty($datainfo))
{
$poscount=0;
$name="";
while (substr($datainfo,$poscount,1)!=chr(0))
{
$name.=substr($datainfo,$poscount,1);
$poscount++;
}
if (!empty($name))
{
if (substr($name,-1)=="/")
{
echo "Creating ".$name."
";
mkdir($name);
}
else
{
echo "Extracting ".$name."
";
$datasize=strlen($data)-1;
while ((substr($data,$datasize,1)==chr(0)) && ($datasize>-1))
{
$datasize--;
}
$datasize++;
$filedata="";
for ($datacount=0;$datacount<$datasize;$datacount++)
{
$filedata.=substr($data,$datacount,1);
}
$file=fopen($name,"w");
fwrite($file,$filedata);
fclose($file);
}
}
$datainfo=$readdata;
$data="";
}
else
{
$datainfo=$readdata;
}
}
else
{
$data.=$readdata;
}
}
if (!empty($datainfo))
{
$poscount=0;
$name="";
while (substr($datainfo,$poscount,1)!=chr(0))
{
$name.=substr($datainfo,$poscount,1);
$poscount++;
}
if (!empty($name))
{
if (substr($name,-1)=="/")
{
echo "Creating ".$name."
";
mkdir($name);
}
else
{
echo "Extracting ".$name."
";
$datasize=strlen($data)-1;
while ((substr($data,$datasize,1)==chr(0)) && ($datasize>-1))
{
$datasize--;
}
$datasize++;
$filedata="";
for ($datacount=0;$datacount<$datasize;$datacount++)
{
$filedata.=substr($data,$datacount,1);
}
$file=fopen($name,"w");
fwrite($file,$filedata);
fclose($file);
}
}
$datainfo=$readdata;
$data="";
}
fclose($tarfile);
}