|
@@ 2145-2188 (lines=44) @@
|
| 2142 |
|
// ----- Do the extraction |
| 2143 |
|
if ($v_extract_file && ($v_header['typeflag'] != '5')) { |
| 2144 |
|
// ----- Open the destination file in write mode |
| 2145 |
|
if (($v_dest_file = @fopen($v_header['filename'], 'wb')) == 0) { |
| 2146 |
|
TrFctMessage(__FILE__, __LINE__, 2, 'Error while opening '.$v_header['filename'].' in write binary mode'); |
| 2147 |
|
|
| 2148 |
|
// ----- Change the file status |
| 2149 |
|
$v_header['status'] = 'write_error'; |
| 2150 |
|
|
| 2151 |
|
// ----- Jump to next file |
| 2152 |
|
TrFctMessage(__FILE__, __LINE__, 2, 'Jump to next file'); |
| 2153 |
|
if ($p_tar_mode === 'tar') { |
| 2154 |
|
fseek($v_tar, ftell($v_tar) + (ceil($v_header['size'] / 512) * 512)); |
| 2155 |
|
} else { |
| 2156 |
|
gzseek($v_tar, gztell($v_tar) + (ceil($v_header['size'] / 512) * 512)); |
| 2157 |
|
} |
| 2158 |
|
} else { |
| 2159 |
|
TrFctMessage(__FILE__, __LINE__, 2, 'Start extraction of '.$v_header['filename'].''); |
| 2160 |
|
|
| 2161 |
|
// ----- Read data |
| 2162 |
|
$n = floor($v_header['size'] / 512); |
| 2163 |
|
for ($i = 0; $i < $n; ++$i) { |
| 2164 |
|
TrFctMessage(__FILE__, __LINE__, 3, 'Read complete 512 bytes block number '.($i + 1)); |
| 2165 |
|
if ($p_tar_mode === 'tar') { |
| 2166 |
|
$v_content = fread($v_tar, 512); |
| 2167 |
|
} else { |
| 2168 |
|
$v_content = gzread($v_tar, 512); |
| 2169 |
|
} |
| 2170 |
|
fwrite($v_dest_file, $v_content, 512); |
| 2171 |
|
} |
| 2172 |
|
if (($v_header['size'] % 512) != 0) { |
| 2173 |
|
TrFctMessage(__FILE__, __LINE__, 3, 'Read last '.($v_header['size'] % 512).' bytes in a 512 block'); |
| 2174 |
|
if ($p_tar_mode === 'tar') { |
| 2175 |
|
$v_content = fread($v_tar, 512); |
| 2176 |
|
} else { |
| 2177 |
|
$v_content = gzread($v_tar, 512); |
| 2178 |
|
} |
| 2179 |
|
fwrite($v_dest_file, $v_content, $v_header['size'] % 512); |
| 2180 |
|
} |
| 2181 |
|
|
| 2182 |
|
// ----- Close the destination file |
| 2183 |
|
fclose($v_dest_file); |
| 2184 |
|
|
| 2185 |
|
// ----- Change the file mode, mtime |
| 2186 |
|
touch($v_header['filename'], $v_header['mtime']); |
| 2187 |
|
//chmod($v_header['filename'], decoct($v_header['mode'])); |
| 2188 |
|
} |
| 2189 |
|
|
| 2190 |
|
// ----- Check the file size |
| 2191 |
|
clearstatcache(); |
|
@@ 2665-2708 (lines=44) @@
|
| 2662 |
|
// ----- Do the real bytes extraction (if not a directory) |
| 2663 |
|
if ($v_extract_file && ($v_header['typeflag'] != '5')) { |
| 2664 |
|
// ----- Open the destination file in write mode |
| 2665 |
|
if (($v_dest_file = @fopen($v_header['filename'], 'wb')) == 0) { |
| 2666 |
|
TrFctMessage(__FILE__, __LINE__, 2, 'Error while opening '.$v_header['filename'].' in write binary mode'); |
| 2667 |
|
|
| 2668 |
|
// ----- Change the file status |
| 2669 |
|
$v_header['status'] = 'write_error'; |
| 2670 |
|
|
| 2671 |
|
// ----- Jump to next file |
| 2672 |
|
TrFctMessage(__FILE__, __LINE__, 2, 'Jump to next file'); |
| 2673 |
|
if ($p_tar_mode === 'tar') { |
| 2674 |
|
fseek($v_tar, ftell($v_tar) + (ceil($v_header['size'] / 512) * 512)); |
| 2675 |
|
} else { |
| 2676 |
|
gzseek($v_tar, gztell($v_tar) + (ceil($v_header['size'] / 512) * 512)); |
| 2677 |
|
} |
| 2678 |
|
} else { |
| 2679 |
|
TrFctMessage(__FILE__, __LINE__, 2, 'Start extraction of '.$v_header['filename'].''); |
| 2680 |
|
|
| 2681 |
|
// ----- Read data |
| 2682 |
|
$n = floor($v_header['size'] / 512); |
| 2683 |
|
for ($i = 0; $i < $n; ++$i) { |
| 2684 |
|
TrFctMessage(__FILE__, __LINE__, 3, 'Read complete 512 bytes block number '.($i + 1)); |
| 2685 |
|
if ($p_tar_mode === 'tar') { |
| 2686 |
|
$v_content = fread($v_tar, 512); |
| 2687 |
|
} else { |
| 2688 |
|
$v_content = gzread($v_tar, 512); |
| 2689 |
|
} |
| 2690 |
|
fwrite($v_dest_file, $v_content, 512); |
| 2691 |
|
} |
| 2692 |
|
if (($v_header['size'] % 512) != 0) { |
| 2693 |
|
TrFctMessage(__FILE__, __LINE__, 3, 'Read last '.($v_header['size'] % 512).' bytes in a 512 block'); |
| 2694 |
|
if ($p_tar_mode === 'tar') { |
| 2695 |
|
$v_content = fread($v_tar, 512); |
| 2696 |
|
} else { |
| 2697 |
|
$v_content = gzread($v_tar, 512); |
| 2698 |
|
} |
| 2699 |
|
fwrite($v_dest_file, $v_content, $v_header['size'] % 512); |
| 2700 |
|
} |
| 2701 |
|
|
| 2702 |
|
// ----- Close the destination file |
| 2703 |
|
fclose($v_dest_file); |
| 2704 |
|
|
| 2705 |
|
// ----- Change the file mode, mtime |
| 2706 |
|
touch($v_header['filename'], $v_header['mtime']); |
| 2707 |
|
//chmod($v_header['filename'], decoct($v_header['mode'])); |
| 2708 |
|
} |
| 2709 |
|
|
| 2710 |
|
// ----- Check the file size |
| 2711 |
|
clearstatcache(); |