• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/tar_gz.php
  • Класс: CArchiver
  • Вызов: CArchiver::_writeLongHeader
private function _writeLongHeader($strFilename)
{
	$v_size = sprintf("%11s ", DecOct(mb_strlen($strFilename)));
	$v_typeflag = 'L';
	$v_linkname = '';
	$v_magic = '';
	$v_version = '';
	$v_uname = '';
	$v_gname = '';
	$v_devmajor = '';
	$v_devminor = '';
	$v_prefix = '';
	$v_binary_data_first = pack("a100a8a8a8a12A12", '././@LongLink', 0, 0, 0, $v_size, 0);
	$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);

	$p_filename = $this->_normalizePath($strFilename);

	$i = 0;
	while (($v_buffer = substr($p_filename, (($i++) * 512), 512)) != '')
	{
		$v_binary_data = pack("a512", "$v_buffer");
		$this->_writeBlock($v_binary_data);
	}
	return true;
}