function Archive_Tar::__construct

Archivo

drupal-7.x/modules/system/system.tar.inc, line 105

Class

Archive_Tar
Creates a (compressed) Tar archive *

Código

function __construct($p_tarname, $p_compress = null) {
  //        $this->PEAR();
  $this->_compress = false;
  $this->_compress_type = 'none';
  if (($p_compress === null) || ($p_compress == '')) {
    if (@file_exists($p_tarname)) {
      if ($fp = @fopen($p_tarname, "rb")) {
        // look for gzip magic cookie
        $data = fread($fp, 2);
        fclose($fp);
        if ($data == "\37\213") {
          $this->_compress = true;
          $this->_compress_type = 'gz';
          // No sure it's enought for a magic code ....
        }
        elseif ($data == "BZ") {
          $this->_compress = true;
          $this->_compress_type = 'bz2';
        }
      }
    }
    else {
      // probably a remote file or some file accessible
      // through a stream interface
      if (substr($p_tarname, -2) == 'gz') {
        $this->_compress = true;
        $this->_compress_type = 'gz';
      }
      elseif ((substr($p_tarname, -3) == 'bz2') || (substr($p_tarname, -2) == 'bz')) {
        $this->_compress = true;
        $this->_compress_type = 'bz2';
      }
    }
  }
  else {
    if (($p_compress === true) || ($p_compress == 'gz')) {
      $this->_compress = true;
      $this->_compress_type = 'gz';
    }
    else if ($p_compress == 'bz2') {
      $this->_compress = true;
      $this->_compress_type = 'bz2';
    }
    else {
      die("Unsupported compression type '$p_compress'\n" . "Supported types are 'gz' and 'bz2'.\n");
      return false;
    }
  }
  $this->_tarname = $p_tarname;
  if ($this->_compress) { // assert zlib or bz2 extension support
    if ($this->_compress_type == 'gz') {
      $extname = 'zlib';
    }
    else if ($this->_compress_type == 'bz2') {
      $extname = 'bz2';
    }

    if (!extension_loaded($extname)) {
      //                PEAR::loadExtension($extname);
      $this->loadExtension($extname);
    }
    if (!extension_loaded($extname)) {
      die("The extension '$extname' couldn't be found.\n" . "Please make sure your version of PHP was built " . "with '$extname' support.\n");
      return false;
    }
  }
}