foreach ($filename_array as $filename) { if (is_int(stripos($filename, 'control.tar.gz'))) { $control_c_raw_data = $raw_data->getfile($filename); $innername = $filename; goto nextstep; } } nextstep: if (is_int(stripos($control_c_raw_data[0][0], 'control.tar.gz'))) { $control_tar_path = "../tmp/" . $r_id . "/old.tar.gz"; $control_tar_handle = fopen($control_tar_path, 'w'); fputs($control_tar_handle, $control_c_raw_data[0][6]); fclose($control_tar_handle); $control_tar = new Tar(); $new_tar = new Tar(); $control_tar->load($control_tar_path); $control_array = $control_tar->contents(); foreach ($control_array as $c_key => $c_value) { $alert .= "· " . sprintf(__('Processing file: %s'), htmlspecialchars($c_key)) . "<br />"; if ($c_key != "control") { $new_tar->add_file($c_key, "", $control_array[$c_key]['data']); } } $new_path = "../tmp/" . $r_id . "/control.tar.gz"; $new_tar->add_file("control", "", $f_Package); $new_tar->save($new_path); } $replace_result = $raw_data->replace($innername, $new_path); $success = true; if ($replace_result) { $alert .= "· " . __('Package has been successfully written!') . "<br />";
if (is_int(stripos($control_c_raw_data[0][0], 'control.tar.gz'))) { if (!is_dir("../tmp/")) { mkdir("../tmp/"); } if (!is_dir("../tmp/" . $r_id)) { mkdir("../tmp/" . $r_id); } $t_path = "../tmp/" . $r_id . '/control.tar.gz'; if (file_exists($t_path)) { unlink($t_path); } $control_tar_handle = fopen($t_path, 'w'); fputs($control_tar_handle, $control_c_raw_data[0][6]); fclose($control_tar_handle); $control_tar = new Tar(); $control_tar->load($t_path); $control_array = $control_tar->contents(); $control_data = $control_array['control']['data']; $plain_array = explode("\n", $control_data); foreach ($plain_array as $line) { if (strlen(trim(substr($line, 0, 1))) == 0) { $t_value = trim($line); $t_package[$t_key] .= "\n" . $t_value; } else { if (preg_match("#^Package|Source|Version|Priority|Section|Essential|Maintainer|Pre-Depends|Depends|Recommends|Suggests|Conflicts|Provides|Replaces|Enhances|Architecture|Filename|Size|Installed-Size|Description|Origin|Bugs|Name|Author|Homepage|Website|Depiction|Icon|Tag|Sponsor#", $line)) { preg_match("#^([^:]*?):(.*)#", $line, $t_matches); $t_key = trim($t_matches[1]); $t_value = trim($t_matches[2]); $t_package[$t_key] = $t_value; } }
} /* nonzero indicates error */ public function save_one($f, $name, $file) { $file['size'] = strlen($file['data']); $file['name'] = $name; $hdr_data = $this->header_pack($file); if ($hdr_data === FALSE) { return -1; } unset($file['size']); /* size is implicit in data */ unset($file['name']); /* name is array key */ $f->record_save($hdr_data); $f->record_save($file['data']); return 0; } } if (isset($argv)) { $tar = new Tar(); if (count($argv) > 1) { $tar->load($argv[1]); } else { $tar->load("/dev/stdin"); } foreach ($tar->files as $name => $file) { echo $name . "\n"; } $tar->save("somefile.tar.gz", ".gz"); }