public function Archive_Tar::_writeLongHeader

public Archive_Tar::_writeLongHeader($p_filename)

Parameters

string $p_filename:

Return value

bool

File

modules/system/system.tar.inc, line 1618

Class

Archive_Tar

Code

public function _writeLongHeader($p_filename) 
 {
  $v_size = sprintf("%11s ", DecOct(strlen($p_filename)));

  $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, 
  ''
  );

  // ----- Calculate the checksum
  $v_checksum = 0;
  // ..... First part of the header
  for ($i = 0; $i < 148; $i++) {
    $v_checksum += ord(substr($v_binary_data_first, $i, 1));
  }
  // ..... Ignore the checksum value and replace it by ' ' (space)
  for ($i = 148; $i < 156; $i++) {
    $v_checksum += ord(' ');
  }
  // ..... Last part of the header
  for ($i = 156, $j = 0; $i < 512; $i++, $j++) {
    $v_checksum += ord(substr($v_binary_data_last, $j, 1));
  }

  // ----- Write the first 148 bytes of the header in the archive
  $this->_writeBlock($v_binary_data_first, 148);

  // ----- Write the calculated checksum
  $v_checksum = sprintf("%06s ", DecOct($v_checksum));
  $v_binary_data = pack("a8", $v_checksum);
  $this->_writeBlock($v_binary_data, 8);

  // ----- Write the last 356 bytes of the header in the archive
  $this->_writeBlock($v_binary_data_last, 356);

  // ----- Write the filename as content of the block
  $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;
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/modules!system!system.tar.inc/function/Archive_Tar::_writeLongHeader/7.x