Changeset 11993
- Timestamp:
- 10/01/2009 09:04:57 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/includes/class-pclzip.php
r11930 r11993 1 1 <?php 2 2 // -------------------------------------------------------------------------------- 3 // PhpConcept Library - Zip Module 2.8 3 // PhpConcept Library - Zip Module 2.8.2 4 4 // -------------------------------------------------------------------------------- 5 // License GNU/LGPL - Vincent Blavet - March 20065 // License GNU/LGPL - Vincent Blavet - August 2009 6 6 // http://www.phpconcept.net 7 7 // -------------------------------------------------------------------------------- … … 23 23 // 24 24 // -------------------------------------------------------------------------------- 25 // $Id: pclzip.lib.php,v 1. 55 2009/04/22 07:38:36vblavet Exp $25 // $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $ 26 26 // -------------------------------------------------------------------------------- 27 27 … … 30 30 define( 'PCLZIP_READ_BLOCK_SIZE', 2048 ); 31 31 } 32 32 33 33 // ----- File list separator 34 34 // In version 1.x of PclZip, the separator for file list is a space … … 69 69 // ----- Optional threshold ratio for use of temporary files 70 70 // Pclzip sense the size of the file to add/extract and decide to 71 // use or not temporary file. The algorythm is looking for 71 // use or not temporary file. The algorythm is looking for 72 72 // memory_limit of PHP and apply a ratio. 73 73 // threshold = memory_limit * ratio. … … 84 84 85 85 // ----- Global variables 86 $g_pclzip_version = "2.8 ";86 $g_pclzip_version = "2.8.2"; 87 87 88 88 // ----- Error codes … … 153 153 define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 ); 154 154 define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias 155 155 156 156 // ----- File description attributes 157 157 define( 'PCLZIP_ATT_FILE_NAME', 79001 ); … … 199 199 var $error_code = 1; 200 200 var $error_string = ''; 201 201 202 202 // ----- Current status of the magic_quotes_runtime 203 203 // This value store the php configuration for magic_quotes … … 215 215 function PclZip($p_zipname) 216 216 { 217 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::PclZip', "zipname=$p_zipname");218 217 219 218 // ----- Tests the zlib 220 219 if (!function_exists('gzopen')) 221 220 { 222 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 1, "zlib extension seems to be missing");223 221 die('Abort '.basename(__FILE__).' : Missing zlib extensions'); 224 222 } … … 230 228 231 229 // ----- Return 232 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 1);233 230 return; 234 231 } … … 274 271 function create($p_filelist) 275 272 { 276 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::create', "filelist='$p_filelist', ...");277 273 $v_result=1; 278 274 … … 286 282 // ----- Look for variable options arguments 287 283 $v_size = func_num_args(); 288 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");289 284 290 285 // ----- Look for arguments … … 299 294 // ----- Look for first arg 300 295 if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { 301 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected");302 296 303 297 // ----- Parse the options … … 316 310 )); 317 311 if ($v_result != 1) { 318 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);319 312 return 0; 320 313 } … … 325 318 // method. 326 319 else { 327 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");328 320 329 321 // ----- Get the first argument … … 337 329 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, 338 330 "Invalid number / type of arguments"); 339 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());340 331 return 0; 341 332 } 342 333 } 343 334 } 344 335 345 336 // ----- Look for default option values 346 337 $this->privOptionDefaultThreshold($v_options); … … 351 342 $v_filedescr_list = array(); 352 343 $p_result_list = array(); 353 344 354 345 // ----- Look if the $p_filelist is really an array 355 346 if (is_array($p_filelist)) { 356 347 357 348 // ----- Look if the first element is also an array 358 349 // This will mean that this is a file description entry … … 360 351 $v_att_list = $p_filelist; 361 352 } 362 353 363 354 // ----- The list is a list of string names 364 355 else { … … 376 367 else { 377 368 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); 378 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);379 369 return 0; 380 370 } 381 371 382 372 // ----- Reformat the string list 383 373 if (sizeof($v_string_list) != 0) { … … 387 377 } 388 378 else { 389 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Ignore an empty filename"); 390 } 391 } 392 } 393 379 } 380 } 381 } 382 394 383 // ----- For each file in the list check the attributes 395 384 $v_supported_attributes … … 407 396 $v_supported_attributes); 408 397 if ($v_result != 1) { 409 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);410 398 return 0; 411 399 } … … 415 403 $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); 416 404 if ($v_result != 1) { 417 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);418 405 return 0; 419 406 } … … 422 409 $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); 423 410 if ($v_result != 1) { 424 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);425 411 return 0; 426 412 } 427 413 428 414 // ----- Return 429 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);430 415 return $p_result_list; 431 416 } … … 469 454 function add($p_filelist) 470 455 { 471 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::add', "filelist='$p_filelist', ...");472 456 $v_result=1; 473 457 … … 481 465 // ----- Look for variable options arguments 482 466 $v_size = func_num_args(); 483 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");484 467 485 468 // ----- Look for arguments … … 494 477 // ----- Look for first arg 495 478 if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { 496 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected");497 479 498 480 // ----- Parse the options … … 513 495 )); 514 496 if ($v_result != 1) { 515 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);516 497 return 0; 517 498 } … … 522 503 // method. 523 504 else { 524 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");525 505 526 506 // ----- Get the first argument … … 536 516 537 517 // ----- Return 538 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());539 518 return 0; 540 519 } … … 550 529 $v_filedescr_list = array(); 551 530 $p_result_list = array(); 552 531 553 532 // ----- Look if the $p_filelist is really an array 554 533 if (is_array($p_filelist)) { 555 534 556 535 // ----- Look if the first element is also an array 557 536 // This will mean that this is a file description entry … … 559 538 $v_att_list = $p_filelist; 560 539 } 561 540 562 541 // ----- The list is a list of string names 563 542 else { … … 575 554 else { 576 555 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); 577 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);578 556 return 0; 579 557 } 580 558 581 559 // ----- Reformat the string list 582 560 if (sizeof($v_string_list) != 0) { … … 585 563 } 586 564 } 587 565 588 566 // ----- For each file in the list check the attributes 589 567 $v_supported_attributes … … 601 579 $v_supported_attributes); 602 580 if ($v_result != 1) { 603 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);604 581 return 0; 605 582 } … … 609 586 $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); 610 587 if ($v_result != 1) { 611 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);612 588 return 0; 613 589 } … … 616 592 $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); 617 593 if ($v_result != 1) { 618 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);619 594 return 0; 620 595 } 621 596 622 597 // ----- Return 623 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);624 598 return $p_result_list; 625 599 } … … 669 643 function listContent() 670 644 { 671 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::listContent', "");672 645 $v_result=1; 673 646 … … 677 650 // ----- Check archive 678 651 if (!$this->privCheckFormat()) { 679 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);680 652 return(0); 681 653 } … … 686 658 { 687 659 unset($p_list); 688 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());689 660 return(0); 690 661 } 691 662 692 663 // ----- Return 693 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);694 664 return $p_list; 695 665 } … … 730 700 function extract() 731 701 { 732 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extract", "");733 702 $v_result=1; 734 703 … … 738 707 // ----- Check archive 739 708 if (!$this->privCheckFormat()) { 740 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);741 709 return(0); 742 710 } … … 751 719 // ----- Look for variable options arguments 752 720 $v_size = func_num_args(); 753 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");754 721 755 722 // ----- Default values for option … … 763 730 // ----- Look for first arg 764 731 if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { 765 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");766 732 767 733 // ----- Parse the options … … 788 754 )); 789 755 if ($v_result != 1) { 790 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);791 756 return 0; 792 757 } … … 815 780 // method. 816 781 else { 817 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");818 782 819 783 // ----- Get the first argument … … 829 793 830 794 // ----- Return 831 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());832 795 return 0; 833 796 } … … 839 802 840 803 // ----- Trace 841 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'");842 804 843 805 // ----- Call the extracting fct … … 847 809 if ($v_result < 1) { 848 810 unset($p_list); 849 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());850 811 return(0); 851 812 } 852 813 853 814 // ----- Return 854 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);855 815 return $p_list; 856 816 } … … 897 857 function extractByIndex($p_index) 898 858 { 899 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extractByIndex", "index='$p_index', ...");900 859 $v_result=1; 901 860 … … 905 864 // ----- Check archive 906 865 if (!$this->privCheckFormat()) { 907 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);908 866 return(0); 909 867 } … … 918 876 // ----- Look for variable options arguments 919 877 $v_size = func_num_args(); 920 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");921 878 922 879 // ----- Default values for option … … 934 891 // ----- Look for first arg 935 892 if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { 936 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");937 893 938 894 // ----- Parse the options … … 954 910 )); 955 911 if ($v_result != 1) { 956 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);957 912 return 0; 958 913 } … … 977 932 if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { 978 933 $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; 979 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING not set.");980 934 } 981 935 else { 982 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING set.");983 936 } 984 937 } … … 988 941 // method. 989 942 else { 990 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");991 943 992 944 // ----- Get the first argument … … 1002 954 1003 955 // ----- Return 1004 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1005 956 return 0; 1006 957 } … … 1009 960 1010 961 // ----- Trace 1011 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "index='$p_index', path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'");1012 962 1013 963 // ----- Trick … … 1019 969 array (PCLZIP_OPT_BY_INDEX => 'optional' )); 1020 970 if ($v_result != 1) { 1021 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1022 971 return 0; 1023 972 } … … 1029 978 // ----- Call the extracting fct 1030 979 if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { 1031 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());1032 980 return(0); 1033 981 } 1034 982 1035 983 // ----- Return 1036 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);1037 984 return $p_list; 1038 985 } … … 1050 997 // PCLZIP_OPT_BY_INDEX : 1051 998 // PCLZIP_OPT_BY_NAME : 1052 // PCLZIP_OPT_BY_EREG : 999 // PCLZIP_OPT_BY_EREG : 1053 1000 // PCLZIP_OPT_BY_PREG : 1054 1001 // Return Values : … … 1059 1006 function delete() 1060 1007 { 1061 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::delete", "");1062 1008 $v_result=1; 1063 1009 … … 1067 1013 // ----- Check archive 1068 1014 if (!$this->privCheckFormat()) { 1069 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1070 1015 return(0); 1071 1016 } … … 1076 1021 // ----- Look for variable options arguments 1077 1022 $v_size = func_num_args(); 1078 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");1079 1023 1080 1024 // ----- Look for arguments … … 1090 1034 PCLZIP_OPT_BY_INDEX => 'optional' )); 1091 1035 if ($v_result != 1) { 1092 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1093 1036 return 0; 1094 1037 } … … 1103 1046 $this->privSwapBackMagicQuotes(); 1104 1047 unset($v_list); 1105 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());1106 1048 return(0); 1107 1049 } … … 1111 1053 1112 1054 // ----- Return 1113 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_list);1114 1055 return $v_list; 1115 1056 } … … 1124 1065 function deleteByIndex($p_index) 1125 1066 { 1126 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::deleteByIndex", "index='$p_index'"); 1127 1067 1128 1068 $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); 1129 1069 1130 1070 // ----- Return 1131 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);1132 1071 return $p_list; 1133 1072 } … … 1150 1089 function properties() 1151 1090 { 1152 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::properties", "");1153 1091 1154 1092 // ----- Reset the error handler … … 1161 1099 if (!$this->privCheckFormat()) { 1162 1100 $this->privSwapBackMagicQuotes(); 1163 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1164 1101 return(0); 1165 1102 } … … 1175 1112 { 1176 1113 // ----- Open the zip file 1177 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");1178 1114 if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) 1179 1115 { 1180 1116 $this->privSwapBackMagicQuotes(); 1181 1117 1182 1118 // ----- Error log 1183 1119 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); 1184 1120 1185 1121 // ----- Return 1186 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), 0);1187 1122 return 0; 1188 1123 } … … 1193 1128 { 1194 1129 $this->privSwapBackMagicQuotes(); 1195 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1196 1130 return 0; 1197 1131 } … … 1210 1144 1211 1145 // ----- Return 1212 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_prop);1213 1146 return $v_prop; 1214 1147 } … … 1229 1162 function duplicate($p_archive) 1230 1163 { 1231 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::duplicate", "");1232 1164 $v_result = 1; 1233 1165 … … 1238 1170 if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) 1239 1171 { 1240 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is valid PclZip object '".$p_archive->zipname."'");1241 1172 1242 1173 // ----- Duplicate the archive … … 1247 1178 else if (is_string($p_archive)) 1248 1179 { 1249 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is a filename '$p_archive'");1250 1180 1251 1181 // ----- Check that $p_archive is a valid zip file … … 1271 1201 1272 1202 // ----- Return 1273 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1274 1203 return $v_result; 1275 1204 } … … 1292 1221 function merge($p_archive_to_add) 1293 1222 { 1294 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::merge", "");1295 1223 $v_result = 1; 1296 1224 … … 1300 1228 // ----- Check archive 1301 1229 if (!$this->privCheckFormat()) { 1302 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1303 1230 return(0); 1304 1231 } … … 1307 1234 if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) 1308 1235 { 1309 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is valid PclZip object");1310 1236 1311 1237 // ----- Merge the archive … … 1316 1242 else if (is_string($p_archive_to_add)) 1317 1243 { 1318 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is a filename");1319 1244 1320 1245 // ----- Create a temporary archive … … 1334 1259 1335 1260 // ----- Return 1336 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1337 1261 return $v_result; 1338 1262 } … … 1449 1373 function privCheckFormat($p_level=0) 1450 1374 { 1451 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFormat", "");1452 1375 $v_result = true; 1453 1376 … … 1462 1385 // ----- Error log 1463 1386 PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); 1464 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());1465 1387 return(false); 1466 1388 } … … 1470 1392 // ----- Error log 1471 1393 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); 1472 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());1473 1394 return(false); 1474 1395 } … … 1484 1405 1485 1406 // ----- Return 1486 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1487 1407 return $v_result; 1488 1408 } … … 1506 1426 function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) 1507 1427 { 1508 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privParseOptions", "");1509 1428 $v_result=1; 1510 1429 1511 1430 // ----- Read the options 1512 1431 $i=0; 1513 1432 while ($i<$p_size) { 1514 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Looking for table index $i, option = '".PclZipUtilOptionText($p_options_list[$i])."(".$p_options_list[$i].")'");1515 1433 1516 1434 // ----- Check if the option is supported … … 1520 1438 1521 1439 // ----- Return 1522 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1523 1440 return PclZip::errorCode(); 1524 1441 } … … 1536 1453 1537 1454 // ----- Return 1538 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1539 1455 return PclZip::errorCode(); 1540 1456 } … … 1542 1458 // ----- Get the value 1543 1459 $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); 1544 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1545 1460 $i++; 1546 1461 break; … … 1550 1465 if (($i+1) >= $p_size) { 1551 1466 PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1552 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1553 1467 return PclZip::errorCode(); 1554 1468 } 1555 1469 1556 1470 // ----- Check for incompatible options 1557 1471 if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { 1558 1472 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); 1559 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1560 1473 return PclZip::errorCode(); 1561 1474 } 1562 1475 1563 1476 // ----- Check the value 1564 1477 $v_value = $p_options_list[$i+1]; 1565 1478 if ((!is_integer($v_value)) || ($v_value<0)) { 1566 1479 PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1567 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1568 1480 return PclZip::errorCode(); 1569 1481 } … … 1571 1483 // ----- Get the value (and convert it in bytes) 1572 1484 $v_result_list[$p_options_list[$i]] = $v_value*1048576; 1573 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1574 1485 $i++; 1575 1486 break; … … 1579 1490 if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { 1580 1491 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); 1581 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1582 1492 return PclZip::errorCode(); 1583 1493 } 1584 1494 1585 1495 $v_result_list[$p_options_list[$i]] = true; 1586 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1587 1496 break; 1588 1497 … … 1591 1500 if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { 1592 1501 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); 1593 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1594 1502 return PclZip::errorCode(); 1595 1503 } … … 1597 1505 if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { 1598 1506 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); 1599 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1600 1507 return PclZip::errorCode(); 1601 1508 } 1602 1509 1603 1510 $v_result_list[$p_options_list[$i]] = true; 1604 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1605 1511 break; 1606 1512 … … 1612 1518 1613 1519 // ----- Return 1614 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1615 1520 return PclZip::errorCode(); 1616 1521 } … … 1620 1525 && ($p_options_list[$i+1] != '')) { 1621 1526 $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); 1622 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1623 1527 $i++; 1624 1528 } 1625 1529 else { 1626 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." set with an empty value is ignored.");1627 1530 } 1628 1531 break; … … 1636 1539 1637 1540 // ----- Return 1638 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1639 1541 return PclZip::errorCode(); 1640 1542 } … … 1652 1554 1653 1555 // ----- Return 1654 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1655 1556 return PclZip::errorCode(); 1656 1557 } 1657 ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1658 1558 $i++; 1659 1559 break; … … 1661 1561 // ----- Look for options that request an EREG or PREG expression 1662 1562 case PCLZIP_OPT_BY_EREG : 1563 // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG 1564 // to PCLZIP_OPT_BY_PREG 1565 $p_options_list[$i] = PCLZIP_OPT_BY_PREG; 1663 1566 case PCLZIP_OPT_BY_PREG : 1664 1567 //case PCLZIP_OPT_CRYPT : … … 1669 1572 1670 1573 // ----- Return 1671 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1672 1574 return PclZip::errorCode(); 1673 1575 } … … 1682 1584 1683 1585 // ----- Return 1684 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1685 1586 return PclZip::errorCode(); 1686 1587 } 1687 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1688 1588 $i++; 1689 1589 break; … … 1702 1602 1703 1603 // ----- Return 1704 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1705 1604 return PclZip::errorCode(); 1706 1605 } … … 1718 1617 1719 1618 // ----- Return 1720 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1721 1619 return PclZip::errorCode(); 1722 1620 } 1723 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1724 1621 $i++; 1725 1622 break; … … 1733 1630 1734 1631 // ----- Return 1735 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1736 1632 return PclZip::errorCode(); 1737 1633 } … … 1740 1636 $v_work_list = array(); 1741 1637 if (is_string($p_options_list[$i+1])) { 1742 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is a string '".$p_options_list[$i+1]."'");1743 1638 1744 1639 // ----- Remove spaces … … 1749 1644 } 1750 1645 else if (is_integer($p_options_list[$i+1])) { 1751 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an integer '".$p_options_list[$i+1]."'");1752 1646 $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; 1753 1647 } 1754 1648 else if (is_array($p_options_list[$i+1])) { 1755 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an array");1756 1649 $v_work_list = $p_options_list[$i+1]; 1757 1650 } … … 1761 1654 1762 1655 // ----- Return 1763 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1764 1656 return PclZip::errorCode(); 1765 1657 } 1766 1658 1767 1659 // ----- Reduce the index list 1768 1660 // each index item in the list must be a couple with a start and … … 1775 1667 $v_item_list = explode("-", $v_work_list[$j]); 1776 1668 $v_size_item_list = sizeof($v_item_list); 1777 1669 1778 1670 // ----- TBC : Here we might check that each item is a 1779 1671 // real integer ... 1780 1672 1781 1673 // ----- Look for single value 1782 1674 if ($v_size_item_list == 1) { … … 1795 1687 1796 1688 // ----- Return 1797 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1798 1689 return PclZip::errorCode(); 1799 1690 } 1800 1691 1801 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extracted index item = [".$v_result_list[$p_options_list[$i]][$j]['start'].",".$v_result_list[$p_options_list[$i]][$j]['end']."]");1802 1692 1803 1693 // ----- Look for list sort 1804 1694 if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) { 1805 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The list should be sorted ...");1806 1695 $v_sort_flag=true; 1807 1696 … … 1811 1700 1812 1701 // ----- Return 1813 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1814 1702 return PclZip::errorCode(); 1815 1703 } 1816 1704 $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start']; 1817 1705 } 1818 1706 1819 1707 // ----- Sort the items 1820 1708 if ($v_sort_flag) { 1821 1709 // TBC : To Be Completed 1822 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "List sorting is not yet write ...");1823 1710 } 1824 1711 … … 1835 1722 case PCLZIP_OPT_STOP_ON_ERROR : 1836 1723 $v_result_list[$p_options_list[$i]] = true; 1837 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1838 1724 break; 1839 1725 … … 1846 1732 1847 1733 // ----- Return 1848 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1849 1734 return PclZip::errorCode(); 1850 1735 } … … 1852 1737 // ----- Get the value 1853 1738 $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; 1854 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1855 1739 $i++; 1856 1740 break; … … 1873 1757 1874 1758 // ----- Return 1875 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1876 1759 return PclZip::errorCode(); 1877 1760 } … … 1879 1762 // ----- Get the value 1880 1763 $v_function_name = $p_options_list[$i+1]; 1881 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "call-back ".PclZipUtilOptionText($p_options_list[$i])." = '".$v_function_name."'");1882 1764 1883 1765 // ----- Check that the value is a valid existing function … … 1887 1769 1888 1770 // ----- Return 1889 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1890 1771 return PclZip::errorCode(); 1891 1772 } … … 1903 1784 1904 1785 // ----- Return 1905 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1906 1786 return PclZip::errorCode(); 1907 1787 } … … 1916 1796 // ----- Look for mandatory option 1917 1797 if ($v_requested_options[$key] == 'mandatory') { 1918 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");1919 1798 // ----- Look if present 1920 1799 if (!isset($v_result_list[$key])) { … … 1923 1802 1924 1803 // ----- Return 1925 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1926 1804 return PclZip::errorCode(); 1927 1805 } … … 1929 1807 } 1930 1808 } 1931 1809 1932 1810 // ----- Look for default values 1933 1811 if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { 1934 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Calculate auto threshold"); 1935 1812 1936 1813 } 1937 1814 1938 1815 // ----- Return 1939 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1940 1816 return $v_result; 1941 1817 } … … 1950 1826 function privOptionDefaultThreshold(&$p_options) 1951 1827 { 1952 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOptionDefaultThreshold", "");1953 1828 $v_result=1; 1954 1829 1955 1830 if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) 1956 1831 || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { 1957 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1958 1832 return $v_result; 1959 1833 } 1960 1961 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Create an auto-threshold for use of temporay files"); 1834 1962 1835 // ----- Get 'memory_limit' configuration value 1963 1836 $v_memory_limit = ini_get('memory_limit'); 1964 1837 $v_memory_limit = trim($v_memory_limit); 1965 1838 $last = strtolower(substr($v_memory_limit, -1)); 1966 1839 1967 1840 if($last == 'g') 1968 1841 //$v_memory_limit = $v_memory_limit*1024*1024*1024; … … 1973 1846 if($last == 'k') 1974 1847 $v_memory_limit = $v_memory_limit*1024; 1975 1848 1976 1849 $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); 1977 1978 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Current memory usage : ".memory_get_usage(TRUE)." bytes"); 1979 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Threshold value is : ".$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]." bytes"); 1850 1980 1851 1981 1852 // ----- Sanity check : No threshold if value lower than 1M 1982 1853 if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { 1983 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Unset the threshold (value ".$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD].") because under 1Mo sanity check)");1984 1854 unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); 1985 1855 } 1986 1856 1987 1857 // ----- Return 1988 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1989 1858 return $v_result; 1990 1859 } … … 2001 1870 function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) 2002 1871 { 2003 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrParseAtt", "");2004 1872 $v_result=1; 2005 1873 2006 1874 // ----- For each file in the list check the attributes 2007 1875 foreach ($p_file_list as $v_key => $v_value) { 2008 1876 2009 1877 // ----- Check if the option is supported 2010 1878 if (!isset($v_requested_options[$v_key])) { … … 2013 1881 2014 1882 // ----- Return 2015 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2016 1883 return PclZip::errorCode(); 2017 1884 } … … 2022 1889 if (!is_string($v_value)) { 2023 1890 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); 2024 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2025 1891 return PclZip::errorCode(); 2026 1892 } 2027 1893 2028 1894 $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); 2029 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'"); 2030 1895 2031 1896 if ($p_filedescr['filename'] == '') { 2032 1897 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); 2033 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2034 1898 return PclZip::errorCode(); 2035 1899 } … … 2040 1904 if (!is_string($v_value)) { 2041 1905 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); 2042 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2043 1906 return PclZip::errorCode(); 2044 1907 } 2045 1908 2046 1909 $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); 2047 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2048 1910 2049 1911 if ($p_filedescr['new_short_name'] == '') { 2050 1912 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'"); 2051 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2052 1913 return PclZip::errorCode(); 2053 1914 } … … 2057 1918 if (!is_string($v_value)) { 2058 1919 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); 2059 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2060 1920 return PclZip::errorCode(); 2061 1921 } 2062 1922 2063 1923 $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); 2064 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2065 1924 2066 1925 if ($p_filedescr['new_full_name'] == '') { 2067 1926 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'"); 2068 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2069 1927 return PclZip::errorCode(); 2070 1928 } … … 2075 1933 if (!is_string($v_value)) { 2076 1934 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); 2077 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2078 1935 return PclZip::errorCode(); 2079 1936 } 2080 1937 2081 1938 $p_filedescr['comment'] = $v_value; 2082 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2083 1939 break; 2084 1940 … … 2086 1942 if (!is_integer($v_value)) { 2087 1943 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'"); 2088 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2089 1944 return PclZip::errorCode(); 2090 1945 } 2091 1946 2092 1947 $p_filedescr['mtime'] = $v_value; 2093 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2094 1948 break; 2095 1949 2096 1950 case PCLZIP_ATT_FILE_CONTENT : 2097 1951 $p_filedescr['content'] = $v_value; 2098 ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2099 1952 break; 2100 1953 … … 2105 1958 2106 1959 // ----- Return 2107 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2108 1960 return PclZip::errorCode(); 2109 1961 } … … 2114 1966 // ----- Look for mandatory option 2115 1967 if ($v_requested_options[$key] == 'mandatory') { 2116 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");2117 1968 // ----- Look if present 2118 1969 if (!isset($p_file_list[$key])) { 2119 1970 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); 2120 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2121 1971 return PclZip::errorCode(); 2122 1972 } … … 2124 1974 } 2125 1975 } 2126 1976 2127 1977 // end foreach 2128 1978 } 2129 1979 2130 1980 // ----- Return 2131 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2132 1981 return $v_result; 2133 1982 } … … 2141 1990 // just ignore the item. 2142 1991 // Then prepare the information that will be stored for that file. 2143 // When its a folder, expand the folder with all the files that are in that 1992 // When its a folder, expand the folder with all the files that are in that 2144 1993 // folder (recursively). 2145 1994 // Parameters : … … 2150 1999 function privFileDescrExpand(&$p_filedescr_list, &$p_options) 2151 2000 { 2152 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrExpand", "");2153 2001 $v_result=1; 2154 2002 2155 2003 // ----- Create a result list 2156 2004 $v_result_list = array(); 2157 2005 2158 2006 // ----- Look each entry 2159 2007 for ($i=0; $i<sizeof($p_filedescr_list); $i++) { 2160 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for file ".$i."."); 2161 2008 2162 2009 // ----- Get filedescr 2163 2010 $v_descr = $p_filedescr_list[$i]; 2164 2011 2165 2012 // ----- Reduce the filename 2166 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr before reduction :'".$v_descr['filename']."'");2167 2013 $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false); 2168 2014 $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']); 2169 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr after reduction :'".$v_descr['filename']."'"); 2170 2015 2171 2016 // ----- Look for real file or folder 2172 2017 if (file_exists($v_descr['filename'])) { 2173 2018 if (@is_file($v_descr['filename'])) { 2174 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a file");2175 2019 $v_descr['type'] = 'file'; 2176 2020 } 2177 2021 else if (@is_dir($v_descr['filename'])) { 2178 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a folder");2179 2022 $v_descr['type'] = 'folder'; 2180 2023 } 2181 2024 else if (@is_link($v_descr['filename'])) { 2182 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : link");2183 2025 // skip 2184 2026 continue; 2185 2027 } 2186 2028 else { 2187 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : unknown type");2188 2029 // skip 2189 2030 continue; 2190 2031 } 2191 2032 } 2192 2033 2193 2034 // ----- Look for string added as file 2194 2035 else if (isset($v_descr['content'])) { 2195 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a string added as a file");2196 2036 $v_descr['type'] = 'virtual_file'; 2197 2037 } 2198 2038 2199 2039 // ----- Missing file 2200 2040 else { 2201 2041 // ----- Error log 2202 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_descr['filename']."' does not exist");2203 2042 PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist"); 2204 2043 2205 2044 // ----- Return 2206 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2207 2045 return PclZip::errorCode(); 2208 2046 } 2209 2047 2210 2048 // ----- Calculate the stored filename 2211 2049 $this->privCalculateStoredFilename($v_descr, $p_options); 2212 2050 2213 2051 // ----- Add the descriptor in result list 2214 2052 $v_result_list[sizeof($v_result_list)] = $v_descr; 2215 2053 2216 2054 // ----- Look for folder 2217 2055 if ($v_descr['type'] == 'folder') { … … 2221 2059 if ($v_folder_handler = @opendir($v_descr['filename'])) { 2222 2060 while (($v_item_handler = @readdir($v_folder_handler)) !== false) { 2223 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for '".$v_item_handler."' in the directory");2224 2061 2225 2062 // ----- Skip '.' and '..' … … 2227 2064 continue; 2228 2065 } 2229 2066 2230 2067 // ----- Compose the full filename 2231 2068 $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; 2232 2069 2233 2070 // ----- Look for different stored filename 2234 2071 // Because the name of the folder was changed, the name of the 2235 2072 // files/sub-folders also change 2236 if ($v_descr['stored_filename'] != $v_descr['filename']) { 2073 if (($v_descr['stored_filename'] != $v_descr['filename']) 2074 && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { 2237 2075 if ($v_descr['stored_filename'] != '') { 2238 2076 $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler; … … 2242 2080 } 2243 2081 } 2244 2082 2245 2083 $v_dirlist_nb++; 2246 2084 } 2247 2085 2248 2086 @closedir($v_folder_handler); 2249 2087 } 2250 2088 else { 2251 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to open dir '".$v_descr['filename']."' in read mode. Skipped.");2252 2089 // TBC : unable to open folder in read mode 2253 2090 } 2254 2091 2255 2092 // ----- Expand each element of the list 2256 2093 if ($v_dirlist_nb != 0) { 2257 2094 // ----- Expand 2258 2095 if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { 2259 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2260 2096 return $v_result; 2261 2097 } 2262 2098 2263 2099 // ----- Concat the resulting list 2264 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Merging result list (size '".sizeof($v_result_list)."') with dirlist (size '".sizeof($v_dirlist_descr)."')");2265 2100 $v_result_list = array_merge($v_result_list, $v_dirlist_descr); 2266 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "merged result list is size '".sizeof($v_result_list)."'");2267 2101 } 2268 2102 else { 2269 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Nothing in this folder to expand."); 2270 } 2271 2103 } 2104 2272 2105 // ----- Free local array 2273 2106 unset($v_dirlist_descr); 2274 2107 } 2275 2108 } 2276 2109 2277 2110 // ----- Get the result list 2278 2111 $p_filedescr_list = $v_result_list; 2279 2112 2280 2113 // ----- Return 2281 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2282 2114 return $v_result; 2283 2115 } … … 2292 2124 function privCreate($p_filedescr_list, &$p_result_list, &$p_options) 2293 2125 { 2294 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCreate", "list");2295 2126 $v_result=1; 2296 2127 $v_list_detail = array(); 2297 2128 2298 2129 // ----- Magic quotes trick 2299 2130 $this->privDisableMagicQuotes(); … … 2303 2134 { 2304 2135 // ----- Return 2305 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2306 2136 return $v_result; 2307 2137 } … … 2317 2147 2318 2148 // ----- Return 2319 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2320 2149 return $v_result; 2321 2150 } … … 2330 2159 function privAdd($p_filedescr_list, &$p_result_list, &$p_options) 2331 2160 { 2332 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAdd", "list");2333 2161 $v_result=1; 2334 2162 $v_list_detail = array(); … … 2337 2165 if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) 2338 2166 { 2339 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, or is empty, create it.");2340 2167 2341 2168 // ----- Do a create … … 2343 2170 2344 2171 // ----- Return 2345 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2346 2172 return $v_result; 2347 2173 } … … 2350 2176 2351 2177 // ----- Open the zip file 2352 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");2353 2178 if (($v_result=$this->privOpenFd('rb')) != 1) 2354 2179 { … … 2357 2182 2358 2183 // ----- Return 2359 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2360 2184 return $v_result; 2361 2185 } … … 2367 2191 $this->privCloseFd(); 2368 2192 $this->privSwapBackMagicQuotes(); 2369 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2370 2193 return $v_result; 2371 2194 } 2372 2195 2373 2196 // ----- Go to beginning of File 2374 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");2375 2197 @rewind($this->zip_fd); 2376 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");2377 2198 2378 2199 // ----- Creates a temporay file … … 2380 2201 2381 2202 // ----- Open the temporary file in write mode 2382 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");2383 2203 if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) 2384 2204 { … … 2389 2209 2390 2210 // ----- Return 2391 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2392 2211 return PclZip::errorCode(); 2393 2212 } … … 2399 2218 { 2400 2219 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 2401 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");2402 2220 $v_buffer = fread($this->zip_fd, $v_read_size); 2403 2221 @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); … … 2422 2240 2423 2241 // ----- Return 2424 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2425 2242 return $v_result; 2426 2243 } … … 2428 2245 // ----- Store the offset of the central dir 2429 2246 $v_offset = @ftell($this->zip_fd); 2430 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");2431 2247 2432 2248 // ----- Copy the block of file headers from the old archive … … 2435 2251 { 2436 2252 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 2437 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");2438 2253 $v_buffer = @fread($v_zip_temp_fd, $v_read_size); 2439 2254 @fwrite($this->zip_fd, $v_buffer, $v_read_size); … … 2453 2268 2454 2269 // ----- Return 2455 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2456 2270 return $v_result; 2457 2271 } … … 2486 2300 2487 2301 // ----- Return 2488 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2489 2302 return $v_result; 2490 2303 } … … 2514 2327 2515 2328 // ----- Return 2516 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2517 2329 return $v_result; 2518 2330 } … … 2526 2338 function privOpenFd($p_mode) 2527 2339 { 2528 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOpenFd", 'mode='.$p_mode);2529 2340 $v_result=1; 2530 2341 … … 2536 2347 2537 2348 // ----- Return 2538 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2539 2349 return PclZip::errorCode(); 2540 2350 } 2541 2351 2542 2352 // ----- Open the zip file 2543 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Open file in '.$p_mode.' mode');2544 2353 if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) 2545 2354 { … … 2548 2357 2549 2358 // ----- Return 2550 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2551 2359 return PclZip::errorCode(); 2552 2360 } 2553 2361 2554 2362 // ----- Return 2555 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2556 2363 return $v_result; 2557 2364 } … … 2565 2372 function privCloseFd() 2566 2373 { 2567 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCloseFd", "");2568 2374 $v_result=1; 2569 2375 … … 2573 2379 2574 2380 // ----- Return 2575 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2576 2381 return $v_result; 2577 2382 } … … 2594 2399 function privAddList($p_filedescr_list, &$p_result_list, &$p_options) 2595 2400 { 2596 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddList", "list");2597 2401 $v_result=1; 2598 2402 … … 2602 2406 { 2603 2407 // ----- Return 2604 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2605 2408 return $v_result; 2606 2409 } … … 2616 2419 if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { 2617 2420 // ----- Return 2618 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2619 2421 return $v_result; 2620 2422 } … … 2642 2444 2643 2445 // ----- Return 2644 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2645 2446 return $v_result; 2646 2447 } 2647 2448 2648 2449 // ----- Return 2649 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2650 2450 return $v_result; 2651 2451 } … … 2656 2456 // Description : 2657 2457 // Parameters : 2658 // $p_filedescr_list : An array containing the file description 2458 // $p_filedescr_list : An array containing the file description 2659 2459 // or directory names to add in the zip 2660 2460 // $p_result_list : list of added files with their properties (specially the status field) … … 2663 2463 function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) 2664 2464 { 2665 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFileList", "filedescr_list");2666 2465 $v_result=1; 2667 2466 $v_header = array(); … … 2669 2468 // ----- Recuperate the current number of elt in list 2670 2469 $v_nb = sizeof($p_result_list); 2671 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Before add, list have ".$v_nb." elements");2672 2470 2673 2471 // ----- Loop on the files … … 2676 2474 $p_filedescr_list[$j]['filename'] 2677 2475 = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false); 2678 2679 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for file '".$p_filedescr_list[$j]['filename']."'"); 2476 2680 2477 2681 2478 // ----- Skip empty file names 2682 2479 // TBC : Can this be possible ? not checked in DescrParseAtt ? 2683 2480 if ($p_filedescr_list[$j]['filename'] == "") { 2684 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Skip empty filename");2685 2481 continue; 2686 2482 } … … 2689 2485 if ( ($p_filedescr_list[$j]['type'] != 'virtual_file') 2690 2486 && (!file_exists($p_filedescr_list[$j]['filename']))) { 2691 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_filedescr_list[$j]['filename']."' does not exist");2692 2487 PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exist"); 2693 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2694 2488 return PclZip::errorCode(); 2695 2489 } … … 2710 2504 $p_options); 2711 2505 if ($v_result != 1) { 2712 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2713 2506 return $v_result; 2714 2507 } … … 2718 2511 } 2719 2512 } 2720 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "After add, list have ".$v_nb." elements");2721 2513 2722 2514 // ----- Return 2723 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2724 2515 return $v_result; 2725 2516 } … … 2734 2525 function privAddFile($p_filedescr, &$p_header, &$p_options) 2735 2526 { 2736 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFile", "filename='".$p_filedescr['filename']."'");2737 2527 $v_result=1; 2738 2528 2739 2529 // ----- Working variable 2740 2530 $p_filename = $p_filedescr['filename']; … … 2746 2536 2747 2537 // ----- Return 2748 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2749 2538 return PclZip::errorCode(); 2750 2539 } 2751 2752 // ----- Look for a stored different filename 2540 2541 // ----- Look for a stored different filename 2753 2542 /* TBC : Removed 2754 2543 if (isset($p_filedescr['stored_filename'])) { 2755 2544 $v_stored_filename = $p_filedescr['stored_filename']; 2756 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is NOT the same "'.$v_stored_filename.'"');2757 2545 } 2758 2546 else { 2759 2547 $v_stored_filename = $p_filedescr['stored_filename']; 2760 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is the same');2761 2548 } 2762 2549 */ … … 2787 2574 $p_header['size'] = filesize($p_filename); 2788 2575 } 2789 2576 2790 2577 // ----- Look for regular folder 2791 2578 else if ($p_filedescr['type']=='folder') { … … 2794 2581 $p_header['size'] = filesize($p_filename); 2795 2582 } 2796 2583 2797 2584 // ----- Look for virtual file 2798 2585 else if ($p_filedescr['type'] == 'virtual_file') { … … 2800 2587 $p_header['size'] = strlen($p_filedescr['content']); 2801 2588 } 2802 2803 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header external extension '".sprintf("0x%X",$p_header['external'])."'"); 2589 2804 2590 2805 2591 // ----- Look for filetime 2806 2592 if (isset($p_filedescr['mtime'])) { 2807 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Overload mtime value with :'".$p_filedescr['mtime']."'");2808 2593 $p_header['mtime'] = $p_filedescr['mtime']; 2809 2594 } 2810 2595 else if ($p_filedescr['type'] == 'virtual_file') { 2811 2596 $p_header['mtime'] = time(); 2812 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Virtual file : use current time '".$p_header['mtime']."' for mtime value.");2813 2597 } 2814 2598 else { … … 2828 2612 // ----- Look for pre-add callback 2829 2613 if (isset($p_options[PCLZIP_CB_PRE_ADD])) { 2830 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_ADD]."()') is defined for the extraction");2831 2614 2832 2615 // ----- Generate a local information … … 2837 2620 // Here I do not use call_user_func() because I need to send a reference to the 2838 2621 // header. 2839 eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);');2622 $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); 2840 2623 if ($v_result == 0) { 2841 2624 // ----- Change the file status … … 2848 2631 if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { 2849 2632 $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); 2850 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New stored filename is '".$p_header['stored_filename']."'");2851 2633 } 2852 2634 } … … 2856 2638 $p_header['status'] = "filtered"; 2857 2639 } 2858 2640 2859 2641 // ----- Check the path length 2860 2642 if (strlen($p_header['stored_filename']) > 0xFF) { … … 2868 2650 if ($p_filedescr['type'] == 'file') { 2869 2651 // ----- Look for using temporary file to zip 2870 if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 2652 if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 2871 2653 && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) 2872 2654 || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) … … 2877 2659 } 2878 2660 } 2879 2661 2880 2662 // ----- Use "in memory" zip algo 2881 2663 else { 2882 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"In memory compression.");2883 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Current memory usage : ".memory_get_usage(TRUE)." bytes");2884 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Current memory peak : ".memory_get_peak_usage(TRUE)." bytes");2885 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a file");2886 2664 2887 2665 // ----- Open the source file 2888 2666 if (($v_file = @fopen($p_filename, "rb")) == 0) { 2889 2667 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); 2890 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2891 2668 return PclZip::errorCode(); 2892 2669 } … … 2894 2671 // ----- Read the file content 2895 2672 $v_content = @fread($v_file, $p_header['size']); 2896 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Memory usage after reading file : ".memory_get_usage(TRUE)." bytes");2897 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Memory peak after reading file : ".memory_get_peak_usage(TRUE)." bytes");2898 2673 2899 2674 // ----- Close the file … … 2902 2677 // ----- Calculate the CRC 2903 2678 $p_header['crc'] = @crc32($v_content); 2904 2679 2905 2680 // ----- Look for no compression 2906 2681 if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { 2907 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed");2908 2682 // ----- Set header parameters 2909 2683 $p_header['compressed_size'] = $p_header['size']; 2910 2684 $p_header['compression'] = 0; 2911 2685 } 2912 2686 2913 2687 // ----- Look for normal compression 2914 2688 else { 2915 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed");2916 2689 // ----- Compress the content 2917 2690 $v_content = @gzdeflate($v_content); 2918 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Memory usage after gzdeflate : ".memory_get_usage(TRUE)." bytes");2919 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Memory peak after gzdeflate : ".memory_get_peak_usage(TRUE)." bytes");2920 2691 2921 2692 // ----- Set header parameters … … 2923 2694 $p_header['compression'] = 8; 2924 2695 } 2925 2696 2926 2697 // ----- Call the header generation 2927 2698 if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { 2928 2699 @fclose($v_file); 2929 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2930 2700 return $v_result; 2931 2701 } … … 2940 2710 // ----- Look for a virtual file (a file from string) 2941 2711 else if ($p_filedescr['type'] == 'virtual_file') { 2942 2943 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Add by string"); 2712 2944 2713 $v_content = $p_filedescr['content']; 2945 2714 2946 2715 // ----- Calculate the CRC 2947 2716 $p_header['crc'] = @crc32($v_content); 2948 2717 2949 2718 // ----- Look for no compression 2950 2719 if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { 2951 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed");2952 2720 // ----- Set header parameters 2953 2721 $p_header['compressed_size'] = $p_header['size']; 2954 2722 $p_header['compression'] = 0; 2955 2723 } 2956 2724 2957 2725 // ----- Look for normal compression 2958 2726 else { 2959 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed");2960 2727 // ----- Compress the content 2961 2728 $v_content = @gzdeflate($v_content); … … 2965 2732 $p_header['compression'] = 8; 2966 2733 } 2967 2734 2968 2735 // ----- Call the header generation 2969 2736 if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { 2970 2737 @fclose($v_file); 2971 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2972 2738 return $v_result; 2973 2739 } … … 2979 2745 // ----- Look for a directory 2980 2746 else if ($p_filedescr['type'] == 'folder') { 2981 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a folder");2982 2747 // ----- Look for directory last '/' 2983 2748 if (@substr($p_header['stored_filename'], -1) != '/') { … … 2993 2758 if (($v_result = $this->privWriteFileHeader($p_header)) != 1) 2994 2759 { 2995 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2996 2760 return $v_result; 2997 2761 } … … 3001 2765 // ----- Look for post-add callback 3002 2766 if (isset($p_options[PCLZIP_CB_POST_ADD])) { 3003 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_ADD]."()') is defined for the extraction");3004 2767 3005 2768 // ----- Generate a local information … … 3010 2773 // Here I do not use call_user_func() because I need to send a reference to the 3011 2774 // header. 3012 eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);');2775 $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); 3013 2776 if ($v_result == 0) { 3014 2777 // ----- Ignored … … 3021 2784 3022 2785 // ----- Return 3023 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3024 2786 return $v_result; 3025 2787 } … … 3034 2796 function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) 3035 2797 { 3036 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFileUsingTempFile", "filename='".$p_filedescr['filename']."'");3037 2798 $v_result=PCLZIP_ERR_NO_ERROR; 3038 2799 3039 2800 // ----- Working variable 3040 2801 $p_filename = $p_filedescr['filename']; 3041 2802 3042 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a file");3043 2803 3044 2804 // ----- Open the source file 3045 2805 if (($v_file = @fopen($p_filename, "rb")) == 0) { 3046 2806 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); 3047 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3048 2807 return PclZip::errorCode(); 3049 2808 } … … 3054 2813 fclose($v_file); 3055 2814 PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); 3056 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3057 2815 return PclZip::errorCode(); 3058 2816 } … … 3062 2820 while ($v_size != 0) { 3063 2821 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 3064 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read ".$v_read_size." bytes");3065 2822 $v_buffer = @fread($v_file, $v_read_size); 3066 2823 //$v_binary_data = pack('a'.$v_read_size, $v_buffer); … … 3074 2831 3075 2832 // ----- Check the minimum file size 3076 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "gzip file size ".filesize($v_gzip_temp_name));3077 2833 if (filesize($v_gzip_temp_name) < 18) { 3078 2834 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes'); 3079 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3080 2835 return PclZip::errorCode(); 3081 2836 } … … 3084 2839 if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { 3085 2840 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); 3086 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3087 2841 return PclZip::errorCode(); 3088 2842 } … … 3093 2847 3094 2848 // ----- Check some parameters 3095 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[id1]='.bin2hex($v_data_header['id1']));3096 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[id2]='.bin2hex($v_data_header['id2']));3097 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[cm]='.bin2hex($v_data_header['cm']));3098 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[flag]='.bin2hex($v_data_header['flag']));3099 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[mtime]='.$v_data_header['mtime']);3100 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[xfl]='.bin2hex($v_data_header['xfl']));3101 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[os]='.bin2hex($v_data_header['os']));3102 2849 $v_data_header['os'] = bin2hex($v_data_header['os']); 3103 2850 3104 2851 // ----- Read the gzip file footer 3105 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position after header ".ftell($v_file_compressed));3106 2852 @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); 3107 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position at beginning of footer ".ftell($v_file_compressed));3108 2853 $v_binary_data = @fread($v_file_compressed, 8); 3109 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position after footer ".ftell($v_file_compressed));3110 2854 $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); 3111 2855 … … 3114 2858 //$p_header['mtime'] = $v_data_header['mtime']; 3115 2859 $p_header['crc'] = $v_data_footer['crc']; 3116 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Compressed size ".(filesize($v_gzip_temp_name)-18));3117 2860 $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18; 3118 2861 … … 3122 2865 // ----- Call the header generation 3123 2866 if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { 3124 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3125 2867 return $v_result; 3126 2868 } … … 3130 2872 { 3131 2873 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); 3132 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3133 2874 return PclZip::errorCode(); 3134 2875 } … … 3136 2877 // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks 3137 2878 fseek($v_file_compressed, 10); 3138 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position before reading compressed data ".ftell($v_file_compressed));3139 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, ' '.$p_header['compressed_size'].' bytes to read');3140 2879 $v_size = $p_header['compressed_size']; 3141 2880 while ($v_size != 0) 3142 2881 { 3143 2882 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 3144 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read ".$v_read_size." bytes");3145 2883 $v_buffer = @fread($v_file_compressed, $v_read_size); 3146 2884 //$v_binary_data = pack('a'.$v_read_size, $v_buffer); … … 3154 2892 // ----- Unlink the temporary file 3155 2893 @unlink($v_gzip_temp_name); 3156 2894 3157 2895 // ----- Return 3158 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3159 2896 return $v_result; 3160 2897 } … … 3171 2908 function privCalculateStoredFilename(&$p_filedescr, &$p_options) 3172 2909 { 3173 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCalculateStoredFilename", "filename='".$p_filedescr['filename']."'");3174 2910 $v_result=1; 3175 2911 3176 2912 // ----- Working variables 3177 2913 $p_filename = $p_filedescr['filename']; … … 3188 2924 $p_remove_dir = ''; 3189 2925 } 3190 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Remove path ='".$p_remove_dir."'");3191 2926 if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { 3192 2927 $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; … … 3195 2930 $p_remove_all_dir = 0; 3196 2931 } 2932 3197 2933 3198 2934 // ----- Look for full name change … … 3200 2936 // ----- Remove drive letter if any 3201 2937 $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); 3202 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Changing full name of '".$p_filename."' for '".$v_stored_filename."'"); 3203 } 3204 2938 } 2939 3205 2940 // ----- Look for path and/or short name change 3206 2941 else { … … 3215 2950 } 3216 2951 $v_stored_filename = $v_dir.$p_filedescr['new_short_name']; 3217 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Changing short name of '".$p_filename."' for '".$v_stored_filename."'");3218 2952 } 3219 2953 else { … … 3225 2959 if ($p_remove_all_dir) { 3226 2960 $v_stored_filename = basename($p_filename); 3227 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove all path selected change '".$p_filename."' for '".$v_stored_filename."'");3228 2961 } 3229 2962 // ----- Look for partial path remove 3230 2963 else if ($p_remove_dir != "") { 3231 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Partial path to remove");3232 2964 if (substr($p_remove_dir, -1) != '/') 3233 2965 $p_remove_dir .= "/"; … … 3235 2967 if ( (substr($p_filename, 0, 2) == "./") 3236 2968 || (substr($p_remove_dir, 0, 2) == "./")) { 3237 2969 3238 2970 if ( (substr($p_filename, 0, 2) == "./") 3239 2971 && (substr($p_remove_dir, 0, 2) != "./")) { … … 3251 2983 if ($v_compare == 2) { 3252 2984 $v_stored_filename = ""; 3253 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Path to remove is the current folder");3254 2985 } 3255 2986 else { 3256 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove path '$p_remove_dir' in file '$v_stored_filename'");3257 2987 $v_stored_filename = substr($v_stored_filename, 3258 2988 strlen($p_remove_dir)); 3259 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Result is '$v_stored_filename'"); 3260 } 3261 } 3262 } 3263 2989 } 2990 } 2991 } 2992 3264 2993 // ----- Remove drive letter if any 3265 2994 $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); 3266 2995 3267 2996 // ----- Look for path to add 3268 2997 if ($p_add_dir != "") { … … 3271 3000 else 3272 3001 $v_stored_filename = $p_add_dir."/".$v_stored_filename; 3273 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Add path '$p_add_dir' in file '$p_filename' = '$v_stored_filename'");3274 3002 } 3275 3003 } … … 3278 3006 $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); 3279 3007 $p_filedescr['stored_filename'] = $v_stored_filename; 3280 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Stored filename will be '".$p_filedescr['stored_filename']."', strlen ".strlen($p_filedescr['stored_filename'])); 3281 3008 3282 3009 // ----- Return 3283 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3284 3010 return $v_result; 3285 3011 } … … 3294 3020 function privWriteFileHeader(&$p_header) 3295 3021 { 3296 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');3297 3022 $v_result=1; 3298 3023 3299 3024 // ----- Store the offset position of the file 3300 3025 $p_header['offset'] = ftell($this->zip_fd); 3301 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File offset of the header :'.$p_header['offset']);3302 3026 3303 3027 // ----- Transform UNIX mtime to DOS format mdate/mtime 3304 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');3305 3028 $v_date = getdate($p_header['mtime']); 3306 3029 $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; … … 3330 3053 3331 3054 // ----- Return 3332 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3333 3055 return $v_result; 3334 3056 } … … 3343 3065 function privWriteCentralFileHeader(&$p_header) 3344 3066 { 3345 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');3346 3067 $v_result=1; 3347 3068 3348 3069 // TBC 3349 3070 //for(reset($p_header); $key = key($p_header); next($p_header)) { 3350 // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "header[$key] = ".$p_header[$key]);3351 3071 //} 3352 3072 3353 3073 // ----- Transform UNIX mtime to DOS format mdate/mtime 3354 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');3355 3074 $v_date = getdate($p_header['mtime']); 3356 3075 $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; 3357 3076 $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; 3358 3077 3359 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$p_header['comment_len'].'\'');3360 3078 3361 3079 // ----- Packed data … … 3388 3106 3389 3107 // ----- Return 3390 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3391 3108 return $v_result; 3392 3109 } … … 3401 3118 function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) 3402 3119 { 3403 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralHeader", 'nb_entries='.$p_nb_entries.', size='.$p_size.', offset='.$p_offset.', comment="'.$p_comment.'"');3404 3120 $v_result=1; 3405 3121 … … 3419 3135 3420 3136 // ----- Return 3421 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3422 3137 return $v_result; 3423 3138 } … … 3432 3147 function privList(&$p_list) 3433 3148 { 3434 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privList", "list");3435 3149 $v_result=1; 3436 3150 … … 3439 3153 3440 3154 // ----- Open the zip file 3441 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");3442 3155 if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) 3443 3156 { 3444 3157 // ----- Magic quotes trick 3445 3158 $this->privSwapBackMagicQuotes(); 3446 3159 3447 3160 // ----- Error log 3448 3161 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); 3449 3162 3450 3163 // ----- Return 3451 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3452 3164 return PclZip::errorCode(); 3453 3165 } … … 3458 3170 { 3459 3171 $this->privSwapBackMagicQuotes(); 3460 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3461 3172 return $v_result; 3462 3173 } 3463 3174 3464 3175 // ----- Go to beginning of Central Dir 3465 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Offset : ".$v_central_dir['offset']."'");3466 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");3467 3176 @rewind($this->zip_fd); 3468 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");3469 3177 if (@fseek($this->zip_fd, $v_central_dir['offset'])) 3470 3178 { … … 3475 3183 3476 3184 // ----- Return 3477 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3478 3185 return PclZip::errorCode(); 3479 3186 } 3480 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");3481 3187 3482 3188 // ----- Read each entry … … 3487 3193 { 3488 3194 $this->privSwapBackMagicQuotes(); 3489 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3490 3195 return $v_result; 3491 3196 } … … 3504 3209 3505 3210 // ----- Return 3506 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3507 3211 return $v_result; 3508 3212 } … … 3530 3234 function privConvertHeader2FileInfo($p_header, &$p_info) 3531 3235 { 3532 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privConvertHeader2FileInfo", "Filename='".$p_header['filename']."'");3533 3236 $v_result=1; 3534 3237 … … 3548 3251 3549 3252 // ----- Return 3550 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3551 3253 return $v_result; 3552 3254 } … … 3571 3273 function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) 3572 3274 { 3573 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privExtractByRule", "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'");3574 3275 $v_result=1; 3575 3276 … … 3590 3291 while (substr($p_path, -1) == "/") 3591 3292 { 3592 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Destination path [$p_path] ends by '/'");3593 3293 $p_path = substr($p_path, 0, strlen($p_path)-1); 3594 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Modified to [$p_path]");3595 3294 } 3596 3295 } … … 3604 3303 3605 3304 // ----- Open the zip file 3606 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");3607 3305 if (($v_result = $this->privOpenFd('rb')) != 1) 3608 3306 { 3609 3307 $this->privSwapBackMagicQuotes(); 3610 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3611 3308 return $v_result; 3612 3309 } … … 3620 3317 $this->privSwapBackMagicQuotes(); 3621 3318 3622 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3623 3319 return $v_result; 3624 3320 } … … 3631 3327 for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) 3632 3328 { 3633 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry : '$i'");3634 3329 3635 3330 // ----- Read next Central dir entry 3636 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position before rewind : ".ftell($this->zip_fd)."'");3637 3331 @rewind($this->zip_fd); 3638 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position after rewind : ".ftell($this->zip_fd)."'");3639 3332 if (@fseek($this->zip_fd, $v_pos_entry)) 3640 3333 { … … 3647 3340 3648 3341 // ----- Return 3649 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3650 3342 return PclZip::errorCode(); 3651 3343 } 3652 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position after fseek : ".ftell($this->zip_fd)."'");3653 3344 3654 3345 // ----- Read the file header … … 3660 3351 $this->privSwapBackMagicQuotes(); 3661 3352 3662 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3663 3353 return $v_result; 3664 3354 } … … 3676 3366 if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) 3677 3367 && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { 3678 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");3679 3368 3680 3369 // ----- Look if the filename is in the list 3681 3370 for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) { 3682 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Compare with file '".$p_options[PCLZIP_OPT_BY_NAME][$j]."'");3683 3371 3684 3372 // ----- Look for a directory 3685 3373 if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { 3686 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");3687 3374 3688 3375 // ----- Look if the directory is in the filename path 3689 3376 if ( (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) 3690 3377 && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { 3691 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path");3692 3378 $v_extract = true; 3693 3379 } … … 3695 3381 // ----- Look for a filename 3696 3382 elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { 3697 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one.");3698 3383 $v_extract = true; 3699 3384 } … … 3702 3387 3703 3388 // ----- Look for extract by ereg rule 3389 // ereg() is deprecated with PHP 5.3 3390 /* 3704 3391 else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) 3705 3392 && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { 3706 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");3707 3393 3708 3394 if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { 3709 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");3710 3395 $v_extract = true; 3711 3396 } 3712 3397 } 3398 */ 3713 3399 3714 3400 // ----- Look for extract by preg rule 3715 3401 else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) 3716 3402 && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { 3717 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");3718 3403 3719 3404 if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { 3720 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");3721 3405 $v_extract = true; 3722 3406 } … … 3726 3410 else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) 3727 3411 && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { 3728 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'"); 3729 3412 3730 3413 // ----- Look if the index is in the list 3731 3414 for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) { 3732 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look if index '$i' is in [".$p_options[PCLZIP_OPT_BY_INDEX][$j]['start'].",".$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']."]");3733 3415 3734 3416 if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { 3735 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range");3736 3417 $v_extract = true; 3737 3418 } 3738 3419 if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { 3739 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop");3740 3420 $j_start = $j+1; 3741 3421 } 3742 3422 3743 3423 if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { 3744 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop");3745 3424 break; 3746 3425 } … … 3750 3429 // ----- Look for no rule, which means extract all the archive 3751 3430 else { 3752 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with no rule (extract all)");3753 3431 $v_extract = true; 3754 3432 } … … 3758 3436 && ( ($v_header['compression'] != 8) 3759 3437 && ($v_header['compression'] != 0))) { 3760 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported compression method (".$v_header['compression'].")");3761 3438 $v_header['status'] = 'unsupported_compression'; 3762 3439 … … 3764 3441 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 3765 3442 && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { 3766 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");3767 3443 3768 3444 $this->privSwapBackMagicQuotes(); 3769 3445 3770 3446 PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, 3771 3447 "Filename '".$v_header['stored_filename']."' is " … … 3773 3449 ."method (".$v_header['compression'].") "); 3774 3450 3775 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3776 3451 return PclZip::errorCode(); 3777 3452 } 3778 3453 } 3779 3454 3780 3455 // ----- Check encrypted files 3781 3456 if (($v_extract) && (($v_header['flag'] & 1) == 1)) { 3782 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported file encryption");3783 3457 $v_header['status'] = 'unsupported_encryption'; 3784 3458 … … 3786 3460 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 3787 3461 && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { 3788 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");3789 3462 3790 3463 $this->privSwapBackMagicQuotes(); … … 3795 3468 ."'"); 3796 3469 3797 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3798 3470 return PclZip::errorCode(); 3799 3471 } … … 3802 3474 // ----- Look for real extraction 3803 3475 if (($v_extract) && ($v_header['status'] != 'ok')) { 3804 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "No need for extract");3805 3476 $v_result = $this->privConvertHeader2FileInfo($v_header, 3806 3477 $p_file_list[$v_nb_extracted++]); … … 3808 3479 $this->privCloseFd(); 3809 3480 $this->privSwapBackMagicQuotes(); 3810 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3811 3481 return $v_result; 3812 3482 } … … 3814 3484 $v_extract = false; 3815 3485 } 3816 3486 3817 3487 // ----- Look for real extraction 3818 3488 if ($v_extract) 3819 3489 { 3820 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file '".$v_header['filename']."', index '$i'");3821 3490 3822 3491 // ----- Go to the file position 3823 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");3824 3492 @rewind($this->zip_fd); 3825 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");3826 3493 if (@fseek($this->zip_fd, $v_header['offset'])) 3827 3494 { … … 3835 3502 3836 3503 // ----- Return 3837 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3838 3504 return PclZip::errorCode(); 3839 3505 } 3840 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");3841 3506 3842 3507 // ----- Look for extraction as string 3843 3508 if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { 3844 3509 3510 $v_string = ''; 3511 3845 3512 // ----- Extracting the file 3846 $v_result1 = $this->privExtractFileAsString($v_header, $v_string );3513 $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); 3847 3514 if ($v_result1 < 1) { 3848 3515 $this->privCloseFd(); 3849 3516 $this->privSwapBackMagicQuotes(); 3850 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);3851 3517 return $v_result1; 3852 3518 } … … 3859 3525 $this->privSwapBackMagicQuotes(); 3860 3526 3861 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3862 3527 return $v_result; 3863 3528 } … … 3868 3533 // ----- Next extracted file 3869 3534 $v_nb_extracted++; 3870 3535 3871 3536 // ----- Look for user callback abort 3872 3537 if ($v_result1 == 2) { … … 3882 3547 $this->privCloseFd(); 3883 3548 $this->privSwapBackMagicQuotes(); 3884 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);3885 3549 return $v_result1; 3886 3550 } … … 3890 3554 $this->privCloseFd(); 3891 3555 $this->privSwapBackMagicQuotes(); 3892 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3893 3556 return $v_result; 3894 3557 } … … 3909 3572 $this->privCloseFd(); 3910 3573 $this->privSwapBackMagicQuotes(); 3911 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);3912 3574 return $v_result1; 3913 3575 } … … 3920 3582 $this->privSwapBackMagicQuotes(); 3921 3583 3922 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3923 3584 return $v_result; 3924 3585 } … … 3937 3598 3938 3599 // ----- Return 3939 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3940 3600 return $v_result; 3941 3601 } … … 3953 3613 function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) 3954 3614 { 3955 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFile', "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'");3956 3615 $v_result=1; 3957 3616 … … 3960 3619 { 3961 3620 // ----- Return 3962 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3963 3621 return $v_result; 3964 3622 } 3965 3623 3966 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");3967 3624 3968 3625 // ----- Check that the file header is coherent with $p_entry info … … 3975 3632 // ----- Look for folder entry that not need to be extracted 3976 3633 if (($p_entry['external']&0x00000010)==0x00000010) { 3977 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The entry is a folder : need to be filtered");3978 3634 3979 3635 $p_entry['status'] = "filtered"; 3980 3636 3981 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3982 3637 return $v_result; 3983 3638 } 3984 3639 3985 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "All path is removed");3986 3640 // ----- Get the basename of the path 3987 3641 $p_entry['filename'] = basename($p_entry['filename']); … … 3991 3645 else if ($p_remove_path != "") 3992 3646 { 3993 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look for some path to remove");3994 3647 if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) 3995 3648 { 3996 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The folder is the same as the removed path '".$p_entry['filename']."'");3997 3649 3998 3650 // ----- Change the file status … … 4000 3652 4001 3653 // ----- Return 4002 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4003 3654 return $v_result; 4004 3655 } … … 4007 3658 if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) 4008 3659 { 4009 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '".$p_entry['filename']."'");4010 3660 4011 3661 // ----- Remove the path 4012 3662 $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); 4013 3663 4014 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Resulting file is '".$p_entry['filename']."'");4015 3664 } 4016 3665 } … … 4020 3669 $p_entry['filename'] = $p_path."/".$p_entry['filename']; 4021 3670 } 4022 3671 4023 3672 // ----- Check a base_dir_restriction 4024 3673 if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { 4025 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Check the extract directory restriction");4026 3674 $v_inclusion 4027 3675 = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], 4028 $p_entry['filename']); 3676 $p_entry['filename']); 4029 3677 if ($v_inclusion == 0) { 4030 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_EXTRACT_DIR_RESTRICTION is selected, file is outside restriction");4031 3678 4032 3679 PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, … … 4034 3681 ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); 4035 3682 4036 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4037 3683 return PclZip::errorCode(); 4038 3684 } … … 4041 3687 // ----- Look for pre-extract callback 4042 3688 if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { 4043 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_EXTRACT]."()') is defined for the extraction");4044 3689 4045 3690 // ----- Generate a local information … … 4050 3695 // Here I do not use call_user_func() because I need to send a reference to the 4051 3696 // header. 4052 eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');3697 $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); 4053 3698 if ($v_result == 0) { 4054 3699 // ----- Change the file status … … 4056 3701 $v_result = 1; 4057 3702 } 4058 3703 4059 3704 // ----- Look for abort result 4060 3705 if ($v_result == 2) { 4061 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");4062 3706 // ----- This status is internal and will be changed in 'skipped' 4063 3707 $p_entry['status'] = "aborted"; … … 4068 3712 // Only some fields can be modified 4069 3713 $p_entry['filename'] = $v_local_header['filename']; 4070 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'"); 4071 } 4072 4073 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'"); 3714 } 3715 4074 3716 4075 3717 // ----- Look if extraction should be done … … 4079 3721 if (file_exists($p_entry['filename'])) 4080 3722 { 4081 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_entry['filename']."' already exists");4082 3723 4083 3724 // ----- Look if file is a directory 4084 3725 if (is_dir($p_entry['filename'])) 4085 3726 { 4086 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is a directory");4087 3727 4088 3728 // ----- Change the file status 4089 3729 $p_entry['status'] = "already_a_directory"; 4090 3730 4091 3731 // ----- Look for PCLZIP_OPT_STOP_ON_ERROR 4092 3732 // For historical reason first PclZip implementation does not stop … … 4094 3734 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 4095 3735 && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { 4096 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");4097 3736 4098 3737 PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, … … 4100 3739 ."already used by an existing directory"); 4101 3740 4102 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4103 3741 return PclZip::errorCode(); 4104 3742 } … … 4107 3745 else if (!is_writeable($p_entry['filename'])) 4108 3746 { 4109 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is write protected");4110 3747 4111 3748 // ----- Change the file status … … 4117 3754 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 4118 3755 && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { 4119 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");4120 3756 4121 3757 PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, … … 4123 3759 ."and is write protected"); 4124 3760 4125 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4126 3761 return PclZip::errorCode(); 4127 3762 } … … 4131 3766 else if (filemtime($p_entry['filename']) > $p_entry['mtime']) 4132 3767 { 4133 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is newer (".date("l dS of F Y h:i:s A", filemtime($p_entry['filename'])).") than the extracted file (".date("l dS of F Y h:i:s A", $p_entry['mtime']).")");4134 3768 // ----- Change the file status 4135 3769 if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) 4136 3770 && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { 4137 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_REPLACE_NEWER is selected, file will be replaced");4138 3771 } 4139 3772 else { 4140 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be replaced");4141 3773 $p_entry['status'] = "newer_exist"; 4142 3774 … … 4146 3778 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 4147 3779 && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { 4148 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");4149 3780 4150 3781 PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, … … 4152 3783 ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); 4153 3784 4154 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4155 3785 return PclZip::errorCode(); 4156 3786 } … … 4158 3788 } 4159 3789 else { 4160 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is older than the extrated one - will be replaced by the extracted one (".date("l dS of F Y h:i:s A", filemtime($p_entry['filename'])).") than the extracted file (".date("l dS of F Y h:i:s A", $p_entry['mtime']).")");4161 3790 } 4162 3791 } … … 4172 3801 4173 3802 if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { 4174 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to create path for '".$p_entry['filename']."'"); 4175 3803 4176 3804 // ----- Change the file status 4177 3805 $p_entry['status'] = "path_creation_fail"; 4178 3806 4179 3807 // ----- Return 4180 ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4181 3808 //return $v_result; 4182 3809 $v_result = 1; … … 4193 3820 // ----- Look for not compressed file 4194 3821 if ($p_entry['compression'] == 0) { 4195 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");4196 3822 4197 3823 // ----- Opening destination file 4198 3824 if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) 4199 3825 { 4200 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");4201 3826 4202 3827 // ----- Change the file status … … 4204 3829 4205 3830 // ----- Return 4206 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4207 3831 return $v_result; 4208 3832 } 4209 3833 4210 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read '".$p_entry['size']."' bytes");4211 3834 4212 3835 // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks … … 4215 3838 { 4216 3839 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 4217 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read $v_read_size bytes");4218 3840 $v_buffer = @fread($this->zip_fd, $v_read_size); 4219 3841 /* Try to speed up the code … … 4221 3843 @fwrite($v_dest_file, $v_binary_data, $v_read_size); 4222 3844 */ 4223 @fwrite($v_dest_file, $v_buffer, $v_read_size); 3845 @fwrite($v_dest_file, $v_buffer, $v_read_size); 4224 3846 $v_size -= $v_read_size; 4225 3847 } … … 4230 3852 // ----- Change the file mtime 4231 3853 touch($p_entry['filename'], $p_entry['mtime']); 4232 3854 4233 3855 4234 3856 } 4235 3857 else { 4236 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (Compression method ".$p_entry['compression'].")");4237 3858 // ----- TBC 4238 3859 // Need to be finished 4239 3860 if (($p_entry['flag'] & 1) == 1) { 4240 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File is encrypted");4241 3861 PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.'); 4242 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4243 3862 return PclZip::errorCode(); 4244 3863 } … … 4246 3865 4247 3866 // ----- Look for using temporary file to unzip 4248 if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 3867 if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 4249 3868 && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) 4250 3869 || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) … … 4255 3874 } 4256 3875 } 4257 3876 4258 3877 // ----- Look for extract in memory 4259 3878 else { 4260 3879 4261 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read '".$p_entry['compressed_size']."' compressed bytes"); 4262 3880 4263 3881 // ----- Read the compressed file in a buffer (one shot) 4264 3882 $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); 4265 3883 4266 3884 // ----- Decompress the file 4267 3885 $v_file_content = @gzinflate($v_buffer); 4268 3886 unset($v_buffer); 4269 3887 if ($v_file_content === FALSE) { 4270 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to inflate compressed file"); 4271 3888 4272 3889 // ----- Change the file status 4273 3890 // TBC 4274 3891 $p_entry['status'] = "error"; 4275 4276 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); 3892 4277 3893 return $v_result; 4278 3894 } 4279 3895 4280 3896 // ----- Opening destination file 4281 3897 if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { 4282 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode"); 4283 3898 4284 3899 // ----- Change the file status 4285 3900 $p_entry['status'] = "write_error"; 4286 4287 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); 3901 4288 3902 return $v_result; 4289 3903 } 4290 3904 4291 3905 // ----- Write the uncompressed data 4292 3906 @fwrite($v_dest_file, $v_file_content, $p_entry['size']); 4293 3907 unset($v_file_content); 4294 3908 4295 3909 // ----- Closing the destination file 4296 3910 @fclose($v_dest_file); 4297 3911 4298 3912 } 4299 3913 … … 4304 3918 // ----- Look for chmod option 4305 3919 if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { 4306 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "chmod option activated '".$p_options[PCLZIP_OPT_SET_CHMOD]."'");4307 3920 4308 3921 // ----- Change the mode of the file … … 4310 3923 } 4311 3924 4312 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done"); 4313 } 4314 } 4315 4316 // ----- Change abort status 4317 if ($p_entry['status'] == "aborted") { 4318 $p_entry['status'] = "skipped"; 4319 } 4320 3925 } 3926 } 3927 3928 // ----- Change abort status 3929 if ($p_entry['status'] == "aborted") { 3930 $p_entry['status'] = "skipped"; 3931 } 3932 4321 3933 // ----- Look for post-extract callback 4322 3934 elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { 4323 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_EXTRACT]."()') is defined for the extraction");4324 3935 4325 3936 // ----- Generate a local information … … 4330 3941 // Here I do not use call_user_func() because I need to send a reference to the 4331 3942 // header. 4332 eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');3943 $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); 4333 3944 4334 3945 // ----- Look for abort result 4335 3946 if ($v_result == 2) { 4336 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");4337 3947 $v_result = PCLZIP_ERR_USER_ABORTED; 4338 3948 } … … 4340 3950 4341 3951 // ----- Return 4342 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4343 3952 return $v_result; 4344 3953 } … … 4353 3962 function privExtractFileUsingTempFile(&$p_entry, &$p_options) 4354 3963 { 4355 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileUsingTempFile', "filename='".$p_entry['filename']."'");4356 3964 $v_result=1; 4357 3965 4358 3966 // ----- Creates a temporary file 4359 3967 $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; … … 4361 3969 fclose($v_file); 4362 3970 PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); 4363 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4364 3971 return PclZip::errorCode(); 4365 3972 } 4366 3973 4367 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Start extraction of '".$p_entry['filename']."'");4368 3974 4369 3975 // ----- Write gz file format header … … 4373 3979 // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks 4374 3980 $v_size = $p_entry['compressed_size']; 4375 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Compressed Size :".$v_size."");4376 3981 while ($v_size != 0) 4377 3982 { 4378 3983 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 4379 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read ".$v_read_size." bytes");4380 3984 $v_buffer = @fread($this->zip_fd, $v_read_size); 4381 3985 //$v_binary_data = pack('a'.$v_read_size, $v_buffer); … … 4393 3997 // ----- Opening destination file 4394 3998 if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { 4395 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");4396 3999 $p_entry['status'] = "write_error"; 4397 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4398 4000 return $v_result; 4399 4001 } … … 4404 4006 $p_entry['status'] = "read_error"; 4405 4007 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); 4406 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4407 4008 return PclZip::errorCode(); 4408 4009 } 4409 4010 4410 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File size is '.filesize($v_gzip_temp_name));4411 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes");4412 4011 4413 4012 // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks 4414 4013 $v_size = $p_entry['size']; 4415 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size :".$v_size."");4416 4014 while ($v_size != 0) { 4417 4015 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 4418 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read ".$v_read_size." bytes");4419 4016 $v_buffer = @gzread($v_src_file, $v_read_size); 4420 4017 //$v_binary_data = pack('a'.$v_read_size, $v_buffer); … … 4427 4024 // ----- Delete the temporary file 4428 4025 @unlink($v_gzip_temp_name); 4429 4026 4430 4027 // ----- Return 4431 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4432 4028 return $v_result; 4433 4029 } … … 4442 4038 function privExtractFileInOutput(&$p_entry, &$p_options) 4443 4039 { 4444 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileInOutput', "");4445 4040 $v_result=1; 4446 4041 4447 4042 // ----- Read the file header 4448 4043 if (($v_result = $this->privReadFileHeader($v_header)) != 1) { 4449 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4450 4044 return $v_result; 4451 4045 } 4452 4046 4453 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");4454 4047 4455 4048 // ----- Check that the file header is coherent with $p_entry info … … 4460 4053 // ----- Look for pre-extract callback 4461 4054 if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { 4462 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_EXTRACT]."()') is defined for the extraction");4463 4055 4464 4056 // ----- Generate a local information … … 4469 4061 // Here I do not use call_user_func() because I need to send a reference to the 4470 4062 // header. 4471 eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); 4063 // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); 4064 $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); 4472 4065 if ($v_result == 0) { 4473 4066 // ----- Change the file status … … 4478 4071 // ----- Look for abort result 4479 4072 if ($v_result == 2) { 4480 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");4481 4073 // ----- This status is internal and will be changed in 'skipped' 4482 4074 $p_entry['status'] = "aborted"; … … 4487 4079 // Only some fields can be modified 4488 4080 $p_entry['filename'] = $v_local_header['filename']; 4489 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'");4490 4081 } 4491 4082 4492 4083 // ----- Trace 4493 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'");4494 4084 4495 4085 // ----- Look if extraction should be done … … 4500 4090 // ----- Look for not compressed file 4501 4091 if ($p_entry['compressed_size'] == $p_entry['size']) { 4502 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");4503 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes");4504 4092 4505 4093 // ----- Read the file in a buffer (one shot) … … 4511 4099 } 4512 4100 else { 4513 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file");4514 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Reading '".$p_entry['size']."' bytes");4515 4101 4516 4102 // ----- Read the compressed file in a buffer (one shot) 4517 4103 $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); 4518 4104 4519 4105 // ----- Decompress the file 4520 4106 $v_file_content = gzinflate($v_buffer); … … 4525 4111 unset($v_file_content); 4526 4112 } 4527 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");4528 4113 } 4529 4114 } … … 4536 4121 // ----- Look for post-extract callback 4537 4122 elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { 4538 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_EXTRACT]."()') is defined for the extraction");4539 4123 4540 4124 // ----- Generate a local information … … 4545 4129 // Here I do not use call_user_func() because I need to send a reference to the 4546 4130 // header. 4547 eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');4131 $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); 4548 4132 4549 4133 // ----- Look for abort result 4550 4134 if ($v_result == 2) { 4551 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");4552 4135 $v_result = PCLZIP_ERR_USER_ABORTED; 4553 4136 } 4554 4137 } 4555 4138 4556 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4557 4139 return $v_result; 4558 4140 } … … 4565 4147 // Return Values : 4566 4148 // -------------------------------------------------------------------------------- 4567 function privExtractFileAsString(&$p_entry, &$p_string )4149 function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) 4568 4150 { 4569 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileAsString', "p_entry['filename']='".$p_entry['filename']."'");4570 4151 $v_result=1; 4571 4152 … … 4575 4156 { 4576 4157 // ----- Return 4577 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4578 4158 return $v_result; 4579 4159 } 4580 4160 4581 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");4582 4161 4583 4162 // ----- Check that the file header is coherent with $p_entry info … … 4586 4165 } 4587 4166 4588 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file in string (with path) '".$p_entry['filename']."', size '$v_header[size]'"); 4589 4590 // ----- Do the extraction (if not a folder) 4591 if (!(($p_entry['external']&0x00000010)==0x00000010)) 4592 { 4593 // ----- Look for not compressed file 4594 // if ($p_entry['compressed_size'] == $p_entry['size']) 4595 if ($p_entry['compression'] == 0) { 4596 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file"); 4597 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes"); 4598 4599 // ----- Reading the file 4600 $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); 4167 // ----- Look for pre-extract callback 4168 if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { 4169 4170 // ----- Generate a local information 4171 $v_local_header = array(); 4172 $this->privConvertHeader2FileInfo($p_entry, $v_local_header); 4173 4174 // ----- Call the callback 4175 // Here I do not use call_user_func() because I need to send a reference to the 4176 // header. 4177 $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); 4178 if ($v_result == 0) { 4179 // ----- Change the file status 4180 $p_entry['status'] = "skipped"; 4181 $v_result = 1; 4182 } 4183 4184 // ----- Look for abort result 4185 if ($v_result == 2) { 4186 // ----- This status is internal and will be changed in 'skipped' 4187 $p_entry['status'] = "aborted"; 4188 $v_result = PCLZIP_ERR_USER_ABORTED; 4189 } 4190 4191 // ----- Update the informations 4192 // Only some fields can be modified 4193 $p_entry['filename'] = $v_local_header['filename']; 4194 } 4195 4196 4197 // ----- Look if extraction should be done 4198 if ($p_entry['status'] == 'ok') { 4199 4200 // ----- Do the extraction (if not a folder) 4201 if (!(($p_entry['external']&0x00000010)==0x00000010)) { 4202 // ----- Look for not compressed file 4203 // if ($p_entry['compressed_size'] == $p_entry['size']) 4204 if ($p_entry['compression'] == 0) { 4205 4206 // ----- Reading the file 4207 $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); 4208 } 4209 else { 4210 4211 // ----- Reading the file 4212 $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); 4213 4214 // ----- Decompress the file 4215 if (($p_string = @gzinflate($v_data)) === FALSE) { 4216 // TBC 4217 } 4218 } 4219 4220 // ----- Trace 4601 4221 } 4602 4222 else { 4603 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (compression method '".$p_entry['compression']."')"); 4604 4605 // ----- Reading the file 4606 $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); 4607 4608 // ----- Decompress the file 4609 if (($p_string = @gzinflate($v_data)) === FALSE) { 4610 // TBC 4611 } 4612 } 4613 4614 // ----- Trace 4615 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done"); 4616 } 4617 else { 4618 // TBC : error : can not extract a folder in a string 4223 // TBC : error : can not extract a folder in a string 4224 } 4225 4226 } 4227 4228 // ----- Change abort status 4229 if ($p_entry['status'] == "aborted") { 4230 $p_entry['status'] = "skipped"; 4231 } 4232 4233 // ----- Look for post-extract callback 4234 elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { 4235 4236 // ----- Generate a local information 4237 $v_local_header = array(); 4238 $this->privConvertHeader2FileInfo($p_entry, $v_local_header); 4239 4240 // ----- Swap the content to header 4241 $v_local_header['content'] = $p_string; 4242 $p_string = ''; 4243 4244 // ----- Call the callback 4245 // Here I do not use call_user_func() because I need to send a reference to the 4246 // header. 4247 $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); 4248 4249 // ----- Swap back the content to header 4250 $p_string = $v_local_header['content']; 4251 unset($v_local_header['content']); 4252 4253 // ----- Look for abort result 4254 if ($v_result == 2) { 4255 $v_result = PCLZIP_ERR_USER_ABORTED; 4256 } 4619 4257 } 4620 4258 4621 4259 // ----- Return 4622 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4623 4260 return $v_result; 4624 4261 } … … 4633 4270 function privReadFileHeader(&$p_header) 4634 4271 { 4635 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadFileHeader", "");4636 4272 $v_result=1; 4637 4273 4638 4274 // ----- Read the 4 bytes signature 4639 4275 $v_binary_data = @fread($this->zip_fd, 4); 4640 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");4641 4276 $v_data = unpack('Vid', $v_binary_data); 4642 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");4643 4277 4644 4278 // ----- Check signature 4645 4279 if ($v_data['id'] != 0x04034b50) 4646 4280 { 4647 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid File header");4648 4281 4649 4282 // ----- Error log … … 4651 4284 4652 4285 // ----- Return 4653 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4654 4286 return PclZip::errorCode(); 4655 4287 } … … 4663 4295 $p_header['filename'] = ""; 4664 4296 $p_header['status'] = "invalid_header"; 4665 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));4666 4297 4667 4298 // ----- Error log … … 4669 4300 4670 4301 // ----- Return 4671 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4672 4302 return PclZip::errorCode(); 4673 4303 } 4674 4304 4675 4305 // ----- Extract the values 4676 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header : '".$v_binary_data."'");4677 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header (Hex) : '".bin2hex($v_binary_data)."'");4678 4306 $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); 4679 4307 4680 4308 // ----- Get filename 4681 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "File name length : ".$v_data['filename_len']);4682 4309 $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); 4683 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename : \''.$p_header['filename'].'\'');4684 4310 4685 4311 // ----- Get extra_fields 4686 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extra field length : ".$v_data['extra_len']);4687 4312 if ($v_data['extra_len'] != 0) { 4688 4313 $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); … … 4691 4316 $p_header['extra'] = ''; 4692 4317 } 4693 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Extra field : \''.bin2hex($p_header['extra']).'\'');4694 4318 4695 4319 // ----- Extract properties 4696 4320 $p_header['version_extracted'] = $v_data['version']; 4697 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : ('.$p_header['version_extracted'].') \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\'');4698 4321 $p_header['compression'] = $v_data['compression']; 4699 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compression method : \''.$p_header['compression'].'\'');4700 4322 $p_header['size'] = $v_data['size']; 4701 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_header['size'].'\'');4702 4323 $p_header['compressed_size'] = $v_data['compressed_size']; 4703 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_header['compressed_size'].'\'');4704 4324 $p_header['crc'] = $v_data['crc']; 4705 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\'');4706 4325 $p_header['flag'] = $v_data['flag']; 4707 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag : \''.$p_header['flag'].'\'');4708 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag bit 11 (from right) : \''.($p_header['flag']&0x0400).'\'');4709 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag bit 11 (from left) : \''.($p_header['flag']&0x0020).'\'');4710 4326 $p_header['filename_len'] = $v_data['filename_len']; 4711 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename_len : \''.$p_header['filename_len'].'\'');4712 4327 4713 4328 // ----- Recuperate date in UNIX format … … 4729 4344 $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); 4730 4345 4731 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');4732 4346 } 4733 4347 else 4734 4348 { 4735 4349 $p_header['mtime'] = time(); 4736 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');4737 4350 } 4738 4351 4739 4352 // TBC 4740 4353 //for(reset($v_data); $key = key($v_data); next($v_data)) { 4741 // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Attribut[$key] = ".$v_data[$key]);4742 4354 //} 4743 4355 … … 4749 4361 4750 4362 // ----- Return 4751 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4752 4363 return $v_result; 4753 4364 } … … 4762 4373 function privReadCentralFileHeader(&$p_header) 4763 4374 { 4764 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadCentralFileHeader", "");4765 4375 $v_result=1; 4766 4376 4767 4377 // ----- Read the 4 bytes signature 4768 4378 $v_binary_data = @fread($this->zip_fd, 4); 4769 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");4770 4379 $v_data = unpack('Vid', $v_binary_data); 4771 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");4772 4380 4773 4381 // ----- Check signature 4774 4382 if ($v_data['id'] != 0x02014b50) 4775 4383 { 4776 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid Central Dir File signature");4777 4384 4778 4385 // ----- Error log … … 4780 4387 4781 4388 // ----- Return 4782 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4783 4389 return PclZip::errorCode(); 4784 4390 } … … 4792 4398 $p_header['filename'] = ""; 4793 4399 $p_header['status'] = "invalid_header"; 4794 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));4795 4400 4796 4401 // ----- Error log … … 4798 4403 4799 4404 // ----- Return 4800 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4801 4405 return PclZip::errorCode(); 4802 4406 } 4803 4407 4804 4408 // ----- Extract the values 4805 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header : '".$v_binary_data."'");4806 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header (Hex) : '".bin2hex($v_binary_data)."'");4807 4409 $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); 4808 4410 4809 4411 // ----- Get filename 4810 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File name length : ".$p_header['filename_len']);4811 4412 if ($p_header['filename_len'] != 0) 4812 4413 $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); 4813 4414 else 4814 4415 $p_header['filename'] = ''; 4815 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Filename : \''.$p_header['filename'].'\'');4816 4416 4817 4417 // ----- Get extra 4818 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Extra length : ".$p_header['extra_len']);4819 4418 if ($p_header['extra_len'] != 0) 4820 4419 $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); 4821 4420 else 4822 4421 $p_header['extra'] = ''; 4823 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Extra : \''.$p_header['extra'].'\'');4824 4422 4825 4423 // ----- Get comment 4826 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Comment length : ".$p_header['comment_len']);4827 4424 if ($p_header['comment_len'] != 0) 4828 4425 $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); 4829 4426 else 4830 4427 $p_header['comment'] = ''; 4831 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Comment : \''.$p_header['comment'].'\'');4832 4428 4833 4429 // ----- Extract properties 4834 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version : \''.($p_header['version']/10).'.'.($p_header['version']%10).'\'');4835 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\'');4836 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Size : \''.$p_header['size'].'\'');4837 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Compressed Size : \''.$p_header['compressed_size'].'\'');4838 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\'');4839 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Flag : \''.$p_header['flag'].'\'');4840 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Offset : \''.$p_header['offset'].'\'');4841 4430 4842 4431 // ----- Recuperate date in UNIX format … … 4858 4447 $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); 4859 4448 4860 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');4861 4449 } 4862 4450 else 4863 4451 { 4864 4452 $p_header['mtime'] = time(); 4865 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');4866 4453 } 4867 4454 … … 4873 4460 4874 4461 // ----- Look if it is a directory 4875 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Internal (Hex) : '".sprintf("Ox%04X", $p_header['internal'])."'");4876 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "External (Hex) : '".sprintf("Ox%04X", $p_header['external'])."' (".(($p_header['external']&0x00000010)==0x00000010?'is a folder':'is a file').')');4877 4462 if (substr($p_header['filename'], -1) == '/') { 4878 4463 //$p_header['external'] = 0x41FF0010; 4879 4464 $p_header['external'] = 0x00000010; 4880 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Force folder external : \''.sprintf("Ox%04X", $p_header['external']).'\''); 4881 } 4882 4883 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Header of filename : \''.$p_header['filename'].'\''); 4465 } 4466 4884 4467 4885 4468 // ----- Return 4886 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4887 4469 return $v_result; 4888 4470 } … … 4899 4481 function privCheckFileHeaders(&$p_local_header, &$p_central_header) 4900 4482 { 4901 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFileHeaders", "");4902 4483 $v_result=1; 4903 4484 … … 4905 4486 // TBC 4906 4487 if ($p_local_header['filename'] != $p_central_header['filename']) { 4907 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename" : TBC To Be Completed');4908 4488 } 4909 4489 if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { 4910 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "version_extracted" : TBC To Be Completed');4911 4490 } 4912 4491 if ($p_local_header['flag'] != $p_central_header['flag']) { 4913 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "flag" : TBC To Be Completed');4914 4492 } 4915 4493 if ($p_local_header['compression'] != $p_central_header['compression']) { 4916 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "compression" : TBC To Be Completed');4917 4494 } 4918 4495 if ($p_local_header['mtime'] != $p_central_header['mtime']) { 4919 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "mtime" : TBC To Be Completed');4920 4496 } 4921 4497 if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { 4922 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename_len" : TBC To Be Completed');4923 4498 } 4924 4499 4925 4500 // ----- Look for flag bit 3 4926 4501 if (($p_local_header['flag'] & 8) == 8) { 4927 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Purpose bit flag bit 3 set !');4928 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'File size, compression size and crc found in central header');4929 4502 $p_local_header['size'] = $p_central_header['size']; 4930 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_local_header['size'].'\'');4931 4503 $p_local_header['compressed_size'] = $p_central_header['compressed_size']; 4932 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_local_header['compressed_size'].'\'');4933 4504 $p_local_header['crc'] = $p_central_header['crc']; 4934 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_local_header['crc']).'\'');4935 4505 } 4936 4506 4937 4507 // ----- Return 4938 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4939 4508 return $v_result; 4940 4509 } … … 4949 4518 function privReadEndCentralDir(&$p_central_dir) 4950 4519 { 4951 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadEndCentralDir", "");4952 4520 $v_result=1; 4953 4521 4954 4522 // ----- Go to the end of the zip file 4955 4523 $v_size = filesize($this->zipname); 4956 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size of the file :$v_size");4957 4524 @fseek($this->zip_fd, $v_size); 4958 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position at end of zip file : \''.ftell($this->zip_fd).'\'');4959 4525 if (@ftell($this->zip_fd) != $v_size) 4960 4526 { … … 4963 4529 4964 4530 // ----- Return 4965 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4966 4531 return PclZip::errorCode(); 4967 4532 } … … 4971 4536 $v_found = 0; 4972 4537 if ($v_size > 26) { 4973 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Look for central dir with no comment');4974 4538 @fseek($this->zip_fd, $v_size-22); 4975 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after min central position : \''.ftell($this->zip_fd).'\'');4976 4539 if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) 4977 4540 { … … 4980 4543 4981 4544 // ----- Return 4982 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4983 4545 return PclZip::errorCode(); 4984 4546 } … … 4986 4548 // ----- Read for bytes 4987 4549 $v_binary_data = @fread($this->zip_fd, 4); 4988 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");4989 4550 $v_data = @unpack('Vid', $v_binary_data); 4990 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");4991 4551 4992 4552 // ----- Check signature 4993 4553 if ($v_data['id'] == 0x06054b50) { 4994 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found central dir at the default position.");4995 4554 $v_found = 1; 4996 4555 } … … 5001 4560 // ----- Go back to the maximum possible size of the Central Dir End Record 5002 4561 if (!$v_found) { 5003 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Start extended search of end central dir');5004 4562 $v_maximum_size = 65557; // 0xFFFF + 22; 5005 4563 if ($v_maximum_size > $v_size) … … 5012 4570 5013 4571 // ----- Return 5014 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5015 4572 return PclZip::errorCode(); 5016 4573 } 5017 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after max central position : \''.ftell($this->zip_fd).'\'');5018 4574 5019 4575 // ----- Read byte per byte in order to find the signature … … 5026 4582 5027 4583 // ----- Add the byte 5028 // 5029 // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number 5030 // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. 5031 $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); 4584 //$v_bytes = ($v_bytes << 8) | Ord($v_byte); 4585 // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number 4586 // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. 4587 $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); 5032 4588 5033 4589 // ----- Compare the bytes 5034 4590 if ($v_bytes == 0x504b0506) 5035 4591 { 5036 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Found End Central Dir signature at position : \''.ftell($this->zip_fd).'\'');5037 4592 $v_pos++; 5038 4593 break; … … 5045 4600 if ($v_pos == $v_size) 5046 4601 { 5047 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to find End of Central Dir Record signature");5048 4602 5049 4603 // ----- Error log … … 5051 4605 5052 4606 // ----- Return 5053 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5054 4607 return PclZip::errorCode(); 5055 4608 } … … 5062 4615 if (strlen($v_binary_data) != 18) 5063 4616 { 5064 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));5065 4617 5066 4618 // ----- Error log … … 5068 4620 5069 4621 // ----- Return 5070 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5071 4622 return PclZip::errorCode(); 5072 4623 } 5073 4624 5074 4625 // ----- Extract the values 5075 ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record : '".$v_binary_data."'");5076 ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record (Hex) : '".bin2hex($v_binary_data)."'");5077 4626 $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); 5078 4627 5079 4628 // ----- Check the global size 5080 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Comment length : ".$v_data['comment_size']);5081 4629 if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { 5082 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The central dir is not at the end of the archive. Some trailing bytes exists after the archive.");5083 4630 5084 4631 // ----- Removed in release 2.2 see readme file … … 5093 4640 5094 4641 // ----- Return 5095 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5096 4642 return PclZip::errorCode(); 5097 4643 } … … 5099 4645 5100 4646 // ----- Get comment 5101 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$v_data['comment_size'].'\'');5102 4647 if ($v_data['comment_size'] != 0) { 5103 4648 $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); … … 5105 4650 else 5106 4651 $p_central_dir['comment'] = ''; 5107 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\'');5108 4652 5109 4653 $p_central_dir['entries'] = $v_data['entries']; 5110 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries : \''.$p_central_dir['entries'].'\'');5111 4654 $p_central_dir['disk_entries'] = $v_data['disk_entries']; 5112 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries for this disk : \''.$p_central_dir['disk_entries'].'\'');5113 4655 $p_central_dir['offset'] = $v_data['offset']; 5114 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Offset of Central Dir : \''.$p_central_dir['offset'].'\'');5115 4656 $p_central_dir['size'] = $v_data['size']; 5116 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size of Central Dir : \''.$p_central_dir['size'].'\'');5117 4657 $p_central_dir['disk'] = $v_data['disk']; 5118 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Disk number : \''.$p_central_dir['disk'].'\'');5119 4658 $p_central_dir['disk_start'] = $v_data['disk_start']; 5120 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Start disk number : \''.$p_central_dir['disk_start'].'\'');5121 4659 5122 4660 // TBC 5123 4661 //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { 5124 // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "central_dir[$key] = ".$p_central_dir[$key]);5125 4662 //} 5126 4663 5127 4664 // ----- Return 5128 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5129 4665 return $v_result; 5130 4666 } … … 5139 4675 function privDeleteByRule(&$p_result_list, &$p_options) 5140 4676 { 5141 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDeleteByRule", "");5142 4677 $v_result=1; 5143 4678 $v_list_detail = array(); 5144 4679 5145 4680 // ----- Open the zip file 5146 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5147 4681 if (($v_result=$this->privOpenFd('rb')) != 1) 5148 4682 { 5149 4683 // ----- Return 5150 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5151 4684 return $v_result; 5152 4685 } … … 5157 4690 { 5158 4691 $this->privCloseFd(); 5159 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5160 4692 return $v_result; 5161 4693 } 5162 4694 5163 4695 // ----- Go to beginning of File 5164 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");5165 4696 @rewind($this->zip_fd); 5166 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");5167 4697 5168 4698 // ----- Scan all the files 5169 4699 // ----- Start at beginning of Central Dir 5170 4700 $v_pos_entry = $v_central_dir['offset']; 5171 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");5172 4701 @rewind($this->zip_fd); 5173 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");5174 4702 if (@fseek($this->zip_fd, $v_pos_entry)) 5175 4703 { … … 5181 4709 5182 4710 // ----- Return 5183 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5184 4711 return PclZip::errorCode(); 5185 4712 } 5186 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");5187 4713 5188 4714 // ----- Read each entry … … 5191 4717 for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) 5192 4718 { 5193 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry (index '$i')");5194 4719 5195 4720 // ----- Read the file header … … 5200 4725 $this->privCloseFd(); 5201 4726 5202 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5203 4727 return $v_result; 5204 4728 } 5205 4729 5206 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename (index '$i') : '".$v_header_list[$v_nb_extracted]['stored_filename']."'");5207 4730 5208 4731 // ----- Store the index … … 5215 4738 if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) 5216 4739 && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { 5217 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");5218 4740 5219 4741 // ----- Look if the filename is in the list 5220 4742 for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) { 5221 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Compare with file '".$p_options[PCLZIP_OPT_BY_NAME][$j]."'");5222 4743 5223 4744 // ----- Look for a directory 5224 4745 if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { 5225 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");5226 4746 5227 4747 // ----- Look if the directory is in the filename path 5228 4748 if ( (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) 5229 4749 && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { 5230 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path");5231 4750 $v_found = true; 5232 4751 } 5233 4752 elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ 5234 4753 && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { 5235 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The entry is the searched directory");5236 4754 $v_found = true; 5237 4755 } … … 5239 4757 // ----- Look for a filename 5240 4758 elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { 5241 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one.");5242 4759 $v_found = true; 5243 4760 } … … 5246 4763 5247 4764 // ----- Look for extract by ereg rule 4765 // ereg() is deprecated with PHP 5.3 4766 /* 5248 4767 else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) 5249 4768 && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { 5250 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");5251 4769 5252 4770 if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { 5253 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");5254 4771 $v_found = true; 5255 4772 } 5256 4773 } 4774 */ 5257 4775 5258 4776 // ----- Look for extract by preg rule 5259 4777 else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) 5260 4778 && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { 5261 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");5262 4779 5263 4780 if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { 5264 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");5265 4781 $v_found = true; 5266 4782 } … … 5270 4786 else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) 5271 4787 && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { 5272 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'");5273 4788 5274 4789 // ----- Look if the index is in the list 5275 4790 for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) { 5276 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look if index '$i' is in [".$p_options[PCLZIP_OPT_BY_INDEX][$j]['start'].",".$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']."]");5277 4791 5278 4792 if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { 5279 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range");5280 4793 $v_found = true; 5281 4794 } 5282 4795 if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { 5283 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop");5284 4796 $j_start = $j+1; 5285 4797 } 5286 4798 5287 4799 if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { 5288 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop");5289 4800 break; 5290 4801 } … … 5292 4803 } 5293 4804 else { 5294 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "No argument mean remove all file");5295 4805 $v_found = true; 5296 4806 } … … 5299 4809 if ($v_found) 5300 4810 { 5301 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' need to be deleted");5302 4811 unset($v_header_list[$v_nb_extracted]); 5303 4812 } 5304 4813 else 5305 4814 { 5306 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' will not be deleted");5307 4815 $v_nb_extracted++; 5308 4816 } … … 5319 4827 5320 4828 // ----- Open the temporary zip file in write mode 5321 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary write mode");5322 4829 if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { 5323 4830 $this->privCloseFd(); 5324 4831 5325 4832 // ----- Return 5326 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5327 4833 return $v_result; 5328 4834 } … … 5330 4836 // ----- Look which file need to be kept 5331 4837 for ($i=0; $i<sizeof($v_header_list); $i++) { 5332 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Keep entry index '$i' : '".$v_header_list[$i]['filename']."'");5333 4838 5334 4839 // ----- Calculate the position of the header 5335 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset='". $v_header_list[$i]['offset']."'");5336 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");5337 4840 @rewind($this->zip_fd); 5338 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");5339 4841 if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { 5340 4842 // ----- Close the zip file … … 5347 4849 5348 4850 // ----- Return 5349 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5350 4851 return PclZip::errorCode(); 5351 4852 } 5352 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");5353 4853 5354 4854 // ----- Read the file header … … 5361 4861 5362 4862 // ----- Return 5363 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5364 4863 return $v_result; 5365 4864 } 5366 4865 5367 4866 // ----- Check that local file header is same as central file header 5368 4867 if ($this->privCheckFileHeaders($v_local_header, … … 5380 4879 5381 4880 // ----- Return 5382 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5383 4881 return $v_result; 5384 4882 } 5385 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset for this file is '".$v_header_list[$i]['offset']."'");5386 4883 5387 4884 // ----- Read/write the data block … … 5393 4890 5394 4891 // ----- Return 5395 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5396 4892 return $v_result; 5397 4893 } … … 5400 4896 // ----- Store the offset of the central dir 5401 4897 $v_offset = @ftell($v_temp_zip->zip_fd); 5402 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "New offset of central dir : $v_offset");5403 4898 5404 4899 // ----- Re-Create the Central Dir files header 5405 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the new central directory");5406 4900 for ($i=0; $i<sizeof($v_header_list); $i++) { 5407 4901 // ----- Create the file header 5408 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset of file : ".$v_header_list[$i]['offset']);5409 4902 if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) { 5410 4903 $v_temp_zip->privCloseFd(); … … 5413 4906 5414 4907 // ----- Return 5415 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5416 4908 return $v_result; 5417 4909 } … … 5421 4913 } 5422 4914 5423 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the central directory footer");5424 4915 5425 4916 // ----- Zip file comment … … 5441 4932 5442 4933 // ----- Return 5443 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5444 4934 return $v_result; 5445 4935 } … … 5457 4947 //@rename($v_zip_temp_name, $this->zipname); 5458 4948 PclZipUtilRename($v_zip_temp_name, $this->zipname); 5459 4949 5460 4950 // ----- Destroy the temporary archive 5461 4951 unset($v_temp_zip); 5462 4952 } 5463 4953 5464 4954 // ----- Remove every files : reset the file 5465 4955 else if ($v_central_dir['entries'] != 0) { … … 5467 4957 5468 4958 if (($v_result = $this->privOpenFd('wb')) != 1) { 5469 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5470 4959 return $v_result; 5471 4960 } 5472 4961 5473 4962 if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { 5474 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5475 4963 return $v_result; 5476 4964 } … … 5480 4968 5481 4969 // ----- Return 5482 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5483 4970 return $v_result; 5484 4971 } … … 5500 4987 $v_result = 1; 5501 4988 5502 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDirCheck", "entry='$p_dir', is_dir='".($p_is_dir?"true":"false")."'");5503 4989 5504 4990 // ----- Remove the final '/' … … 5507 4993 $p_dir = substr($p_dir, 0, strlen($p_dir)-1); 5508 4994 } 5509 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for entry '$p_dir'");5510 4995 5511 4996 // ----- Check the directory availability 5512 4997 if ((is_dir($p_dir)) || ($p_dir == "")) 5513 4998 { 5514 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, "'$p_dir' is a directory");5515 4999 return 1; 5516 5000 } … … 5518 5002 // ----- Extract parent directory 5519 5003 $p_parent_dir = dirname($p_dir); 5520 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Parent directory is '$p_parent_dir'");5521 5004 5522 5005 // ----- Just a check … … 5528 5011 if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) 5529 5012 { 5530 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5531 5013 return $v_result; 5532 5014 } … … 5535 5017 5536 5018 // ----- Create the directory 5537 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Create directory '$p_dir'");5538 5019 if (!@mkdir($p_dir, 0777)) 5539 5020 { … … 5542 5023 5543 5024 // ----- Return 5544 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5545 5025 return PclZip::errorCode(); 5546 5026 } 5547 5027 5548 5028 // ----- Return 5549 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result, "Directory '$p_dir' created");5550 5029 return $v_result; 5551 5030 } … … 5561 5040 function privMerge(&$p_archive_to_add) 5562 5041 { 5563 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privMerge", "archive='".$p_archive_to_add->zipname."'");5564 5042 $v_result=1; 5565 5043 … … 5567 5045 if (!is_file($p_archive_to_add->zipname)) 5568 5046 { 5569 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to add does not exist. End of merge.");5570 5047 5571 5048 // ----- Nothing to merge, so merge is a success … … 5573 5050 5574 5051 // ----- Return 5575 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5576 5052 return $v_result; 5577 5053 } … … 5580 5056 if (!is_file($this->zipname)) 5581 5057 { 5582 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, duplicate the archive_to_add.");5583 5058 5584 5059 // ----- Do a duplicate … … 5586 5061 5587 5062 // ----- Return 5588 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5589 5063 return $v_result; 5590 5064 } 5591 5065 5592 5066 // ----- Open the zip file 5593 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5594 5067 if (($v_result=$this->privOpenFd('rb')) != 1) 5595 5068 { 5596 5069 // ----- Return 5597 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5598 5070 return $v_result; 5599 5071 } … … 5604 5076 { 5605 5077 $this->privCloseFd(); 5606 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5607 5078 return $v_result; 5608 5079 } 5609 5080 5610 5081 // ----- Go to beginning of File 5611 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");5612 5082 @rewind($this->zip_fd); 5613 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");5614 5083 5615 5084 // ----- Open the archive_to_add file 5616 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open archive_to_add in binary read mode");5617 5085 if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) 5618 5086 { … … 5620 5088 5621 5089 // ----- Return 5622 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5623 5090 return $v_result; 5624 5091 } … … 5631 5098 $p_archive_to_add->privCloseFd(); 5632 5099 5633 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5634 5100 return $v_result; 5635 5101 } 5636 5102 5637 5103 // ----- Go to beginning of File 5638 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'");5639 5104 @rewind($p_archive_to_add->zip_fd); 5640 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'");5641 5105 5642 5106 // ----- Creates a temporay file … … 5644 5108 5645 5109 // ----- Open the temporary file in write mode 5646 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5647 5110 if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) 5648 5111 { … … 5653 5116 5654 5117 // ----- Return 5655 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5656 5118 return PclZip::errorCode(); 5657 5119 } … … 5663 5125 { 5664 5126 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 5665 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");5666 5127 $v_buffer = fread($this->zip_fd, $v_read_size); 5667 5128 @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); … … 5674 5135 { 5675 5136 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 5676 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");5677 5137 $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); 5678 5138 @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); … … 5682 5142 // ----- Store the offset of the central dir 5683 5143 $v_offset = @ftell($v_zip_temp_fd); 5684 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");5685 5144 5686 5145 // ----- Copy the block of file headers from the old archive … … 5689 5148 { 5690 5149 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 5691 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");5692 5150 $v_buffer = @fread($this->zip_fd, $v_read_size); 5693 5151 @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); … … 5700 5158 { 5701 5159 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 5702 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");5703 5160 $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); 5704 5161 @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); … … 5731 5188 5732 5189 // ----- Return 5733 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5734 5190 return $v_result; 5735 5191 } … … 5757 5213 5758 5214 // ----- Return 5759 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5760 5215 return $v_result; 5761 5216 } … … 5770 5225 function privDuplicate($p_archive_filename) 5771 5226 { 5772 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDuplicate", "archive_filename='$p_archive_filename'");5773 5227 $v_result=1; 5774 5228 … … 5776 5230 if (!is_file($p_archive_filename)) 5777 5231 { 5778 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to duplicate does not exist. End of duplicate.");5779 5232 5780 5233 // ----- Nothing to duplicate, so duplicate is a success. … … 5782 5235 5783 5236 // ----- Return 5784 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5785 5237 return $v_result; 5786 5238 } 5787 5239 5788 5240 // ----- Open the zip file 5789 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5790 5241 if (($v_result=$this->privOpenFd('wb')) != 1) 5791 5242 { 5792 5243 // ----- Return 5793 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5794 5244 return $v_result; 5795 5245 } 5796 5246 5797 5247 // ----- Open the temporary file in write mode 5798 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5799 5248 if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) 5800 5249 { … … 5804 5253 5805 5254 // ----- Return 5806 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5807 5255 return PclZip::errorCode(); 5808 5256 } … … 5814 5262 { 5815 5263 $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); 5816 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read $v_read_size bytes");5817 5264 $v_buffer = fread($v_zip_temp_fd, $v_read_size); 5818 5265 @fwrite($this->zip_fd, $v_buffer, $v_read_size); … … 5827 5274 5828 5275 // ----- Return 5829 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5830 5276 return $v_result; 5831 5277 } … … 5874 5320 function privDisableMagicQuotes() 5875 5321 { 5876 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privDisableMagicQuotes', "");5877 5322 $v_result=1; 5878 5323 … … 5880 5325 if ( (!function_exists("get_magic_quotes_runtime")) 5881 5326 || (!function_exists("set_magic_quotes_runtime"))) { 5882 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Functions *et_magic_quotes_runtime are not supported");5883 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5884 5327 return $v_result; 5885 5328 } … … 5887 5330 // ----- Look if already done 5888 5331 if ($this->magic_quotes_status != -1) { 5889 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "magic_quote already disabled");5890 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5891 5332 return $v_result; 5892 5333 } … … 5894 5335 // ----- Get and memorize the magic_quote value 5895 5336 $this->magic_quotes_status = @get_magic_quotes_runtime(); 5896 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Current magic_quotes_runtime status is '".($this->magic_quotes_status==0?'disable':'enable')."'");5897 5337 5898 5338 // ----- Disable magic_quotes 5899 5339 if ($this->magic_quotes_status == 1) { 5900 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Disable magic_quotes");5901 5340 @set_magic_quotes_runtime(0); 5902 5341 } 5903 5342 5904 5343 // ----- Return 5905 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5906 5344 return $v_result; 5907 5345 } … … 5916 5354 function privSwapBackMagicQuotes() 5917 5355 { 5918 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privSwapBackMagicQuotes', "");5919 5356 $v_result=1; 5920 5357 … … 5922 5359 if ( (!function_exists("get_magic_quotes_runtime")) 5923 5360 || (!function_exists("set_magic_quotes_runtime"))) { 5924 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Functions *et_magic_quotes_runtime are not supported");5925 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5926 5361 return $v_result; 5927 5362 } … … 5929 5364 // ----- Look if something to do 5930 5365 if ($this->magic_quotes_status != -1) { 5931 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "magic_quote not modified");5932 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5933 5366 return $v_result; 5934 5367 } … … 5936 5369 // ----- Swap back magic_quotes 5937 5370 if ($this->magic_quotes_status == 1) { 5938 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Enable back magic_quotes");5939 5371 @set_magic_quotes_runtime($this->magic_quotes_status); 5940 5372 } 5941 5373 5942 5374 // ----- Return 5943 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5944 5375 return $v_result; 5945 5376 } … … 5958 5389 function PclZipUtilPathReduction($p_dir) 5959 5390 { 5960 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathReduction", "dir='$p_dir'");5961 5391 $v_result = ""; 5962 5392 … … 5985 5415 // TBC 5986 5416 $v_result = $p_dir; 5987 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid path is unchanged");5988 5417 $v_skip = 0; 5989 5418 } … … 6009 5438 } 6010 5439 } 6011 5440 6012 5441 // ----- Look for skip 6013 5442 if ($v_skip > 0) { … … 6020 5449 6021 5450 // ----- Return 6022 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6023 5451 return $v_result; 6024 5452 } … … 6042 5470 function PclZipUtilPathInclusion($p_dir, $p_path) 6043 5471 { 6044 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathInclusion", "dir='$p_dir', path='$p_path'");6045 5472 $v_result = 1; 6046 5473 6047 5474 // ----- Look for path beginning by ./ 6048 5475 if ( ($p_dir == '.') 6049 5476 || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { 6050 5477 $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1); 6051 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Replacing ./ by full path in p_dir '".$p_dir."'");6052 5478 } 6053 5479 if ( ($p_path == '.') 6054 5480 || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { 6055 5481 $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1); 6056 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Replacing ./ by full path in p_path '".$p_path."'");6057 5482 } 6058 5483 … … 6067 5492 $j = 0; 6068 5493 while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { 6069 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Working on dir($i)='".$v_list_dir[$i]."' and path($j)='".$v_list_path[$j]."'");6070 5494 6071 5495 // ----- Look for empty dir (path reduction) … … 6081 5505 // ----- Compare the items 6082 5506 if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) { 6083 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Items ($i,$j) are different");6084 5507 $v_result = 0; 6085 5508 } … … 6092 5515 // ----- Look if everything seems to be the same 6093 5516 if ($v_result) { 6094 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Look for tie break");6095 5517 // ----- Skip all the empty items 6096 5518 while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; 6097 5519 while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++; 6098 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Looking on dir($i)='".($i < $v_list_dir_size?$v_list_dir[$i]:'')."' and path($j)='".($j < $v_list_path_size?$v_list_path[$j]:'')."'");6099 5520 6100 5521 if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { … … 6109 5530 6110 5531 // ----- Return 6111 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6112 5532 return $v_result; 6113 5533 } … … 6127 5547 function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) 6128 5548 { 6129 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilCopyBlock", "size=$p_size, mode=$p_mode");6130 5549 $v_result = 1; 6131 5550 6132 5551 if ($p_mode==0) 6133 5552 { 6134 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset before read :".(@ftell($p_src)));6135 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset before write :".(@ftell($p_dest)));6136 5553 while ($p_size != 0) 6137 5554 { 6138 5555 $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); 6139 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");6140 5556 $v_buffer = @fread($p_src, $v_read_size); 6141 5557 @fwrite($p_dest, $v_buffer, $v_read_size); 6142 5558 $p_size -= $v_read_size; 6143 5559 } 6144 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset after read :".(@ftell($p_src)));6145 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset after write :".(@ftell($p_dest)));6146 5560 } 6147 5561 else if ($p_mode==1) … … 6150 5564 { 6151 5565 $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); 6152 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");6153 5566 $v_buffer = @gzread($p_src, $v_read_size); 6154 5567 @fwrite($p_dest, $v_buffer, $v_read_size); … … 6161 5574 { 6162 5575 $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); 6163 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");6164 5576 $v_buffer = @fread($p_src, $v_read_size); 6165 5577 @gzwrite($p_dest, $v_buffer, $v_read_size); … … 6172 5584 { 6173 5585 $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); 6174 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");6175 5586 $v_buffer = @gzread($p_src, $v_read_size); 6176 5587 @gzwrite($p_dest, $v_buffer, $v_read_size); … … 6180 5591 6181 5592 // ----- Return 6182 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6183 5593 return $v_result; 6184 5594 } … … 6199 5609 function PclZipUtilRename($p_src, $p_dest) 6200 5610 { 6201 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilRename", "source=$p_src, destination=$p_dest");6202 5611 $v_result = 1; 6203 5612 6204 5613 // ----- Try to rename the files 6205 5614 if (!@rename($p_src, $p_dest)) { 6206 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to rename file, try copy+unlink");6207 5615 6208 5616 // ----- Try to copy & unlink the src 6209 5617 if (!@copy($p_src, $p_dest)) { 6210 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to copy file");6211 5618 $v_result = 0; 6212 5619 } 6213 5620 else if (!@unlink($p_src)) { 6214 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to unlink old filename");6215 5621 $v_result = 0; 6216 5622 } … … 6218 5624 6219 5625 // ----- Return 6220 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6221 5626 return $v_result; 6222 5627 } … … 6234 5639 function PclZipUtilOptionText($p_option) 6235 5640 { 6236 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilOptionText", "option='".$p_option."'"); 6237 5641 6238 5642 $v_list = get_defined_constants(); 6239 5643 for (reset($v_list); $v_key = key($v_list); next($v_list)) { … … 6243 5647 || ($v_prefix == 'PCLZIP_ATT')) 6244 5648 && ($v_list[$v_key] == $p_option)) { 6245 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_key);6246 5649 return $v_key; 6247 5650 } 6248 5651 } 6249 5652 6250 5653 $v_result = 'Unknown'; 6251 5654 6252 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6253 5655 return $v_result; 6254 5656 }
Note: See TracChangeset
for help on using the changeset viewer.