- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/tar_gz.php
- Класс: CArchiver
- Вызов: CArchiver::_writeHeader
private function _writeHeader($strFilename, $strFilename_stored)
{
if ($strFilename_stored == '')
{
$strFilename_stored = $strFilename;
}
$strFilename_ready = $this->_normalizePath($strFilename_stored);
if (strlen($strFilename_ready) > 99)
{
if (!$this->_writeLongHeader($strFilename_ready))
{
return false;
}
}
$v_info = stat($strFilename);
$v_uid = sprintf("%6s ", DecOct($v_info['uid']));
$v_gid = sprintf("%6s ", DecOct($v_info['gid']));
$v_perms = sprintf("%6s ", DecOct(fileperms($strFilename)));
$v_mtime = sprintf("%11s", DecOct(filemtime($strFilename)));
if (@is_dir($strFilename))
{
$v_typeflag = "5";
$v_size = sprintf("%11s ", DecOct(0));
}
else
{
$v_typeflag = '';
clearstatcache();
$v_size = sprintf("%11s ", DecOct(filesize($strFilename)));
}
$v_linkname = '';
$v_magic = '';
$v_version = '';
$v_uname = '';
$v_gname = '';
$v_devmajor = '';
$v_devminor = '';
$v_prefix = '';
$v_binary_data_first = pack("a100a8a8a8a12A12", $strFilename_ready, $v_perms, $v_uid, $v_gid, $v_size, $v_mtime);
$v_binary_data_last = pack("a1a100a6a2a32a32a8a8a155a12", $v_typeflag, $v_linkname, $v_magic, $v_version, $v_uname, $v_gname, $v_devmajor, $v_devminor, $v_prefix, '');
$v_checksum = 0;
for ($i = 0; $i < 148; $i++)
{
$v_checksum += ord(substr($v_binary_data_first, $i, 1));
}
for ($i = 148; $i < 156; $i++)
{
$v_checksum += ord(' ');
}
for ($i = 156, $j = 0; $i < 512; $i++, $j++)
{
$v_checksum += ord(substr($v_binary_data_last, $j, 1));
}
$this->_writeBlock($v_binary_data_first, 148);
$v_checksum = sprintf("%6s ", DecOct($v_checksum));
$v_binary_data = pack("a8", $v_checksum);
$this->_writeBlock($v_binary_data, 8);
$this->_writeBlock($v_binary_data_last, 356);
return true;
}