private function Archive_Tar::_extractInString

private Archive_Tar::_extractInString($p_filename)

This method extract from the archive one file identified by $p_filename. The return value is a string with the file content, or null on error.

Parameters

string $p_filename The path of the file to extract in a string.:

Return value

a string with the file content or null.

File

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

Class

Archive_Tar

Code

private function _extractInString($p_filename) 
 {
  $v_result_str = "";

  while (strlen($v_binary_data = $this->_readBlock()) != 0) {
    if (!$this->_readHeader($v_binary_data, $v_header)) {
      return null;
    }

    if ($v_header['filename'] == '') {
      continue;
    }

    // ----- Look for long filename
    if ($v_header['typeflag'] == 'L') {
      if (!$this->_readLongHeader($v_header)) {
        return null;
      }
    }

    if ($v_header['filename'] == $p_filename) {
      if ($v_header['typeflag'] == "5") {
        $this->_error(
        'Unable to extract in string a directory '
          . 'entry {' . $v_header['filename'] . '}'
          );
        return null;
      }
      else {
        $n = floor($v_header['size'] / 512);
        for ($i = 0; $i < $n; $i++) {
          $v_result_str .= $this->_readBlock();
        }
        if (($v_header['size'] % 512) != 0) {
          $v_content = $this->_readBlock();
          $v_result_str .= substr(
          $v_content, 
          0, 
          ($v_header['size'] % 512)
          );
        }
        return $v_result_str;
      }
    }
    else {
      $this->_jumpBlock(ceil(($v_header['size'] / 512)));
    }
  }

  return null;
}

© 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::_extractInString/7.x