Ticket #10777: 10777.diff
File 10777.diff, 183.8 KB (added by , 16 years ago) |
---|
-
wp-admin/includes/class-pclzip.php
1 1 <?php 2 2 // -------------------------------------------------------------------------------- 3 // PhpConcept Library - Zip Module 2.8 3 // PhpConcept Library - Zip Module 2.8.1 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 // -------------------------------------------------------------------------------- 8 8 // … … 22 22 // The use of this software is at the risk of the user. 23 23 // 24 24 // -------------------------------------------------------------------------------- 25 // $Id: pclzip.lib.php,v 1.5 5 2009/04/22 07:38:36vblavet Exp $25 // $Id: pclzip.lib.php,v 1.57 2009/08/11 14:59:47 vblavet Exp $ 26 26 // -------------------------------------------------------------------------------- 27 27 28 28 // ----- Constants … … 83 83 // -------------------------------------------------------------------------------- 84 84 85 85 // ----- Global variables 86 $g_pclzip_version = "2.8 ";86 $g_pclzip_version = "2.8.1"; 87 87 88 88 // ----- Error codes 89 89 // -1 : Unable to open file in binary write mode … … 214 214 // -------------------------------------------------------------------------------- 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 } 225 223 … … 229 227 $this->magic_quotes_status = -1; 230 228 231 229 // ----- Return 232 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 1);233 230 return; 234 231 } 235 232 // -------------------------------------------------------------------------------- … … 273 270 // -------------------------------------------------------------------------------- 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 279 275 // ----- Reset the error handler … … 285 281 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 291 286 if ($v_size > 1) { … … 298 293 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 304 298 $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, … … 315 309 //, PCLZIP_OPT_CRYPT => 'optional' 316 310 )); 317 311 if ($v_result != 1) { 318 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);319 312 return 0; 320 313 } 321 314 } … … 324 317 // Here we need to support the first historic synopsis of the 325 318 // method. 326 319 else { 327 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");328 320 329 321 // ----- Get the first argument 330 322 $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; … … 336 328 else if ($v_size > 2) { 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 } … … 375 366 // ----- Invalid variable type for $p_filelist 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 … … 386 376 $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; 387 377 } 388 378 else { 389 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Ignore an empty filename");390 379 } 391 380 } 392 381 } … … 406 395 $v_options, 407 396 $v_supported_attributes); 408 397 if ($v_result != 1) { 409 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);410 398 return 0; 411 399 } 412 400 } … … 414 402 // ----- Expand the filelist (expand directories) 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 } 420 407 421 408 // ----- Call the create fct 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 } 432 417 // -------------------------------------------------------------------------------- … … 468 453 // -------------------------------------------------------------------------------- 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 474 458 // ----- Reset the error handler … … 480 464 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 486 469 if ($v_size > 1) { … … 493 476 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 499 481 $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, … … 509 491 PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', 510 492 PCLZIP_OPT_TEMP_FILE_ON => 'optional', 511 493 PCLZIP_OPT_TEMP_FILE_OFF => 'optional' 494 512 495 //, PCLZIP_OPT_CRYPT => 'optional' 513 496 )); 514 497 if ($v_result != 1) { 515 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);516 498 return 0; 517 499 } 518 500 } … … 521 503 // Here we need to support the first historic synopsis of the 522 504 // method. 523 505 else { 524 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");525 506 526 507 // ----- Get the first argument 527 508 $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; … … 535 516 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); 536 517 537 518 // ----- Return 538 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());539 519 return 0; 540 520 } 541 521 } … … 574 554 // ----- Invalid variable type for $p_filelist 575 555 else { 576 556 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); 577 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);578 557 return 0; 579 558 } 580 559 … … 600 579 $v_options, 601 580 $v_supported_attributes); 602 581 if ($v_result != 1) { 603 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);604 582 return 0; 605 583 } 606 584 } … … 608 586 // ----- Expand the filelist (expand directories) 609 587 $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); 610 588 if ($v_result != 1) { 611 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);612 589 return 0; 613 590 } 614 591 615 592 // ----- Call the create fct 616 593 $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); 617 594 if ($v_result != 1) { 618 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);619 595 return 0; 620 596 } 621 597 622 598 // ----- Return 623 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);624 599 return $p_result_list; 625 600 } 626 601 // -------------------------------------------------------------------------------- … … 668 643 // -------------------------------------------------------------------------------- 669 644 function listContent() 670 645 { 671 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::listContent', "");672 646 $v_result=1; 673 647 674 648 // ----- Reset the error handler … … 676 650 677 651 // ----- Check archive 678 652 if (!$this->privCheckFormat()) { 679 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);680 653 return(0); 681 654 } 682 655 … … 685 658 if (($v_result = $this->privList($p_list)) != 1) 686 659 { 687 660 unset($p_list); 688 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());689 661 return(0); 690 662 } 691 663 692 664 // ----- Return 693 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);694 665 return $p_list; 695 666 } 696 667 // -------------------------------------------------------------------------------- … … 729 700 // -------------------------------------------------------------------------------- 730 701 function extract() 731 702 { 732 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extract", "");733 703 $v_result=1; 734 704 735 705 // ----- Reset the error handler … … 737 707 738 708 // ----- Check archive 739 709 if (!$this->privCheckFormat()) { 740 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);741 710 return(0); 742 711 } 743 712 … … 750 719 751 720 // ----- Look for variable options arguments 752 721 $v_size = func_num_args(); 753 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");754 722 755 723 // ----- Default values for option 756 724 $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; … … 762 730 763 731 // ----- Look for first arg 764 732 if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { 765 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");766 733 767 734 // ----- Parse the options 768 735 $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, … … 787 754 PCLZIP_OPT_TEMP_FILE_OFF => 'optional' 788 755 )); 789 756 if ($v_result != 1) { 790 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);791 757 return 0; 792 758 } 793 759 … … 814 780 // Here we need to support the first historic synopsis of the 815 781 // method. 816 782 else { 817 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");818 783 819 784 // ----- Get the first argument 820 785 $v_path = $v_arg_list[0]; … … 828 793 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); 829 794 830 795 // ----- Return 831 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());832 796 return 0; 833 797 } 834 798 } … … 838 802 $this->privOptionDefaultThreshold($v_options); 839 803 840 804 // ----- 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 805 843 806 // ----- Call the extracting fct 844 807 $p_list = array(); … … 846 809 $v_remove_all_path, $v_options); 847 810 if ($v_result < 1) { 848 811 unset($p_list); 849 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());850 812 return(0); 851 813 } 852 814 853 815 // ----- Return 854 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);855 816 return $p_list; 856 817 } 857 818 // -------------------------------------------------------------------------------- … … 896 857 //function extractByIndex($p_index, options...) 897 858 function extractByIndex($p_index) 898 859 { 899 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extractByIndex", "index='$p_index', ...");900 860 $v_result=1; 901 861 902 862 // ----- Reset the error handler … … 904 864 905 865 // ----- Check archive 906 866 if (!$this->privCheckFormat()) { 907 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);908 867 return(0); 909 868 } 910 869 … … 917 876 918 877 // ----- Look for variable options arguments 919 878 $v_size = func_num_args(); 920 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");921 879 922 880 // ----- Default values for option 923 881 $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; … … 933 891 934 892 // ----- Look for first arg 935 893 if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { 936 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");937 894 938 895 // ----- Parse the options 939 896 $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, … … 953 910 PCLZIP_OPT_TEMP_FILE_OFF => 'optional' 954 911 )); 955 912 if ($v_result != 1) { 956 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);957 913 return 0; 958 914 } 959 915 … … 976 932 } 977 933 if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { 978 934 $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; 979 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING not set.");980 935 } 981 936 else { 982 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING set.");983 937 } 984 938 } 985 939 … … 987 941 // Here we need to support the first historic synopsis of the 988 942 // method. 989 943 else { 990 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");991 944 992 945 // ----- Get the first argument 993 946 $v_path = $v_arg_list[0]; … … 1001 954 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); 1002 955 1003 956 // ----- Return 1004 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1005 957 return 0; 1006 958 } 1007 959 } 1008 960 } 1009 961 1010 962 // ----- 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 963 1013 964 // ----- Trick 1014 965 // Here I want to reuse extractByRule(), so I need to parse the $p_index … … 1018 969 $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, 1019 970 array (PCLZIP_OPT_BY_INDEX => 'optional' )); 1020 971 if ($v_result != 1) { 1021 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1022 972 return 0; 1023 973 } 1024 974 $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; … … 1028 978 1029 979 // ----- Call the extracting fct 1030 980 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 981 return(0); 1033 982 } 1034 983 1035 984 // ----- Return 1036 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);1037 985 return $p_list; 1038 986 } 1039 987 // -------------------------------------------------------------------------------- … … 1058 1006 // -------------------------------------------------------------------------------- 1059 1007 function delete() 1060 1008 { 1061 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::delete", "");1062 1009 $v_result=1; 1063 1010 1064 1011 // ----- Reset the error handler … … 1066 1013 1067 1014 // ----- Check archive 1068 1015 if (!$this->privCheckFormat()) { 1069 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1070 1016 return(0); 1071 1017 } 1072 1018 … … 1075 1021 1076 1022 // ----- Look for variable options arguments 1077 1023 $v_size = func_num_args(); 1078 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");1079 1024 1080 1025 // ----- Look for arguments 1081 1026 if ($v_size > 0) { … … 1089 1034 PCLZIP_OPT_BY_PREG => 'optional', 1090 1035 PCLZIP_OPT_BY_INDEX => 'optional' )); 1091 1036 if ($v_result != 1) { 1092 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1093 1037 return 0; 1094 1038 } 1095 1039 } … … 1102 1046 if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { 1103 1047 $this->privSwapBackMagicQuotes(); 1104 1048 unset($v_list); 1105 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());1106 1049 return(0); 1107 1050 } 1108 1051 … … 1110 1053 $this->privSwapBackMagicQuotes(); 1111 1054 1112 1055 // ----- Return 1113 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_list);1114 1056 return $v_list; 1115 1057 } 1116 1058 // -------------------------------------------------------------------------------- … … 1123 1065 // -------------------------------------------------------------------------------- 1124 1066 function deleteByIndex($p_index) 1125 1067 { 1126 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::deleteByIndex", "index='$p_index'");1127 1068 1128 1069 $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); 1129 1070 1130 1071 // ----- Return 1131 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);1132 1072 return $p_list; 1133 1073 } 1134 1074 // -------------------------------------------------------------------------------- … … 1149 1089 // -------------------------------------------------------------------------------- 1150 1090 function properties() 1151 1091 { 1152 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::properties", "");1153 1092 1154 1093 // ----- Reset the error handler 1155 1094 $this->privErrorReset(); … … 1160 1099 // ----- Check archive 1161 1100 if (!$this->privCheckFormat()) { 1162 1101 $this->privSwapBackMagicQuotes(); 1163 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1164 1102 return(0); 1165 1103 } 1166 1104 … … 1174 1112 if (@is_file($this->zipname)) 1175 1113 { 1176 1114 // ----- Open the zip file 1177 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");1178 1115 if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) 1179 1116 { 1180 1117 $this->privSwapBackMagicQuotes(); … … 1183 1120 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); 1184 1121 1185 1122 // ----- Return 1186 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), 0);1187 1123 return 0; 1188 1124 } 1189 1125 … … 1192 1128 if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) 1193 1129 { 1194 1130 $this->privSwapBackMagicQuotes(); 1195 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1196 1131 return 0; 1197 1132 } 1198 1133 … … 1209 1144 $this->privSwapBackMagicQuotes(); 1210 1145 1211 1146 // ----- Return 1212 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_prop);1213 1147 return $v_prop; 1214 1148 } 1215 1149 // -------------------------------------------------------------------------------- … … 1228 1162 // -------------------------------------------------------------------------------- 1229 1163 function duplicate($p_archive) 1230 1164 { 1231 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::duplicate", "");1232 1165 $v_result = 1; 1233 1166 1234 1167 // ----- Reset the error handler … … 1237 1170 // ----- Look if the $p_archive is a PclZip object 1238 1171 if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) 1239 1172 { 1240 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is valid PclZip object '".$p_archive->zipname."'");1241 1173 1242 1174 // ----- Duplicate the archive 1243 1175 $v_result = $this->privDuplicate($p_archive->zipname); … … 1246 1178 // ----- Look if the $p_archive is a string (so a filename) 1247 1179 else if (is_string($p_archive)) 1248 1180 { 1249 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is a filename '$p_archive'");1250 1181 1251 1182 // ----- Check that $p_archive is a valid zip file 1252 1183 // TBC : Should also check the archive format … … 1270 1201 } 1271 1202 1272 1203 // ----- Return 1273 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1274 1204 return $v_result; 1275 1205 } 1276 1206 // -------------------------------------------------------------------------------- … … 1291 1221 // -------------------------------------------------------------------------------- 1292 1222 function merge($p_archive_to_add) 1293 1223 { 1294 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::merge", "");1295 1224 $v_result = 1; 1296 1225 1297 1226 // ----- Reset the error handler … … 1299 1228 1300 1229 // ----- Check archive 1301 1230 if (!$this->privCheckFormat()) { 1302 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);1303 1231 return(0); 1304 1232 } 1305 1233 1306 1234 // ----- Look if the $p_archive_to_add is a PclZip object 1307 1235 if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) 1308 1236 { 1309 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is valid PclZip object");1310 1237 1311 1238 // ----- Merge the archive 1312 1239 $v_result = $this->privMerge($p_archive_to_add); … … 1315 1242 // ----- Look if the $p_archive_to_add is a string (so a filename) 1316 1243 else if (is_string($p_archive_to_add)) 1317 1244 { 1318 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is a filename");1319 1245 1320 1246 // ----- Create a temporary archive 1321 1247 $v_object_archive = new PclZip($p_archive_to_add); … … 1333 1259 } 1334 1260 1335 1261 // ----- Return 1336 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1337 1262 return $v_result; 1338 1263 } 1339 1264 // -------------------------------------------------------------------------------- … … 1448 1373 // -------------------------------------------------------------------------------- 1449 1374 function privCheckFormat($p_level=0) 1450 1375 { 1451 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFormat", "");1452 1376 $v_result = true; 1453 1377 1454 1378 // ----- Reset the file system cache … … 1461 1385 if (!is_file($this->zipname)) { 1462 1386 // ----- Error log 1463 1387 PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); 1464 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());1465 1388 return(false); 1466 1389 } 1467 1390 … … 1469 1392 if (!is_readable($this->zipname)) { 1470 1393 // ----- Error log 1471 1394 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); 1472 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());1473 1395 return(false); 1474 1396 } 1475 1397 … … 1483 1405 // TBC 1484 1406 1485 1407 // ----- Return 1486 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1487 1408 return $v_result; 1488 1409 } 1489 1410 // -------------------------------------------------------------------------------- … … 1505 1426 // -------------------------------------------------------------------------------- 1506 1427 function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) 1507 1428 { 1508 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privParseOptions", "");1509 1429 $v_result=1; 1510 1430 1511 1431 // ----- Read the options 1512 1432 $i=0; 1513 1433 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 1434 1516 1435 // ----- Check if the option is supported 1517 1436 if (!isset($v_requested_options[$p_options_list[$i]])) { … … 1519 1438 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); 1520 1439 1521 1440 // ----- Return 1522 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1523 1441 return PclZip::errorCode(); 1524 1442 } 1525 1443 … … 1535 1453 PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1536 1454 1537 1455 // ----- Return 1538 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1539 1456 return PclZip::errorCode(); 1540 1457 } 1541 1458 1542 1459 // ----- Get the value 1543 1460 $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 1461 $i++; 1546 1462 break; 1547 1463 … … 1549 1465 // ----- Check the number of parameters 1550 1466 if (($i+1) >= $p_size) { 1551 1467 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 1468 return PclZip::errorCode(); 1554 1469 } 1555 1470 1556 1471 // ----- Check for incompatible options 1557 1472 if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { 1558 1473 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 1474 return PclZip::errorCode(); 1561 1475 } 1562 1476 … … 1564 1478 $v_value = $p_options_list[$i+1]; 1565 1479 if ((!is_integer($v_value)) || ($v_value<0)) { 1566 1480 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 1481 return PclZip::errorCode(); 1569 1482 } 1570 1483 1571 1484 // ----- Get the value (and convert it in bytes) 1572 1485 $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 1486 $i++; 1575 1487 break; 1576 1488 … … 1578 1490 // ----- Check for incompatible options 1579 1491 if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { 1580 1492 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 1493 return PclZip::errorCode(); 1583 1494 } 1584 1495 1585 1496 $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 1497 break; 1588 1498 1589 1499 case PCLZIP_OPT_TEMP_FILE_OFF : 1590 1500 // ----- Check for incompatible options 1591 1501 if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { 1592 1502 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 1503 return PclZip::errorCode(); 1595 1504 } 1596 1505 // ----- Check for incompatible options 1597 1506 if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { 1598 1507 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 1508 return PclZip::errorCode(); 1601 1509 } 1602 1510 1603 1511 $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 1512 break; 1606 1513 1607 1514 case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : … … 1611 1518 PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1612 1519 1613 1520 // ----- Return 1614 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1615 1521 return PclZip::errorCode(); 1616 1522 } 1617 1523 … … 1619 1525 if ( is_string($p_options_list[$i+1]) 1620 1526 && ($p_options_list[$i+1] != '')) { 1621 1527 $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 1528 $i++; 1624 1529 } 1625 1530 else { 1626 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." set with an empty value is ignored.");1627 1531 } 1628 1532 break; 1629 1533 … … 1635 1539 PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1636 1540 1637 1541 // ----- Return 1638 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1639 1542 return PclZip::errorCode(); 1640 1543 } 1641 1544 … … 1651 1554 PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1652 1555 1653 1556 // ----- Return 1654 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1655 1557 return PclZip::errorCode(); 1656 1558 } 1657 ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1658 1559 $i++; 1659 1560 break; 1660 1561 1661 1562 // ----- Look for options that request an EREG or PREG expression 1662 1563 case PCLZIP_OPT_BY_EREG : 1564 // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG 1565 // to PCLZIP_OPT_BY_PREG 1566 $p_options_list[$i] = PCLZIP_OPT_BY_PREG; 1663 1567 case PCLZIP_OPT_BY_PREG : 1664 1568 //case PCLZIP_OPT_CRYPT : 1665 1569 // ----- Check the number of parameters … … 1668 1572 PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1669 1573 1670 1574 // ----- Return 1671 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1672 1575 return PclZip::errorCode(); 1673 1576 } 1674 1577 … … 1681 1584 PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1682 1585 1683 1586 // ----- Return 1684 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1685 1587 return PclZip::errorCode(); 1686 1588 } 1687 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1688 1589 $i++; 1689 1590 break; 1690 1591 … … 1701 1602 ."'"); 1702 1603 1703 1604 // ----- Return 1704 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1705 1605 return PclZip::errorCode(); 1706 1606 } 1707 1607 … … 1717 1617 ."'"); 1718 1618 1719 1619 // ----- Return 1720 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1721 1620 return PclZip::errorCode(); 1722 1621 } 1723 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");1724 1622 $i++; 1725 1623 break; 1726 1624 … … 1732 1630 PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1733 1631 1734 1632 // ----- Return 1735 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1736 1633 return PclZip::errorCode(); 1737 1634 } 1738 1635 1739 1636 // ----- Get the value 1740 1637 $v_work_list = array(); 1741 1638 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 1639 1744 1640 // ----- Remove spaces 1745 1641 $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); … … 1748 1644 $v_work_list = explode(",", $p_options_list[$i+1]); 1749 1645 } 1750 1646 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 1647 $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; 1753 1648 } 1754 1649 else if (is_array($p_options_list[$i+1])) { 1755 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an array");1756 1650 $v_work_list = $p_options_list[$i+1]; 1757 1651 } 1758 1652 else { … … 1760 1654 PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1761 1655 1762 1656 // ----- Return 1763 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1764 1657 return PclZip::errorCode(); 1765 1658 } 1766 1659 … … 1794 1687 PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1795 1688 1796 1689 // ----- Return 1797 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1798 1690 return PclZip::errorCode(); 1799 1691 } 1800 1692 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 1693 1803 1694 // ----- Look for list sort 1804 1695 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 1696 $v_sort_flag=true; 1807 1697 1808 1698 // ----- TBC : An automatic sort should be writen ... … … 1810 1700 PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1811 1701 1812 1702 // ----- Return 1813 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1814 1703 return PclZip::errorCode(); 1815 1704 } 1816 1705 $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start']; … … 1819 1708 // ----- Sort the items 1820 1709 if ($v_sort_flag) { 1821 1710 // TBC : To Be Completed 1822 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "List sorting is not yet write ...");1823 1711 } 1824 1712 1825 1713 // ----- Next option … … 1834 1722 case PCLZIP_OPT_REPLACE_NEWER : 1835 1723 case PCLZIP_OPT_STOP_ON_ERROR : 1836 1724 $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 1725 break; 1839 1726 1840 1727 // ----- Look for options that request an octal value … … 1845 1732 PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1846 1733 1847 1734 // ----- Return 1848 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1849 1735 return PclZip::errorCode(); 1850 1736 } 1851 1737 1852 1738 // ----- Get the value 1853 1739 $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 1740 $i++; 1856 1741 break; 1857 1742 … … 1872 1757 PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1873 1758 1874 1759 // ----- Return 1875 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1876 1760 return PclZip::errorCode(); 1877 1761 } 1878 1762 1879 1763 // ----- Get the value 1880 1764 $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 1765 1883 1766 // ----- Check that the value is a valid existing function 1884 1767 if (!function_exists($v_function_name)) { … … 1886 1769 PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); 1887 1770 1888 1771 // ----- Return 1889 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1890 1772 return PclZip::errorCode(); 1891 1773 } 1892 1774 … … 1902 1784 .$p_options_list[$i]."'"); 1903 1785 1904 1786 // ----- Return 1905 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1906 1787 return PclZip::errorCode(); 1907 1788 } 1908 1789 … … 1915 1796 for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { 1916 1797 // ----- Look for mandatory option 1917 1798 if ($v_requested_options[$key] == 'mandatory') { 1918 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");1919 1799 // ----- Look if present 1920 1800 if (!isset($v_result_list[$key])) { 1921 1801 // ----- Error log 1922 1802 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); 1923 1803 1924 1804 // ----- Return 1925 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());1926 1805 return PclZip::errorCode(); 1927 1806 } 1928 1807 } … … 1931 1810 1932 1811 // ----- Look for default values 1933 1812 if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { 1934 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Calculate auto threshold");1935 1813 1936 1814 } 1937 1815 1938 1816 // ----- Return 1939 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1940 1817 return $v_result; 1941 1818 } 1942 1819 // -------------------------------------------------------------------------------- … … 1949 1826 // -------------------------------------------------------------------------------- 1950 1827 function privOptionDefaultThreshold(&$p_options) 1951 1828 { 1952 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOptionDefaultThreshold", "");1953 1829 $v_result=1; 1954 1830 1955 1831 if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) 1956 1832 || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { 1957 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1958 1833 return $v_result; 1959 1834 } 1960 1835 1961 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Create an auto-threshold for use of temporay files");1962 1836 // ----- Get 'memory_limit' configuration value 1963 1837 $v_memory_limit = ini_get('memory_limit'); 1964 1838 $v_memory_limit = trim($v_memory_limit); … … 1975 1849 1976 1850 $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); 1977 1851 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");1980 1852 1981 1853 // ----- Sanity check : No threshold if value lower than 1M 1982 1854 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 1855 unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); 1985 1856 } 1986 1857 1987 1858 // ----- Return 1988 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);1989 1859 return $v_result; 1990 1860 } 1991 1861 // -------------------------------------------------------------------------------- … … 2000 1870 // -------------------------------------------------------------------------------- 2001 1871 function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) 2002 1872 { 2003 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrParseAtt", "");2004 1873 $v_result=1; 2005 1874 2006 1875 // ----- For each file in the list check the attributes … … 2012 1881 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file"); 2013 1882 2014 1883 // ----- Return 2015 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2016 1884 return PclZip::errorCode(); 2017 1885 } 2018 1886 … … 2021 1889 case PCLZIP_ATT_FILE_NAME : 2022 1890 if (!is_string($v_value)) { 2023 1891 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 1892 return PclZip::errorCode(); 2026 1893 } 2027 1894 2028 1895 $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); 2029 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2030 1896 2031 1897 if ($p_filedescr['filename'] == '') { 2032 1898 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 1899 return PclZip::errorCode(); 2035 1900 } 2036 1901 … … 2039 1904 case PCLZIP_ATT_FILE_NEW_SHORT_NAME : 2040 1905 if (!is_string($v_value)) { 2041 1906 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 1907 return PclZip::errorCode(); 2044 1908 } 2045 1909 2046 1910 $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); 2047 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2048 1911 2049 1912 if ($p_filedescr['new_short_name'] == '') { 2050 1913 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 1914 return PclZip::errorCode(); 2053 1915 } 2054 1916 break; … … 2056 1918 case PCLZIP_ATT_FILE_NEW_FULL_NAME : 2057 1919 if (!is_string($v_value)) { 2058 1920 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 1921 return PclZip::errorCode(); 2061 1922 } 2062 1923 2063 1924 $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); 2064 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2065 1925 2066 1926 if ($p_filedescr['new_full_name'] == '') { 2067 1927 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 1928 return PclZip::errorCode(); 2070 1929 } 2071 1930 break; … … 2074 1933 case PCLZIP_ATT_FILE_COMMENT : 2075 1934 if (!is_string($v_value)) { 2076 1935 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 1936 return PclZip::errorCode(); 2079 1937 } 2080 1938 2081 1939 $p_filedescr['comment'] = $v_value; 2082 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2083 1940 break; 2084 1941 2085 1942 case PCLZIP_ATT_FILE_MTIME : 2086 1943 if (!is_integer($v_value)) { 2087 1944 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 1945 return PclZip::errorCode(); 2090 1946 } 2091 1947 2092 1948 $p_filedescr['mtime'] = $v_value; 2093 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2094 1949 break; 2095 1950 2096 1951 case PCLZIP_ATT_FILE_CONTENT : 2097 1952 $p_filedescr['content'] = $v_value; 2098 ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");2099 1953 break; 2100 1954 2101 1955 default : … … 2104 1958 "Unknown parameter '".$v_key."'"); 2105 1959 2106 1960 // ----- Return 2107 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2108 1961 return PclZip::errorCode(); 2109 1962 } 2110 1963 … … 2113 1966 for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { 2114 1967 // ----- Look for mandatory option 2115 1968 if ($v_requested_options[$key] == 'mandatory') { 2116 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");2117 1969 // ----- Look if present 2118 1970 if (!isset($p_file_list[$key])) { 2119 1971 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); 2120 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2121 1972 return PclZip::errorCode(); 2122 1973 } 2123 1974 } … … 2128 1979 } 2129 1980 2130 1981 // ----- Return 2131 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2132 1982 return $v_result; 2133 1983 } 2134 1984 // -------------------------------------------------------------------------------- … … 2149 1999 // -------------------------------------------------------------------------------- 2150 2000 function privFileDescrExpand(&$p_filedescr_list, &$p_options) 2151 2001 { 2152 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrExpand", "");2153 2002 $v_result=1; 2154 2003 2155 2004 // ----- Create a result list … … 2157 2006 2158 2007 // ----- Look each entry 2159 2008 for ($i=0; $i<sizeof($p_filedescr_list); $i++) { 2160 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for file ".$i.".");2161 2009 2162 2010 // ----- Get filedescr 2163 2011 $v_descr = $p_filedescr_list[$i]; 2164 2012 2165 2013 // ----- Reduce the filename 2166 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr before reduction :'".$v_descr['filename']."'");2167 2014 $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false); 2168 2015 $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']); 2169 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr after reduction :'".$v_descr['filename']."'");2170 2016 2171 2017 // ----- Look for real file or folder 2172 2018 if (file_exists($v_descr['filename'])) { 2173 2019 if (@is_file($v_descr['filename'])) { 2174 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a file");2175 2020 $v_descr['type'] = 'file'; 2176 2021 } 2177 2022 else if (@is_dir($v_descr['filename'])) { 2178 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a folder");2179 2023 $v_descr['type'] = 'folder'; 2180 2024 } 2181 2025 else if (@is_link($v_descr['filename'])) { 2182 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : link");2183 2026 // skip 2184 2027 continue; 2185 2028 } 2186 2029 else { 2187 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : unknown type");2188 2030 // skip 2189 2031 continue; 2190 2032 } … … 2192 2034 2193 2035 // ----- Look for string added as file 2194 2036 else if (isset($v_descr['content'])) { 2195 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a string added as a file");2196 2037 $v_descr['type'] = 'virtual_file'; 2197 2038 } 2198 2039 2199 2040 // ----- Missing file 2200 2041 else { 2201 2042 // ----- Error log 2202 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_descr['filename']."' does not exist");2203 2043 PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist"); 2204 2044 2205 2045 // ----- Return 2206 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2207 2046 return PclZip::errorCode(); 2208 2047 } 2209 2048 … … 2220 2059 $v_dirlist_nb = 0; 2221 2060 if ($v_folder_handler = @opendir($v_descr['filename'])) { 2222 2061 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 2062 2225 2063 // ----- Skip '.' and '..' 2226 2064 if (($v_item_handler == '.') || ($v_item_handler == '..')) { … … 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 … … 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 2103 } 2271 2104 2272 2105 // ----- Free local array … … 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 } 2284 2116 // -------------------------------------------------------------------------------- … … 2291 2123 // -------------------------------------------------------------------------------- 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 … … 2302 2133 if (($v_result = $this->privOpenFd('wb')) != 1) 2303 2134 { 2304 2135 // ----- Return 2305 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2306 2136 return $v_result; 2307 2137 } 2308 2138 … … 2316 2146 $this->privSwapBackMagicQuotes(); 2317 2147 2318 2148 // ----- Return 2319 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2320 2149 return $v_result; 2321 2150 } 2322 2151 // -------------------------------------------------------------------------------- … … 2329 2158 // -------------------------------------------------------------------------------- 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(); 2335 2163 2336 2164 // ----- Look if the archive exists or is empty 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 2342 2169 $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); 2343 2170 2344 2171 // ----- Return 2345 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2346 2172 return $v_result; 2347 2173 } 2348 2174 // ----- Magic quotes trick 2349 2175 $this->privDisableMagicQuotes(); 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 { 2355 2180 // ----- Magic quotes trick 2356 2181 $this->privSwapBackMagicQuotes(); 2357 2182 2358 2183 // ----- Return 2359 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2360 2184 return $v_result; 2361 2185 } 2362 2186 … … 2366 2190 { 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 2379 2200 $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; 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 { 2385 2205 $this->privCloseFd(); … … 2388 2208 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); 2389 2209 2390 2210 // ----- Return 2391 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2392 2211 return PclZip::errorCode(); 2393 2212 } 2394 2213 … … 2398 2217 while ($v_size != 0) 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); 2404 2222 $v_size -= $v_read_size; … … 2421 2239 $this->privSwapBackMagicQuotes(); 2422 2240 2423 2241 // ----- Return 2424 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2425 2242 return $v_result; 2426 2243 } 2427 2244 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 2433 2249 $v_size = $v_central_dir['size']; 2434 2250 while ($v_size != 0) 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); 2440 2255 $v_size -= $v_read_size; … … 2452 2267 $this->privSwapBackMagicQuotes(); 2453 2268 2454 2269 // ----- Return 2455 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2456 2270 return $v_result; 2457 2271 } 2458 2272 $v_count++; … … 2485 2299 $this->privSwapBackMagicQuotes(); 2486 2300 2487 2301 // ----- Return 2488 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2489 2302 return $v_result; 2490 2303 } 2491 2304 … … 2513 2326 PclZipUtilRename($v_zip_temp_name, $this->zipname); 2514 2327 2515 2328 // ----- Return 2516 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2517 2329 return $v_result; 2518 2330 } 2519 2331 // -------------------------------------------------------------------------------- … … 2525 2337 // -------------------------------------------------------------------------------- 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 2531 2342 // ----- Look if already open … … 2535 2346 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); 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 { 2546 2355 // ----- Error log 2547 2356 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); 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 } 2558 2365 // -------------------------------------------------------------------------------- … … 2564 2371 // -------------------------------------------------------------------------------- 2565 2372 function privCloseFd() 2566 2373 { 2567 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCloseFd", "");2568 2374 $v_result=1; 2569 2375 2570 2376 if ($this->zip_fd != 0) … … 2572 2378 $this->zip_fd = 0; 2573 2379 2574 2380 // ----- Return 2575 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2576 2381 return $v_result; 2577 2382 } 2578 2383 // -------------------------------------------------------------------------------- … … 2593 2398 // function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) 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 2599 2403 // ----- Add the files … … 2601 2405 if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) 2602 2406 { 2603 2407 // ----- Return 2604 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);2605 2408 return $v_result; 2606 2409 } 2607 2410 … … 2615 2418 if ($v_header_list[$i]['status'] == 'ok') { 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 } 2621 2423 $v_count++; … … 2641 2443 unset($v_header_list); 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 } 2652 2452 // -------------------------------------------------------------------------------- … … 2662 2462 // -------------------------------------------------------------------------------- 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(); 2668 2467 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 2674 2472 for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) { … … 2676 2474 $p_filedescr_list[$j]['filename'] 2677 2475 = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false); 2678 2476 2679 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for file '".$p_filedescr_list[$j]['filename']."'");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 } 2687 2483 2688 2484 // ----- Check the filename 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 } 2696 2490 … … 2709 2503 $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header, 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 } 2715 2508 … … 2717 2510 $p_result_list[$v_nb++] = $v_header; 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 } 2726 2517 // -------------------------------------------------------------------------------- … … 2733 2524 // -------------------------------------------------------------------------------- 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 … … 2745 2535 PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); 2746 2536 2747 2537 // ----- Return 2748 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());2749 2538 return PclZip::errorCode(); 2750 2539 } 2751 2540 … … 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 */ 2763 2550 … … 2800 2587 $p_header['size'] = strlen($p_filedescr['content']); 2801 2588 } 2802 2589 2803 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header external extension '".sprintf("0x%X",$p_header['external'])."'");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 { 2815 2599 $p_header['mtime'] = filemtime($p_filename); … … 2827 2611 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 2833 2616 $v_local_header = array(); … … 2847 2630 // Only some fields can be modified 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 } 2853 2635 … … 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 } 2893 2670 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 2900 2675 @fclose($v_file); … … 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; … … 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 2922 2693 $p_header['compressed_size'] = strlen($v_content); … … 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 } 2932 2702 … … 2940 2710 // ----- Look for a virtual file (a file from string) 2941 2711 else if ($p_filedescr['type'] == 'virtual_file') { 2942 2712 2943 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Add by string");2944 2713 $v_content = $p_filedescr['content']; 2945 2714 2946 2715 // ----- Calculate the CRC … … 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; … … 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); 2962 2729 … … 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 } 2974 2740 … … 2978 2744 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) != '/') { 2984 2749 $p_header['stored_filename'] .= '/'; … … 2992 2757 // ----- Call the header generation 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 } 2998 2762 } … … 3000 2764 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 3006 2769 $v_local_header = array(); … … 3020 2783 } 3021 2784 3022 2785 // ----- Return 3023 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3024 2786 return $v_result; 3025 2787 } 3026 2788 // -------------------------------------------------------------------------------- … … 3033 2795 // -------------------------------------------------------------------------------- 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 } 3050 2809 … … 3053 2812 if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { 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 } 3059 2817 … … 3061 2819 $v_size = filesize($p_filename); 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); 3067 2824 @gzputs($v_file_compressed, $v_buffer, $v_read_size); … … 3073 2830 @gzclose($v_file_compressed); 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 } 3082 2837 3083 2838 // ----- Extract the compressed attributes 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 } 3089 2843 … … 3092 2846 $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); 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 3112 2856 // ----- Set the attributes 3113 2857 $p_header['compression'] = ord($v_data_header['cm']); 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 3119 2862 // ----- Close the file … … 3121 2864 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 } 3127 2869 … … 3129 2871 if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) 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 } 3135 2876 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); 3147 2885 @fwrite($this->zip_fd, $v_buffer, $v_read_size); … … 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 } 3161 2898 // -------------------------------------------------------------------------------- … … 3170 2907 // -------------------------------------------------------------------------------- 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 … … 3187 2923 else { 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]; 3193 2928 } … … 3199 2934 if (isset($p_filedescr['new_full_name'])) { 3200 2935 // ----- Remove drive letter if any 3201 2936 $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 2937 } 3204 2938 3205 2939 // ----- Look for path and/or short name change … … 3214 2948 $v_dir = $v_path_info['dirname'].'/'; 3215 2949 } 3216 2950 $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 2951 } 3219 2952 else { 3220 2953 // ----- Calculate the stored filename … … 3224 2957 // ----- Look for all path to remove 3225 2958 if ($p_remove_all_dir) { 3226 2959 $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 2960 } 3229 2961 // ----- Look for partial path remove 3230 2962 else if ($p_remove_dir != "") { 3231 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Partial path to remove");3232 2963 if (substr($p_remove_dir, -1) != '/') 3233 2964 $p_remove_dir .= "/"; 3234 2965 … … 3250 2981 if ($v_compare > 0) { 3251 2982 if ($v_compare == 2) { 3252 2983 $v_stored_filename = ""; 3253 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Path to remove is the current folder");3254 2984 } 3255 2985 else { 3256 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove path '$p_remove_dir' in file '$v_stored_filename'");3257 2986 $v_stored_filename = substr($v_stored_filename, 3258 2987 strlen($p_remove_dir)); 3259 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Result is '$v_stored_filename'");3260 2988 } 3261 2989 } 3262 2990 } … … 3270 2998 $v_stored_filename = $p_add_dir.$v_stored_filename; 3271 2999 else 3272 3000 $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 3001 } 3275 3002 } 3276 3003 3277 3004 // ----- Filename (reduce the path of stored name) 3278 3005 $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); 3279 3006 $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 3007 3282 3008 // ----- Return 3283 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3284 3009 return $v_result; 3285 3010 } 3286 3011 // -------------------------------------------------------------------------------- … … 3293 3018 // -------------------------------------------------------------------------------- 3294 3019 function privWriteFileHeader(&$p_header) 3295 3020 { 3296 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');3297 3021 $v_result=1; 3298 3022 3299 3023 // ----- Store the offset position of the file 3300 3024 $p_header['offset'] = ftell($this->zip_fd); 3301 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File offset of the header :'.$p_header['offset']);3302 3025 3303 3026 // ----- 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 3027 $v_date = getdate($p_header['mtime']); 3306 3028 $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; 3307 3029 $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; … … 3329 3051 } 3330 3052 3331 3053 // ----- Return 3332 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3333 3054 return $v_result; 3334 3055 } 3335 3056 // -------------------------------------------------------------------------------- … … 3342 3063 // -------------------------------------------------------------------------------- 3343 3064 function privWriteCentralFileHeader(&$p_header) 3344 3065 { 3345 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');3346 3066 $v_result=1; 3347 3067 3348 3068 // TBC 3349 3069 //for(reset($p_header); $key = key($p_header); next($p_header)) { 3350 // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "header[$key] = ".$p_header[$key]);3351 3070 //} 3352 3071 3353 3072 // ----- 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 3073 $v_date = getdate($p_header['mtime']); 3356 3074 $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; 3357 3075 $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; 3358 3076 3359 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$p_header['comment_len'].'\'');3360 3077 3361 3078 // ----- Packed data 3362 3079 $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, … … 3387 3104 } 3388 3105 3389 3106 // ----- Return 3390 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3391 3107 return $v_result; 3392 3108 } 3393 3109 // -------------------------------------------------------------------------------- … … 3400 3116 // -------------------------------------------------------------------------------- 3401 3117 function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) 3402 3118 { 3403 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralHeader", 'nb_entries='.$p_nb_entries.', size='.$p_size.', offset='.$p_offset.', comment="'.$p_comment.'"');3404 3119 $v_result=1; 3405 3120 3406 3121 // ----- Packed data … … 3418 3133 } 3419 3134 3420 3135 // ----- Return 3421 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3422 3136 return $v_result; 3423 3137 } 3424 3138 // -------------------------------------------------------------------------------- … … 3431 3145 // -------------------------------------------------------------------------------- 3432 3146 function privList(&$p_list) 3433 3147 { 3434 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privList", "list");3435 3148 $v_result=1; 3436 3149 3437 3150 // ----- Magic quotes trick 3438 3151 $this->privDisableMagicQuotes(); 3439 3152 3440 3153 // ----- Open the zip file 3441 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");3442 3154 if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) 3443 3155 { 3444 3156 // ----- Magic quotes trick … … 3448 3160 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); 3449 3161 3450 3162 // ----- Return 3451 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3452 3163 return PclZip::errorCode(); 3453 3164 } 3454 3165 … … 3457 3168 if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) 3458 3169 { 3459 3170 $this->privSwapBackMagicQuotes(); 3460 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3461 3171 return $v_result; 3462 3172 } 3463 3173 3464 3174 // ----- 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 3175 @rewind($this->zip_fd); 3468 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");3469 3176 if (@fseek($this->zip_fd, $v_central_dir['offset'])) 3470 3177 { 3471 3178 $this->privSwapBackMagicQuotes(); … … 3474 3181 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); 3475 3182 3476 3183 // ----- Return 3477 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3478 3184 return PclZip::errorCode(); 3479 3185 } 3480 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");3481 3186 3482 3187 // ----- Read each entry 3483 3188 for ($i=0; $i<$v_central_dir['entries']; $i++) … … 3486 3191 if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) 3487 3192 { 3488 3193 $this->privSwapBackMagicQuotes(); 3489 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3490 3194 return $v_result; 3491 3195 } 3492 3196 $v_header['index'] = $i; … … 3503 3207 $this->privSwapBackMagicQuotes(); 3504 3208 3505 3209 // ----- Return 3506 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3507 3210 return $v_result; 3508 3211 } 3509 3212 // -------------------------------------------------------------------------------- … … 3529 3232 // -------------------------------------------------------------------------------- 3530 3233 function privConvertHeader2FileInfo($p_header, &$p_info) 3531 3234 { 3532 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privConvertHeader2FileInfo", "Filename='".$p_header['filename']."'");3533 3235 $v_result=1; 3534 3236 3535 3237 // ----- Get the interesting attributes … … 3547 3249 $p_info['crc'] = $p_header['crc']; 3548 3250 3549 3251 // ----- Return 3550 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3551 3252 return $v_result; 3552 3253 } 3553 3254 // -------------------------------------------------------------------------------- … … 3570 3271 // -------------------------------------------------------------------------------- 3571 3272 function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) 3572 3273 { 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 3274 $v_result=1; 3575 3275 3576 3276 // ----- Magic quotes trick … … 3589 3289 // ----- Look for the path end '/' 3590 3290 while (substr($p_path, -1) == "/") 3591 3291 { 3592 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Destination path [$p_path] ends by '/'");3593 3292 $p_path = substr($p_path, 0, strlen($p_path)-1); 3594 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Modified to [$p_path]");3595 3293 } 3596 3294 } 3597 3295 … … 3603 3301 $p_remove_path_size = strlen($p_remove_path); 3604 3302 3605 3303 // ----- Open the zip file 3606 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");3607 3304 if (($v_result = $this->privOpenFd('rb')) != 1) 3608 3305 { 3609 3306 $this->privSwapBackMagicQuotes(); 3610 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3611 3307 return $v_result; 3612 3308 } 3613 3309 … … 3619 3315 $this->privCloseFd(); 3620 3316 $this->privSwapBackMagicQuotes(); 3621 3317 3622 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3623 3318 return $v_result; 3624 3319 } 3625 3320 … … 3630 3325 $j_start = 0; 3631 3326 for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) 3632 3327 { 3633 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry : '$i'");3634 3328 3635 3329 // ----- Read next Central dir entry 3636 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position before rewind : ".ftell($this->zip_fd)."'");3637 3330 @rewind($this->zip_fd); 3638 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position after rewind : ".ftell($this->zip_fd)."'");3639 3331 if (@fseek($this->zip_fd, $v_pos_entry)) 3640 3332 { 3641 3333 // ----- Close the zip file … … 3646 3338 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); 3647 3339 3648 3340 // ----- Return 3649 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3650 3341 return PclZip::errorCode(); 3651 3342 } 3652 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position after fseek : ".ftell($this->zip_fd)."'");3653 3343 3654 3344 // ----- Read the file header 3655 3345 $v_header = array(); … … 3659 3349 $this->privCloseFd(); 3660 3350 $this->privSwapBackMagicQuotes(); 3661 3351 3662 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3663 3352 return $v_result; 3664 3353 } 3665 3354 … … 3675 3364 // ----- Look for extract by name rule 3676 3365 if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) 3677 3366 && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { 3678 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");3679 3367 3680 3368 // ----- Look if the filename is in the list 3681 3369 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 3370 3684 3371 // ----- Look for a directory 3685 3372 if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { 3686 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");3687 3373 3688 3374 // ----- Look if the directory is in the filename path 3689 3375 if ( (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) 3690 3376 && (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 3377 $v_extract = true; 3693 3378 } 3694 3379 } 3695 3380 // ----- Look for a filename 3696 3381 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 3382 $v_extract = true; 3699 3383 } 3700 3384 } 3701 3385 } 3702 3386 3703 3387 // ----- Look for extract by ereg rule 3388 // ereg() is deprecated with PHP 5.3 3389 /* 3704 3390 else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) 3705 3391 && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { 3706 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");3707 3392 3708 3393 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 3394 $v_extract = true; 3711 3395 } 3712 3396 } 3397 */ 3713 3398 3714 3399 // ----- Look for extract by preg rule 3715 3400 else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) 3716 3401 && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { 3717 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");3718 3402 3719 3403 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 3404 $v_extract = true; 3722 3405 } 3723 3406 } … … 3725 3408 // ----- Look for extract by index rule 3726 3409 else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) 3727 3410 && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { 3728 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'");3729 3411 3730 3412 // ----- Look if the index is in the list 3731 3413 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 3414 3734 3415 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 3416 $v_extract = true; 3737 3417 } 3738 3418 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 3419 $j_start = $j+1; 3741 3420 } 3742 3421 3743 3422 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 3423 break; 3746 3424 } 3747 3425 } … … 3749 3427 3750 3428 // ----- Look for no rule, which means extract all the archive 3751 3429 else { 3752 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with no rule (extract all)");3753 3430 $v_extract = true; 3754 3431 } 3755 3432 … … 3757 3434 if ( ($v_extract) 3758 3435 && ( ($v_header['compression'] != 8) 3759 3436 && ($v_header['compression'] != 0))) { 3760 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported compression method (".$v_header['compression'].")");3761 3437 $v_header['status'] = 'unsupported_compression'; 3762 3438 3763 3439 // ----- Look for PCLZIP_OPT_STOP_ON_ERROR 3764 3440 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 3765 3441 && ($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 3442 3768 3443 $this->privSwapBackMagicQuotes(); 3769 3444 … … 3772 3447 ."compressed by an unsupported compression " 3773 3448 ."method (".$v_header['compression'].") "); 3774 3449 3775 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3776 3450 return PclZip::errorCode(); 3777 3451 } 3778 3452 } 3779 3453 3780 3454 // ----- Check encrypted files 3781 3455 if (($v_extract) && (($v_header['flag'] & 1) == 1)) { 3782 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported file encryption");3783 3456 $v_header['status'] = 'unsupported_encryption'; 3784 3457 3785 3458 // ----- Look for PCLZIP_OPT_STOP_ON_ERROR 3786 3459 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 3787 3460 && ($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 3461 3790 3462 $this->privSwapBackMagicQuotes(); 3791 3463 … … 3794 3466 ." filename '".$v_header['stored_filename'] 3795 3467 ."'"); 3796 3468 3797 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3798 3469 return PclZip::errorCode(); 3799 3470 } 3800 3471 } 3801 3472 3802 3473 // ----- Look for real extraction 3803 3474 if (($v_extract) && ($v_header['status'] != 'ok')) { 3804 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "No need for extract");3805 3475 $v_result = $this->privConvertHeader2FileInfo($v_header, 3806 3476 $p_file_list[$v_nb_extracted++]); 3807 3477 if ($v_result != 1) { 3808 3478 $this->privCloseFd(); 3809 3479 $this->privSwapBackMagicQuotes(); 3810 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3811 3480 return $v_result; 3812 3481 } 3813 3482 … … 3817 3486 // ----- Look for real extraction 3818 3487 if ($v_extract) 3819 3488 { 3820 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file '".$v_header['filename']."', index '$i'");3821 3489 3822 3490 // ----- Go to the file position 3823 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");3824 3491 @rewind($this->zip_fd); 3825 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");3826 3492 if (@fseek($this->zip_fd, $v_header['offset'])) 3827 3493 { 3828 3494 // ----- Close the zip file … … 3834 3500 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); 3835 3501 3836 3502 // ----- Return 3837 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());3838 3503 return PclZip::errorCode(); 3839 3504 } 3840 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");3841 3505 3842 3506 // ----- Look for extraction as string 3843 3507 if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { … … 3847 3511 if ($v_result1 < 1) { 3848 3512 $this->privCloseFd(); 3849 3513 $this->privSwapBackMagicQuotes(); 3850 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);3851 3514 return $v_result1; 3852 3515 } 3853 3516 … … 3858 3521 $this->privCloseFd(); 3859 3522 $this->privSwapBackMagicQuotes(); 3860 3523 3861 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3862 3524 return $v_result; 3863 3525 } 3864 3526 … … 3881 3543 if ($v_result1 < 1) { 3882 3544 $this->privCloseFd(); 3883 3545 $this->privSwapBackMagicQuotes(); 3884 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);3885 3546 return $v_result1; 3886 3547 } 3887 3548 … … 3889 3550 if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { 3890 3551 $this->privCloseFd(); 3891 3552 $this->privSwapBackMagicQuotes(); 3892 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3893 3553 return $v_result; 3894 3554 } 3895 3555 … … 3908 3568 if ($v_result1 < 1) { 3909 3569 $this->privCloseFd(); 3910 3570 $this->privSwapBackMagicQuotes(); 3911 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);3912 3571 return $v_result1; 3913 3572 } 3914 3573 … … 3919 3578 $this->privCloseFd(); 3920 3579 $this->privSwapBackMagicQuotes(); 3921 3580 3922 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3923 3581 return $v_result; 3924 3582 } 3925 3583 … … 3936 3594 $this->privSwapBackMagicQuotes(); 3937 3595 3938 3596 // ----- Return 3939 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3940 3597 return $v_result; 3941 3598 } 3942 3599 // -------------------------------------------------------------------------------- … … 3952 3609 // -------------------------------------------------------------------------------- 3953 3610 function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) 3954 3611 { 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 3612 $v_result=1; 3957 3613 3958 3614 // ----- Read the file header 3959 3615 if (($v_result = $this->privReadFileHeader($v_header)) != 1) 3960 3616 { 3961 3617 // ----- Return 3962 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3963 3618 return $v_result; 3964 3619 } 3965 3620 3966 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");3967 3621 3968 3622 // ----- Check that the file header is coherent with $p_entry info 3969 3623 if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { … … 3974 3628 if ($p_remove_all_path == true) { 3975 3629 // ----- Look for folder entry that not need to be extracted 3976 3630 if (($p_entry['external']&0x00000010)==0x00000010) { 3977 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The entry is a folder : need to be filtered");3978 3631 3979 3632 $p_entry['status'] = "filtered"; 3980 3633 3981 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);3982 3634 return $v_result; 3983 3635 } 3984 3636 3985 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "All path is removed");3986 3637 // ----- Get the basename of the path 3987 3638 $p_entry['filename'] = basename($p_entry['filename']); 3988 3639 } … … 3990 3641 // ----- Look for path to remove 3991 3642 else if ($p_remove_path != "") 3992 3643 { 3993 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look for some path to remove");3994 3644 if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) 3995 3645 { 3996 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The folder is the same as the removed path '".$p_entry['filename']."'");3997 3646 3998 3647 // ----- Change the file status 3999 3648 $p_entry['status'] = "filtered"; 4000 3649 4001 3650 // ----- Return 4002 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4003 3651 return $v_result; 4004 3652 } 4005 3653 4006 3654 $p_remove_path_size = strlen($p_remove_path); 4007 3655 if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) 4008 3656 { 4009 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '".$p_entry['filename']."'");4010 3657 4011 3658 // ----- Remove the path 4012 3659 $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); 4013 3660 4014 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Resulting file is '".$p_entry['filename']."'");4015 3661 } 4016 3662 } 4017 3663 … … 4022 3668 4023 3669 // ----- Check a base_dir_restriction 4024 3670 if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { 4025 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Check the extract directory restriction");4026 3671 $v_inclusion 4027 3672 = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], 4028 3673 $p_entry['filename']); 4029 3674 if ($v_inclusion == 0) { 4030 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_EXTRACT_DIR_RESTRICTION is selected, file is outside restriction");4031 3675 4032 3676 PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, 4033 3677 "Filename '".$p_entry['filename']."' is " 4034 3678 ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); 4035 3679 4036 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4037 3680 return PclZip::errorCode(); 4038 3681 } 4039 3682 } 4040 3683 4041 3684 // ----- Look for pre-extract callback 4042 3685 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 3686 4045 3687 // ----- Generate a local information 4046 3688 $v_local_header = array(); … … 4058 3700 4059 3701 // ----- Look for abort result 4060 3702 if ($v_result == 2) { 4061 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");4062 3703 // ----- This status is internal and will be changed in 'skipped' 4063 3704 $p_entry['status'] = "aborted"; 4064 3705 $v_result = PCLZIP_ERR_USER_ABORTED; … … 4067 3708 // ----- Update the informations 4068 3709 // Only some fields can be modified 4069 3710 $p_entry['filename'] = $v_local_header['filename']; 4070 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'");4071 3711 } 4072 3712 4073 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'");4074 3713 4075 3714 // ----- Look if extraction should be done 4076 3715 if ($p_entry['status'] == 'ok') { … … 4078 3717 // ----- Look for specific actions while the file exist 4079 3718 if (file_exists($p_entry['filename'])) 4080 3719 { 4081 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_entry['filename']."' already exists");4082 3720 4083 3721 // ----- Look if file is a directory 4084 3722 if (is_dir($p_entry['filename'])) 4085 3723 { 4086 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is a directory");4087 3724 4088 3725 // ----- Change the file status 4089 3726 $p_entry['status'] = "already_a_directory"; … … 4093 3730 // when this kind of error occurs. 4094 3731 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 4095 3732 && ($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 3733 4098 3734 PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, 4099 3735 "Filename '".$p_entry['filename']."' is " 4100 3736 ."already used by an existing directory"); 4101 3737 4102 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4103 3738 return PclZip::errorCode(); 4104 3739 } 4105 3740 } 4106 3741 // ----- Look if file is write protected 4107 3742 else if (!is_writeable($p_entry['filename'])) 4108 3743 { 4109 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is write protected");4110 3744 4111 3745 // ----- Change the file status 4112 3746 $p_entry['status'] = "write_protected"; … … 4116 3750 // when this kind of error occurs. 4117 3751 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 4118 3752 && ($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 3753 4121 3754 PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 4122 3755 "Filename '".$p_entry['filename']."' exists " 4123 3756 ."and is write protected"); 4124 3757 4125 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4126 3758 return PclZip::errorCode(); 4127 3759 } 4128 3760 } … … 4130 3762 // ----- Look if the extracted file is older 4131 3763 else if (filemtime($p_entry['filename']) > $p_entry['mtime']) 4132 3764 { 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 3765 // ----- Change the file status 4135 3766 if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) 4136 3767 && ($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 3768 } 4139 3769 else { 4140 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be replaced");4141 3770 $p_entry['status'] = "newer_exist"; 4142 3771 4143 3772 // ----- Look for PCLZIP_OPT_STOP_ON_ERROR … … 4145 3774 // when this kind of error occurs. 4146 3775 if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) 4147 3776 && ($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 3777 4150 3778 PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 4151 3779 "Newer version of '".$p_entry['filename']."' exists " 4152 3780 ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); 4153 3781 4154 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4155 3782 return PclZip::errorCode(); 4156 3783 } 4157 3784 } 4158 3785 } 4159 3786 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 3787 } 4162 3788 } 4163 3789 … … 4171 3797 $v_dir_to_check = dirname($p_entry['filename']); 4172 3798 4173 3799 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 3800 4176 3801 // ----- Change the file status 4177 3802 $p_entry['status'] = "path_creation_fail"; 4178 3803 4179 3804 // ----- Return 4180 ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4181 3805 //return $v_result; 4182 3806 $v_result = 1; 4183 3807 } … … 4192 3816 { 4193 3817 // ----- Look for not compressed file 4194 3818 if ($p_entry['compression'] == 0) { 4195 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");4196 3819 4197 3820 // ----- Opening destination file 4198 3821 if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) 4199 3822 { 4200 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");4201 3823 4202 3824 // ----- Change the file status 4203 3825 $p_entry['status'] = "write_error"; 4204 3826 4205 3827 // ----- Return 4206 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4207 3828 return $v_result; 4208 3829 } 4209 3830 4210 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read '".$p_entry['size']."' bytes");4211 3831 4212 3832 // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks 4213 3833 $v_size = $p_entry['compressed_size']; 4214 3834 while ($v_size != 0) 4215 3835 { 4216 3836 $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 3837 $v_buffer = @fread($this->zip_fd, $v_read_size); 4219 3838 /* Try to speed up the code 4220 3839 $v_binary_data = pack('a'.$v_read_size, $v_buffer); … … 4233 3852 4234 3853 } 4235 3854 else { 4236 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (Compression method ".$p_entry['compression'].")");4237 3855 // ----- TBC 4238 3856 // Need to be finished 4239 3857 if (($p_entry['flag'] & 1) == 1) { 4240 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File is encrypted");4241 3858 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 3859 return PclZip::errorCode(); 4244 3860 } 4245 3861 … … 4258 3874 // ----- Look for extract in memory 4259 3875 else { 4260 3876 4261 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read '".$p_entry['compressed_size']."' compressed bytes");4262 3877 4263 3878 // ----- Read the compressed file in a buffer (one shot) 4264 3879 $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); … … 4267 3882 $v_file_content = @gzinflate($v_buffer); 4268 3883 unset($v_buffer); 4269 3884 if ($v_file_content === FALSE) { 4270 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to inflate compressed file");4271 3885 4272 3886 // ----- Change the file status 4273 3887 // TBC 4274 3888 $p_entry['status'] = "error"; 4275 3889 4276 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4277 3890 return $v_result; 4278 3891 } 4279 3892 4280 3893 // ----- Opening destination file 4281 3894 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 3895 4284 3896 // ----- Change the file status 4285 3897 $p_entry['status'] = "write_error"; 4286 3898 4287 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4288 3899 return $v_result; 4289 3900 } 4290 3901 … … 4303 3914 4304 3915 // ----- Look for chmod option 4305 3916 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 3917 4308 3918 // ----- Change the mode of the file 4309 3919 @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); 4310 3920 } 4311 3921 4312 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");4313 3922 } 4314 3923 } 4315 3924 … … 4320 3929 4321 3930 // ----- Look for post-extract callback 4322 3931 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 3932 4325 3933 // ----- Generate a local information 4326 3934 $v_local_header = array(); … … 4333 3941 4334 3942 // ----- Look for abort result 4335 3943 if ($v_result == 2) { 4336 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");4337 3944 $v_result = PCLZIP_ERR_USER_ABORTED; 4338 3945 } 4339 3946 } 4340 3947 4341 3948 // ----- Return 4342 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4343 3949 return $v_result; 4344 3950 } 4345 3951 // -------------------------------------------------------------------------------- … … 4352 3958 // -------------------------------------------------------------------------------- 4353 3959 function privExtractFileUsingTempFile(&$p_entry, &$p_options) 4354 3960 { 4355 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileUsingTempFile', "filename='".$p_entry['filename']."'");4356 3961 $v_result=1; 4357 3962 4358 3963 // ----- Creates a temporary file … … 4360 3965 if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { 4361 3966 fclose($v_file); 4362 3967 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 3968 return PclZip::errorCode(); 4365 3969 } 4366 3970 4367 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Start extraction of '".$p_entry['filename']."'");4368 3971 4369 3972 // ----- Write gz file format header 4370 3973 $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); … … 4372 3975 4373 3976 // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks 4374 3977 $v_size = $p_entry['compressed_size']; 4375 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Compressed Size :".$v_size."");4376 3978 while ($v_size != 0) 4377 3979 { 4378 3980 $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 3981 $v_buffer = @fread($this->zip_fd, $v_read_size); 4381 3982 //$v_binary_data = pack('a'.$v_read_size, $v_buffer); 4382 3983 @fwrite($v_dest_file, $v_buffer, $v_read_size); … … 4392 3993 4393 3994 // ----- Opening destination file 4394 3995 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 3996 $p_entry['status'] = "write_error"; 4397 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4398 3997 return $v_result; 4399 3998 } 4400 3999 … … 4403 4002 @fclose($v_dest_file); 4404 4003 $p_entry['status'] = "read_error"; 4405 4004 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 4005 return PclZip::errorCode(); 4408 4006 } 4409 4007 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 4008 4413 4009 // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks 4414 4010 $v_size = $p_entry['size']; 4415 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size :".$v_size."");4416 4011 while ($v_size != 0) { 4417 4012 $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 4013 $v_buffer = @gzread($v_src_file, $v_read_size); 4420 4014 //$v_binary_data = pack('a'.$v_read_size, $v_buffer); 4421 4015 @fwrite($v_dest_file, $v_buffer, $v_read_size); … … 4428 4022 @unlink($v_gzip_temp_name); 4429 4023 4430 4024 // ----- Return 4431 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4432 4025 return $v_result; 4433 4026 } 4434 4027 // -------------------------------------------------------------------------------- … … 4441 4034 // -------------------------------------------------------------------------------- 4442 4035 function privExtractFileInOutput(&$p_entry, &$p_options) 4443 4036 { 4444 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileInOutput', "");4445 4037 $v_result=1; 4446 4038 4447 4039 // ----- Read the file header 4448 4040 if (($v_result = $this->privReadFileHeader($v_header)) != 1) { 4449 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4450 4041 return $v_result; 4451 4042 } 4452 4043 4453 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");4454 4044 4455 4045 // ----- Check that the file header is coherent with $p_entry info 4456 4046 if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { … … 4459 4049 4460 4050 // ----- Look for pre-extract callback 4461 4051 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 4052 4464 4053 // ----- Generate a local information 4465 4054 $v_local_header = array(); … … 4477 4066 4478 4067 // ----- Look for abort result 4479 4068 if ($v_result == 2) { 4480 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");4481 4069 // ----- This status is internal and will be changed in 'skipped' 4482 4070 $p_entry['status'] = "aborted"; 4483 4071 $v_result = PCLZIP_ERR_USER_ABORTED; … … 4486 4074 // ----- Update the informations 4487 4075 // Only some fields can be modified 4488 4076 $p_entry['filename'] = $v_local_header['filename']; 4489 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'");4490 4077 } 4491 4078 4492 4079 // ----- Trace 4493 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'");4494 4080 4495 4081 // ----- Look if extraction should be done 4496 4082 if ($p_entry['status'] == 'ok') { … … 4499 4085 if (!(($p_entry['external']&0x00000010)==0x00000010)) { 4500 4086 // ----- Look for not compressed file 4501 4087 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 4088 4505 4089 // ----- Read the file in a buffer (one shot) 4506 4090 $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); … … 4510 4094 unset($v_buffer); 4511 4095 } 4512 4096 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 4097 4516 4098 // ----- Read the compressed file in a buffer (one shot) 4517 4099 $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); … … 4524 4106 echo $v_file_content; 4525 4107 unset($v_file_content); 4526 4108 } 4527 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");4528 4109 } 4529 4110 } 4530 4111 … … 4535 4116 4536 4117 // ----- Look for post-extract callback 4537 4118 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 4119 4540 4120 // ----- Generate a local information 4541 4121 $v_local_header = array(); … … 4548 4128 4549 4129 // ----- Look for abort result 4550 4130 if ($v_result == 2) { 4551 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");4552 4131 $v_result = PCLZIP_ERR_USER_ABORTED; 4553 4132 } 4554 4133 } 4555 4134 4556 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4557 4135 return $v_result; 4558 4136 } 4559 4137 // -------------------------------------------------------------------------------- … … 4566 4144 // -------------------------------------------------------------------------------- 4567 4145 function privExtractFileAsString(&$p_entry, &$p_string) 4568 4146 { 4569 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileAsString', "p_entry['filename']='".$p_entry['filename']."'");4570 4147 $v_result=1; 4571 4148 4572 4149 // ----- Read the file header … … 4574 4151 if (($v_result = $this->privReadFileHeader($v_header)) != 1) 4575 4152 { 4576 4153 // ----- Return 4577 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4578 4154 return $v_result; 4579 4155 } 4580 4156 4581 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");4582 4157 4583 4158 // ----- Check that the file header is coherent with $p_entry info 4584 4159 if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { 4585 4160 // TBC 4586 4161 } 4587 4162 4588 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file in string (with path) '".$p_entry['filename']."', size '$v_header[size]'");4589 4163 4590 4164 // ----- Do the extraction (if not a folder) 4591 4165 if (!(($p_entry['external']&0x00000010)==0x00000010)) … … 4593 4167 // ----- Look for not compressed file 4594 4168 // if ($p_entry['compressed_size'] == $p_entry['size']) 4595 4169 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 4170 4599 4171 // ----- Reading the file 4600 4172 $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); 4601 4173 } 4602 4174 else { 4603 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (compression method '".$p_entry['compression']."')");4604 4175 4605 4176 // ----- Reading the file 4606 4177 $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); … … 4612 4183 } 4613 4184 4614 4185 // ----- Trace 4615 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");4616 4186 } 4617 4187 else { 4618 4188 // TBC : error : can not extract a folder in a string 4619 4189 } 4620 4190 4621 4191 // ----- Return 4622 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4623 4192 return $v_result; 4624 4193 } 4625 4194 // -------------------------------------------------------------------------------- … … 4632 4201 // -------------------------------------------------------------------------------- 4633 4202 function privReadFileHeader(&$p_header) 4634 4203 { 4635 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadFileHeader", "");4636 4204 $v_result=1; 4637 4205 4638 4206 // ----- Read the 4 bytes signature 4639 4207 $v_binary_data = @fread($this->zip_fd, 4); 4640 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");4641 4208 $v_data = unpack('Vid', $v_binary_data); 4642 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");4643 4209 4644 4210 // ----- Check signature 4645 4211 if ($v_data['id'] != 0x04034b50) 4646 4212 { 4647 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid File header");4648 4213 4649 4214 // ----- Error log 4650 4215 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); 4651 4216 4652 4217 // ----- Return 4653 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4654 4218 return PclZip::errorCode(); 4655 4219 } 4656 4220 … … 4662 4226 { 4663 4227 $p_header['filename'] = ""; 4664 4228 $p_header['status'] = "invalid_header"; 4665 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));4666 4229 4667 4230 // ----- Error log 4668 4231 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); 4669 4232 4670 4233 // ----- Return 4671 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4672 4234 return PclZip::errorCode(); 4673 4235 } 4674 4236 4675 4237 // ----- 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 4238 $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); 4679 4239 4680 4240 // ----- Get filename 4681 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "File name length : ".$v_data['filename_len']);4682 4241 $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); 4683 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename : \''.$p_header['filename'].'\'');4684 4242 4685 4243 // ----- Get extra_fields 4686 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extra field length : ".$v_data['extra_len']);4687 4244 if ($v_data['extra_len'] != 0) { 4688 4245 $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); 4689 4246 } 4690 4247 else { 4691 4248 $p_header['extra'] = ''; 4692 4249 } 4693 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Extra field : \''.bin2hex($p_header['extra']).'\'');4694 4250 4695 4251 // ----- Extract properties 4696 4252 $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 4253 $p_header['compression'] = $v_data['compression']; 4699 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compression method : \''.$p_header['compression'].'\'');4700 4254 $p_header['size'] = $v_data['size']; 4701 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_header['size'].'\'');4702 4255 $p_header['compressed_size'] = $v_data['compressed_size']; 4703 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_header['compressed_size'].'\'');4704 4256 $p_header['crc'] = $v_data['crc']; 4705 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\'');4706 4257 $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 4258 $p_header['filename_len'] = $v_data['filename_len']; 4711 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename_len : \''.$p_header['filename_len'].'\'');4712 4259 4713 4260 // ----- Recuperate date in UNIX format 4714 4261 $p_header['mdate'] = $v_data['mdate']; … … 4728 4275 // ----- Get UNIX date format 4729 4276 $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); 4730 4277 4731 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');4732 4278 } 4733 4279 else 4734 4280 { 4735 4281 $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 4282 } 4738 4283 4739 4284 // TBC 4740 4285 //for(reset($v_data); $key = key($v_data); next($v_data)) { 4741 // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Attribut[$key] = ".$v_data[$key]);4742 4286 //} 4743 4287 4744 4288 // ----- Set the stored filename … … 4748 4292 $p_header['status'] = "ok"; 4749 4293 4750 4294 // ----- Return 4751 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4752 4295 return $v_result; 4753 4296 } 4754 4297 // -------------------------------------------------------------------------------- … … 4761 4304 // -------------------------------------------------------------------------------- 4762 4305 function privReadCentralFileHeader(&$p_header) 4763 4306 { 4764 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadCentralFileHeader", "");4765 4307 $v_result=1; 4766 4308 4767 4309 // ----- Read the 4 bytes signature 4768 4310 $v_binary_data = @fread($this->zip_fd, 4); 4769 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");4770 4311 $v_data = unpack('Vid', $v_binary_data); 4771 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");4772 4312 4773 4313 // ----- Check signature 4774 4314 if ($v_data['id'] != 0x02014b50) 4775 4315 { 4776 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid Central Dir File signature");4777 4316 4778 4317 // ----- Error log 4779 4318 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); 4780 4319 4781 4320 // ----- Return 4782 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4783 4321 return PclZip::errorCode(); 4784 4322 } 4785 4323 … … 4791 4329 { 4792 4330 $p_header['filename'] = ""; 4793 4331 $p_header['status'] = "invalid_header"; 4794 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));4795 4332 4796 4333 // ----- Error log 4797 4334 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); 4798 4335 4799 4336 // ----- Return 4800 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4801 4337 return PclZip::errorCode(); 4802 4338 } 4803 4339 4804 4340 // ----- 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 4341 $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 4342 4809 4343 // ----- Get filename 4810 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File name length : ".$p_header['filename_len']);4811 4344 if ($p_header['filename_len'] != 0) 4812 4345 $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); 4813 4346 else 4814 4347 $p_header['filename'] = ''; 4815 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Filename : \''.$p_header['filename'].'\'');4816 4348 4817 4349 // ----- Get extra 4818 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Extra length : ".$p_header['extra_len']);4819 4350 if ($p_header['extra_len'] != 0) 4820 4351 $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); 4821 4352 else 4822 4353 $p_header['extra'] = ''; 4823 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Extra : \''.$p_header['extra'].'\'');4824 4354 4825 4355 // ----- Get comment 4826 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Comment length : ".$p_header['comment_len']);4827 4356 if ($p_header['comment_len'] != 0) 4828 4357 $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); 4829 4358 else 4830 4359 $p_header['comment'] = ''; 4831 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Comment : \''.$p_header['comment'].'\'');4832 4360 4833 4361 // ----- 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 4362 4842 4363 // ----- Recuperate date in UNIX format 4843 4364 //if ($p_header['mdate'] && $p_header['mtime']) … … 4857 4378 // ----- Get UNIX date format 4858 4379 $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); 4859 4380 4860 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');4861 4381 } 4862 4382 else 4863 4383 { 4864 4384 $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 4385 } 4867 4386 4868 4387 // ----- Set the stored filename … … 4872 4391 $p_header['status'] = 'ok'; 4873 4392 4874 4393 // ----- 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 4394 if (substr($p_header['filename'], -1) == '/') { 4878 4395 //$p_header['external'] = 0x41FF0010; 4879 4396 $p_header['external'] = 0x00000010; 4880 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Force folder external : \''.sprintf("Ox%04X", $p_header['external']).'\'');4881 4397 } 4882 4398 4883 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Header of filename : \''.$p_header['filename'].'\'');4884 4399 4885 4400 // ----- Return 4886 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4887 4401 return $v_result; 4888 4402 } 4889 4403 // -------------------------------------------------------------------------------- … … 4898 4412 // -------------------------------------------------------------------------------- 4899 4413 function privCheckFileHeaders(&$p_local_header, &$p_central_header) 4900 4414 { 4901 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFileHeaders", "");4902 4415 $v_result=1; 4903 4416 4904 4417 // ----- Check the static values 4905 4418 // TBC 4906 4419 if ($p_local_header['filename'] != $p_central_header['filename']) { 4907 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename" : TBC To Be Completed');4908 4420 } 4909 4421 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 4422 } 4912 4423 if ($p_local_header['flag'] != $p_central_header['flag']) { 4913 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "flag" : TBC To Be Completed');4914 4424 } 4915 4425 if ($p_local_header['compression'] != $p_central_header['compression']) { 4916 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "compression" : TBC To Be Completed');4917 4426 } 4918 4427 if ($p_local_header['mtime'] != $p_central_header['mtime']) { 4919 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "mtime" : TBC To Be Completed');4920 4428 } 4921 4429 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 4430 } 4924 4431 4925 4432 // ----- Look for flag bit 3 4926 4433 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 4434 $p_local_header['size'] = $p_central_header['size']; 4930 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_local_header['size'].'\'');4931 4435 $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 4436 $p_local_header['crc'] = $p_central_header['crc']; 4934 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_local_header['crc']).'\'');4935 4437 } 4936 4438 4937 4439 // ----- Return 4938 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);4939 4440 return $v_result; 4940 4441 } 4941 4442 // -------------------------------------------------------------------------------- … … 4948 4449 // -------------------------------------------------------------------------------- 4949 4450 function privReadEndCentralDir(&$p_central_dir) 4950 4451 { 4951 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadEndCentralDir", "");4952 4452 $v_result=1; 4953 4453 4954 4454 // ----- Go to the end of the zip file 4955 4455 $v_size = filesize($this->zipname); 4956 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size of the file :$v_size");4957 4456 @fseek($this->zip_fd, $v_size); 4958 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position at end of zip file : \''.ftell($this->zip_fd).'\'');4959 4457 if (@ftell($this->zip_fd) != $v_size) 4960 4458 { 4961 4459 // ----- Error log 4962 4460 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); 4963 4461 4964 4462 // ----- Return 4965 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4966 4463 return PclZip::errorCode(); 4967 4464 } 4968 4465 … … 4970 4467 // in this case the end of central dir is at 22 bytes of the file end 4971 4468 $v_found = 0; 4972 4469 if ($v_size > 26) { 4973 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Look for central dir with no comment');4974 4470 @fseek($this->zip_fd, $v_size-22); 4975 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after min central position : \''.ftell($this->zip_fd).'\'');4976 4471 if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) 4977 4472 { 4978 4473 // ----- Error log 4979 4474 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); 4980 4475 4981 4476 // ----- Return 4982 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());4983 4477 return PclZip::errorCode(); 4984 4478 } 4985 4479 4986 4480 // ----- Read for bytes 4987 4481 $v_binary_data = @fread($this->zip_fd, 4); 4988 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");4989 4482 $v_data = @unpack('Vid', $v_binary_data); 4990 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");4991 4483 4992 4484 // ----- Check signature 4993 4485 if ($v_data['id'] == 0x06054b50) { 4994 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found central dir at the default position.");4995 4486 $v_found = 1; 4996 4487 } 4997 4488 … … 5000 4491 5001 4492 // ----- Go back to the maximum possible size of the Central Dir End Record 5002 4493 if (!$v_found) { 5003 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Start extended search of end central dir');5004 4494 $v_maximum_size = 65557; // 0xFFFF + 22; 5005 4495 if ($v_maximum_size > $v_size) 5006 4496 $v_maximum_size = $v_size; … … 5011 4501 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); 5012 4502 5013 4503 // ----- Return 5014 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5015 4504 return PclZip::errorCode(); 5016 4505 } 5017 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after max central position : \''.ftell($this->zip_fd).'\'');5018 4506 5019 4507 // ----- Read byte per byte in order to find the signature 5020 4508 $v_pos = ftell($this->zip_fd); … … 5033 4521 // ----- Compare the bytes 5034 4522 if ($v_bytes == 0x504b0506) 5035 4523 { 5036 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Found End Central Dir signature at position : \''.ftell($this->zip_fd).'\'');5037 4524 $v_pos++; 5038 4525 break; 5039 4526 } … … 5044 4531 // ----- Look if not found end of central dir 5045 4532 if ($v_pos == $v_size) 5046 4533 { 5047 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to find End of Central Dir Record signature");5048 4534 5049 4535 // ----- Error log 5050 4536 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); 5051 4537 5052 4538 // ----- Return 5053 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5054 4539 return PclZip::errorCode(); 5055 4540 } 5056 4541 } … … 5061 4546 // ----- Look for invalid block size 5062 4547 if (strlen($v_binary_data) != 18) 5063 4548 { 5064 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));5065 4549 5066 4550 // ----- Error log 5067 4551 PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); 5068 4552 5069 4553 // ----- Return 5070 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5071 4554 return PclZip::errorCode(); 5072 4555 } 5073 4556 5074 4557 // ----- 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 4558 $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); 5078 4559 5079 4560 // ----- Check the global size 5080 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Comment length : ".$v_data['comment_size']);5081 4561 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 4562 5084 4563 // ----- Removed in release 2.2 see readme file 5085 4564 // The check of the file size is a little too strict. … … 5092 4571 .' Some trailing bytes exists after the archive.'); 5093 4572 5094 4573 // ----- Return 5095 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5096 4574 return PclZip::errorCode(); 5097 4575 } 5098 4576 } 5099 4577 5100 4578 // ----- Get comment 5101 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$v_data['comment_size'].'\'');5102 4579 if ($v_data['comment_size'] != 0) { 5103 4580 $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); 5104 4581 } 5105 4582 else 5106 4583 $p_central_dir['comment'] = ''; 5107 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\'');5108 4584 5109 4585 $p_central_dir['entries'] = $v_data['entries']; 5110 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries : \''.$p_central_dir['entries'].'\'');5111 4586 $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 4587 $p_central_dir['offset'] = $v_data['offset']; 5114 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Offset of Central Dir : \''.$p_central_dir['offset'].'\'');5115 4588 $p_central_dir['size'] = $v_data['size']; 5116 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size of Central Dir : \''.$p_central_dir['size'].'\'');5117 4589 $p_central_dir['disk'] = $v_data['disk']; 5118 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Disk number : \''.$p_central_dir['disk'].'\'');5119 4590 $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 4591 5122 4592 // TBC 5123 4593 //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 4594 //} 5126 4595 5127 4596 // ----- Return 5128 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5129 4597 return $v_result; 5130 4598 } 5131 4599 // -------------------------------------------------------------------------------- … … 5138 4606 // -------------------------------------------------------------------------------- 5139 4607 function privDeleteByRule(&$p_result_list, &$p_options) 5140 4608 { 5141 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDeleteByRule", "");5142 4609 $v_result=1; 5143 4610 $v_list_detail = array(); 5144 4611 5145 4612 // ----- Open the zip file 5146 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5147 4613 if (($v_result=$this->privOpenFd('rb')) != 1) 5148 4614 { 5149 4615 // ----- Return 5150 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5151 4616 return $v_result; 5152 4617 } 5153 4618 … … 5156 4621 if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) 5157 4622 { 5158 4623 $this->privCloseFd(); 5159 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5160 4624 return $v_result; 5161 4625 } 5162 4626 5163 4627 // ----- Go to beginning of File 5164 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");5165 4628 @rewind($this->zip_fd); 5166 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");5167 4629 5168 4630 // ----- Scan all the files 5169 4631 // ----- Start at beginning of Central Dir 5170 4632 $v_pos_entry = $v_central_dir['offset']; 5171 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");5172 4633 @rewind($this->zip_fd); 5173 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");5174 4634 if (@fseek($this->zip_fd, $v_pos_entry)) 5175 4635 { 5176 4636 // ----- Close the zip file … … 5180 4640 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); 5181 4641 5182 4642 // ----- Return 5183 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5184 4643 return PclZip::errorCode(); 5185 4644 } 5186 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");5187 4645 5188 4646 // ----- Read each entry 5189 4647 $v_header_list = array(); 5190 4648 $j_start = 0; 5191 4649 for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) 5192 4650 { 5193 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry (index '$i')");5194 4651 5195 4652 // ----- Read the file header 5196 4653 $v_header_list[$v_nb_extracted] = array(); … … 5199 4656 // ----- Close the zip file 5200 4657 $this->privCloseFd(); 5201 4658 5202 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5203 4659 return $v_result; 5204 4660 } 5205 4661 5206 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename (index '$i') : '".$v_header_list[$v_nb_extracted]['stored_filename']."'");5207 4662 5208 4663 // ----- Store the index 5209 4664 $v_header_list[$v_nb_extracted]['index'] = $i; … … 5214 4669 // ----- Look for extract by name rule 5215 4670 if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) 5216 4671 && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { 5217 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");5218 4672 5219 4673 // ----- Look if the filename is in the list 5220 4674 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 4675 5223 4676 // ----- Look for a directory 5224 4677 if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { 5225 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");5226 4678 5227 4679 // ----- Look if the directory is in the filename path 5228 4680 if ( (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) 5229 4681 && (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 4682 $v_found = true; 5232 4683 } 5233 4684 elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ 5234 4685 && ($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 4686 $v_found = true; 5237 4687 } 5238 4688 } 5239 4689 // ----- Look for a filename 5240 4690 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 4691 $v_found = true; 5243 4692 } 5244 4693 } 5245 4694 } 5246 4695 5247 4696 // ----- Look for extract by ereg rule 4697 // ereg() is deprecated with PHP 5.3 4698 /* 5248 4699 else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) 5249 4700 && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { 5250 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");5251 4701 5252 4702 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 4703 $v_found = true; 5255 4704 } 5256 4705 } 4706 */ 5257 4707 5258 4708 // ----- Look for extract by preg rule 5259 4709 else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) 5260 4710 && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { 5261 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");5262 4711 5263 4712 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 4713 $v_found = true; 5266 4714 } 5267 4715 } … … 5269 4717 // ----- Look for extract by index rule 5270 4718 else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) 5271 4719 && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { 5272 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'");5273 4720 5274 4721 // ----- Look if the index is in the list 5275 4722 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 4723 5278 4724 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 4725 $v_found = true; 5281 4726 } 5282 4727 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 4728 $j_start = $j+1; 5285 4729 } 5286 4730 5287 4731 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 4732 break; 5290 4733 } 5291 4734 } 5292 4735 } 5293 4736 else { 5294 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "No argument mean remove all file");5295 4737 $v_found = true; 5296 4738 } 5297 4739 5298 4740 // ----- Look for deletion 5299 4741 if ($v_found) 5300 4742 { 5301 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' need to be deleted");5302 4743 unset($v_header_list[$v_nb_extracted]); 5303 4744 } 5304 4745 else 5305 4746 { 5306 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' will not be deleted");5307 4747 $v_nb_extracted++; 5308 4748 } 5309 4749 } … … 5318 4758 $v_temp_zip = new PclZip($v_zip_temp_name); 5319 4759 5320 4760 // ----- Open the temporary zip file in write mode 5321 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary write mode");5322 4761 if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { 5323 4762 $this->privCloseFd(); 5324 4763 5325 4764 // ----- Return 5326 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5327 4765 return $v_result; 5328 4766 } 5329 4767 5330 4768 // ----- Look which file need to be kept 5331 4769 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 4770 5334 4771 // ----- 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 4772 @rewind($this->zip_fd); 5338 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");5339 4773 if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { 5340 4774 // ----- Close the zip file 5341 4775 $this->privCloseFd(); … … 5346 4780 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); 5347 4781 5348 4782 // ----- Return 5349 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5350 4783 return PclZip::errorCode(); 5351 4784 } 5352 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");5353 4785 5354 4786 // ----- Read the file header 5355 4787 $v_local_header = array(); … … 5360 4792 @unlink($v_zip_temp_name); 5361 4793 5362 4794 // ----- Return 5363 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5364 4795 return $v_result; 5365 4796 } 5366 4797 … … 5379 4810 @unlink($v_zip_temp_name); 5380 4811 5381 4812 // ----- Return 5382 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5383 4813 return $v_result; 5384 4814 } 5385 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset for this file is '".$v_header_list[$i]['offset']."'");5386 4815 5387 4816 // ----- Read/write the data block 5388 4817 if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { … … 5392 4821 @unlink($v_zip_temp_name); 5393 4822 5394 4823 // ----- Return 5395 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5396 4824 return $v_result; 5397 4825 } 5398 4826 } 5399 4827 5400 4828 // ----- Store the offset of the central dir 5401 4829 $v_offset = @ftell($v_temp_zip->zip_fd); 5402 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "New offset of central dir : $v_offset");5403 4830 5404 4831 // ----- Re-Create the Central Dir files header 5405 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the new central directory");5406 4832 for ($i=0; $i<sizeof($v_header_list); $i++) { 5407 4833 // ----- Create the file header 5408 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset of file : ".$v_header_list[$i]['offset']);5409 4834 if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) { 5410 4835 $v_temp_zip->privCloseFd(); 5411 4836 $this->privCloseFd(); 5412 4837 @unlink($v_zip_temp_name); 5413 4838 5414 4839 // ----- Return 5415 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5416 4840 return $v_result; 5417 4841 } 5418 4842 … … 5420 4844 $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); 5421 4845 } 5422 4846 5423 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the central directory footer");5424 4847 5425 4848 // ----- Zip file comment 5426 4849 $v_comment = ''; … … 5440 4863 @unlink($v_zip_temp_name); 5441 4864 5442 4865 // ----- Return 5443 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5444 4866 return $v_result; 5445 4867 } 5446 4868 … … 5466 4888 $this->privCloseFd(); 5467 4889 5468 4890 if (($v_result = $this->privOpenFd('wb')) != 1) { 5469 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5470 4891 return $v_result; 5471 4892 } 5472 4893 5473 4894 if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { 5474 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5475 4895 return $v_result; 5476 4896 } 5477 4897 … … 5479 4899 } 5480 4900 5481 4901 // ----- Return 5482 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5483 4902 return $v_result; 5484 4903 } 5485 4904 // -------------------------------------------------------------------------------- … … 5499 4918 { 5500 4919 $v_result = 1; 5501 4920 5502 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDirCheck", "entry='$p_dir', is_dir='".($p_is_dir?"true":"false")."'");5503 4921 5504 4922 // ----- Remove the final '/' 5505 4923 if (($p_is_dir) && (substr($p_dir, -1)=='/')) 5506 4924 { 5507 4925 $p_dir = substr($p_dir, 0, strlen($p_dir)-1); 5508 4926 } 5509 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for entry '$p_dir'");5510 4927 5511 4928 // ----- Check the directory availability 5512 4929 if ((is_dir($p_dir)) || ($p_dir == "")) 5513 4930 { 5514 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, "'$p_dir' is a directory");5515 4931 return 1; 5516 4932 } 5517 4933 5518 4934 // ----- Extract parent directory 5519 4935 $p_parent_dir = dirname($p_dir); 5520 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Parent directory is '$p_parent_dir'");5521 4936 5522 4937 // ----- Just a check 5523 4938 if ($p_parent_dir != $p_dir) … … 5527 4942 { 5528 4943 if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) 5529 4944 { 5530 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5531 4945 return $v_result; 5532 4946 } 5533 4947 } 5534 4948 } 5535 4949 5536 4950 // ----- Create the directory 5537 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Create directory '$p_dir'");5538 4951 if (!@mkdir($p_dir, 0777)) 5539 4952 { 5540 4953 // ----- Error log 5541 4954 PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); 5542 4955 5543 4956 // ----- Return 5544 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5545 4957 return PclZip::errorCode(); 5546 4958 } 5547 4959 5548 4960 // ----- Return 5549 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result, "Directory '$p_dir' created");5550 4961 return $v_result; 5551 4962 } 5552 4963 // -------------------------------------------------------------------------------- … … 5560 4971 // -------------------------------------------------------------------------------- 5561 4972 function privMerge(&$p_archive_to_add) 5562 4973 { 5563 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privMerge", "archive='".$p_archive_to_add->zipname."'");5564 4974 $v_result=1; 5565 4975 5566 4976 // ----- Look if the archive_to_add exists 5567 4977 if (!is_file($p_archive_to_add->zipname)) 5568 4978 { 5569 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to add does not exist. End of merge.");5570 4979 5571 4980 // ----- Nothing to merge, so merge is a success 5572 4981 $v_result = 1; 5573 4982 5574 4983 // ----- Return 5575 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5576 4984 return $v_result; 5577 4985 } 5578 4986 5579 4987 // ----- Look if the archive exists 5580 4988 if (!is_file($this->zipname)) 5581 4989 { 5582 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, duplicate the archive_to_add.");5583 4990 5584 4991 // ----- Do a duplicate 5585 4992 $v_result = $this->privDuplicate($p_archive_to_add->zipname); 5586 4993 5587 4994 // ----- Return 5588 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5589 4995 return $v_result; 5590 4996 } 5591 4997 5592 4998 // ----- Open the zip file 5593 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5594 4999 if (($v_result=$this->privOpenFd('rb')) != 1) 5595 5000 { 5596 5001 // ----- Return 5597 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5598 5002 return $v_result; 5599 5003 } 5600 5004 … … 5603 5007 if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) 5604 5008 { 5605 5009 $this->privCloseFd(); 5606 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5607 5010 return $v_result; 5608 5011 } 5609 5012 5610 5013 // ----- Go to beginning of File 5611 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");5612 5014 @rewind($this->zip_fd); 5613 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");5614 5015 5615 5016 // ----- Open the archive_to_add file 5616 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open archive_to_add in binary read mode");5617 5017 if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) 5618 5018 { 5619 5019 $this->privCloseFd(); 5620 5020 5621 5021 // ----- Return 5622 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5623 5022 return $v_result; 5624 5023 } 5625 5024 … … 5630 5029 $this->privCloseFd(); 5631 5030 $p_archive_to_add->privCloseFd(); 5632 5031 5633 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5634 5032 return $v_result; 5635 5033 } 5636 5034 5637 5035 // ----- 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 5036 @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 5037 5642 5038 // ----- Creates a temporay file 5643 5039 $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; 5644 5040 5645 5041 // ----- Open the temporary file in write mode 5646 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5647 5042 if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) 5648 5043 { 5649 5044 $this->privCloseFd(); … … 5652 5047 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); 5653 5048 5654 5049 // ----- Return 5655 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5656 5050 return PclZip::errorCode(); 5657 5051 } 5658 5052 … … 5662 5056 while ($v_size != 0) 5663 5057 { 5664 5058 $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 5059 $v_buffer = fread($this->zip_fd, $v_read_size); 5667 5060 @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); 5668 5061 $v_size -= $v_read_size; … … 5673 5066 while ($v_size != 0) 5674 5067 { 5675 5068 $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 5069 $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); 5678 5070 @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); 5679 5071 $v_size -= $v_read_size; … … 5681 5073 5682 5074 // ----- Store the offset of the central dir 5683 5075 $v_offset = @ftell($v_zip_temp_fd); 5684 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");5685 5076 5686 5077 // ----- Copy the block of file headers from the old archive 5687 5078 $v_size = $v_central_dir['size']; 5688 5079 while ($v_size != 0) 5689 5080 { 5690 5081 $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 5082 $v_buffer = @fread($this->zip_fd, $v_read_size); 5693 5083 @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); 5694 5084 $v_size -= $v_read_size; … … 5699 5089 while ($v_size != 0) 5700 5090 { 5701 5091 $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 5092 $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); 5704 5093 @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); 5705 5094 $v_size -= $v_read_size; … … 5730 5119 unset($v_header_list); 5731 5120 5732 5121 // ----- Return 5733 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5734 5122 return $v_result; 5735 5123 } 5736 5124 … … 5756 5144 PclZipUtilRename($v_zip_temp_name, $this->zipname); 5757 5145 5758 5146 // ----- Return 5759 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5760 5147 return $v_result; 5761 5148 } 5762 5149 // -------------------------------------------------------------------------------- … … 5769 5156 // -------------------------------------------------------------------------------- 5770 5157 function privDuplicate($p_archive_filename) 5771 5158 { 5772 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDuplicate", "archive_filename='$p_archive_filename'");5773 5159 $v_result=1; 5774 5160 5775 5161 // ----- Look if the $p_archive_filename exists 5776 5162 if (!is_file($p_archive_filename)) 5777 5163 { 5778 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to duplicate does not exist. End of duplicate.");5779 5164 5780 5165 // ----- Nothing to duplicate, so duplicate is a success. 5781 5166 $v_result = 1; 5782 5167 5783 5168 // ----- Return 5784 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5785 5169 return $v_result; 5786 5170 } 5787 5171 5788 5172 // ----- Open the zip file 5789 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5790 5173 if (($v_result=$this->privOpenFd('wb')) != 1) 5791 5174 { 5792 5175 // ----- Return 5793 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5794 5176 return $v_result; 5795 5177 } 5796 5178 5797 5179 // ----- Open the temporary file in write mode 5798 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");5799 5180 if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) 5800 5181 { 5801 5182 $this->privCloseFd(); … … 5803 5184 PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); 5804 5185 5805 5186 // ----- Return 5806 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());5807 5187 return PclZip::errorCode(); 5808 5188 } 5809 5189 … … 5813 5193 while ($v_size != 0) 5814 5194 { 5815 5195 $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 5196 $v_buffer = fread($v_zip_temp_fd, $v_read_size); 5818 5197 @fwrite($this->zip_fd, $v_buffer, $v_read_size); 5819 5198 $v_size -= $v_read_size; … … 5826 5205 @fclose($v_zip_temp_fd); 5827 5206 5828 5207 // ----- Return 5829 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5830 5208 return $v_result; 5831 5209 } 5832 5210 // -------------------------------------------------------------------------------- … … 5873 5251 // -------------------------------------------------------------------------------- 5874 5252 function privDisableMagicQuotes() 5875 5253 { 5876 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privDisableMagicQuotes', "");5877 5254 $v_result=1; 5878 5255 5879 5256 // ----- Look if function exists 5880 5257 if ( (!function_exists("get_magic_quotes_runtime")) 5881 5258 || (!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 5259 return $v_result; 5885 5260 } 5886 5261 5887 5262 // ----- Look if already done 5888 5263 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 5264 return $v_result; 5892 5265 } 5893 5266 5894 5267 // ----- Get and memorize the magic_quote value 5895 5268 $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 5269 5898 5270 // ----- Disable magic_quotes 5899 5271 if ($this->magic_quotes_status == 1) { 5900 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Disable magic_quotes");5901 5272 @set_magic_quotes_runtime(0); 5902 5273 } 5903 5274 5904 5275 // ----- Return 5905 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5906 5276 return $v_result; 5907 5277 } 5908 5278 // -------------------------------------------------------------------------------- … … 5915 5285 // -------------------------------------------------------------------------------- 5916 5286 function privSwapBackMagicQuotes() 5917 5287 { 5918 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privSwapBackMagicQuotes', "");5919 5288 $v_result=1; 5920 5289 5921 5290 // ----- Look if function exists 5922 5291 if ( (!function_exists("get_magic_quotes_runtime")) 5923 5292 || (!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 5293 return $v_result; 5927 5294 } 5928 5295 5929 5296 // ----- Look if something to do 5930 5297 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 5298 return $v_result; 5934 5299 } 5935 5300 5936 5301 // ----- Swap back magic_quotes 5937 5302 if ($this->magic_quotes_status == 1) { 5938 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Enable back magic_quotes");5939 5303 @set_magic_quotes_runtime($this->magic_quotes_status); 5940 5304 } 5941 5305 5942 5306 // ----- Return 5943 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);5944 5307 return $v_result; 5945 5308 } 5946 5309 // -------------------------------------------------------------------------------- … … 5957 5320 // -------------------------------------------------------------------------------- 5958 5321 function PclZipUtilPathReduction($p_dir) 5959 5322 { 5960 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathReduction", "dir='$p_dir'");5961 5323 $v_result = ""; 5962 5324 5963 5325 // ----- Look for not empty path … … 5984 5346 // ----- It is an invalid path, so the path is not modified 5985 5347 // TBC 5986 5348 $v_result = $p_dir; 5987 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid path is unchanged");5988 5349 $v_skip = 0; 5989 5350 } 5990 5351 } … … 6019 5380 } 6020 5381 6021 5382 // ----- Return 6022 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6023 5383 return $v_result; 6024 5384 } 6025 5385 // -------------------------------------------------------------------------------- … … 6041 5401 // -------------------------------------------------------------------------------- 6042 5402 function PclZipUtilPathInclusion($p_dir, $p_path) 6043 5403 { 6044 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathInclusion", "dir='$p_dir', path='$p_path'");6045 5404 $v_result = 1; 6046 5405 6047 5406 // ----- Look for path beginning by ./ 6048 5407 if ( ($p_dir == '.') 6049 5408 || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { 6050 5409 $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 5410 } 6053 5411 if ( ($p_path == '.') 6054 5412 || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { 6055 5413 $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 5414 } 6058 5415 6059 5416 // ----- Explode dir and path by directory separator … … 6066 5423 $i = 0; 6067 5424 $j = 0; 6068 5425 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 5426 6071 5427 // ----- Look for empty dir (path reduction) 6072 5428 if ($v_list_dir[$i] == '') { … … 6080 5436 6081 5437 // ----- Compare the items 6082 5438 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 5439 $v_result = 0; 6085 5440 } 6086 5441 … … 6091 5446 6092 5447 // ----- Look if everything seems to be the same 6093 5448 if ($v_result) { 6094 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Look for tie break");6095 5449 // ----- Skip all the empty items 6096 5450 while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; 6097 5451 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 5452 6100 5453 if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { 6101 5454 // ----- There are exactly the same … … 6108 5461 } 6109 5462 6110 5463 // ----- Return 6111 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6112 5464 return $v_result; 6113 5465 } 6114 5466 // -------------------------------------------------------------------------------- … … 6126 5478 // -------------------------------------------------------------------------------- 6127 5479 function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) 6128 5480 { 6129 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilCopyBlock", "size=$p_size, mode=$p_mode");6130 5481 $v_result = 1; 6131 5482 6132 5483 if ($p_mode==0) 6133 5484 { 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 5485 while ($p_size != 0) 6137 5486 { 6138 5487 $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 5488 $v_buffer = @fread($p_src, $v_read_size); 6141 5489 @fwrite($p_dest, $v_buffer, $v_read_size); 6142 5490 $p_size -= $v_read_size; 6143 5491 } 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 5492 } 6147 5493 else if ($p_mode==1) 6148 5494 { 6149 5495 while ($p_size != 0) 6150 5496 { 6151 5497 $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 5498 $v_buffer = @gzread($p_src, $v_read_size); 6154 5499 @fwrite($p_dest, $v_buffer, $v_read_size); 6155 5500 $p_size -= $v_read_size; … … 6160 5505 while ($p_size != 0) 6161 5506 { 6162 5507 $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 5508 $v_buffer = @fread($p_src, $v_read_size); 6165 5509 @gzwrite($p_dest, $v_buffer, $v_read_size); 6166 5510 $p_size -= $v_read_size; … … 6171 5515 while ($p_size != 0) 6172 5516 { 6173 5517 $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 5518 $v_buffer = @gzread($p_src, $v_read_size); 6176 5519 @gzwrite($p_dest, $v_buffer, $v_read_size); 6177 5520 $p_size -= $v_read_size; … … 6179 5522 } 6180 5523 6181 5524 // ----- Return 6182 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6183 5525 return $v_result; 6184 5526 } 6185 5527 // -------------------------------------------------------------------------------- … … 6198 5540 // -------------------------------------------------------------------------------- 6199 5541 function PclZipUtilRename($p_src, $p_dest) 6200 5542 { 6201 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilRename", "source=$p_src, destination=$p_dest");6202 5543 $v_result = 1; 6203 5544 6204 5545 // ----- Try to rename the files 6205 5546 if (!@rename($p_src, $p_dest)) { 6206 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to rename file, try copy+unlink");6207 5547 6208 5548 // ----- Try to copy & unlink the src 6209 5549 if (!@copy($p_src, $p_dest)) { 6210 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to copy file");6211 5550 $v_result = 0; 6212 5551 } 6213 5552 else if (!@unlink($p_src)) { 6214 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to unlink old filename");6215 5553 $v_result = 0; 6216 5554 } 6217 5555 } 6218 5556 6219 5557 // ----- Return 6220 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6221 5558 return $v_result; 6222 5559 } 6223 5560 // -------------------------------------------------------------------------------- … … 6233 5570 // -------------------------------------------------------------------------------- 6234 5571 function PclZipUtilOptionText($p_option) 6235 5572 { 6236 //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilOptionText", "option='".$p_option."'");6237 5573 6238 5574 $v_list = get_defined_constants(); 6239 5575 for (reset($v_list); $v_key = key($v_list); next($v_list)) { … … 6242 5578 || ($v_prefix == 'PCLZIP_CB_') 6243 5579 || ($v_prefix == 'PCLZIP_ATT')) 6244 5580 && ($v_list[$v_key] == $p_option)) { 6245 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_key);6246 5581 return $v_key; 6247 5582 } 6248 5583 } 6249 5584 6250 5585 $v_result = 'Unknown'; 6251 5586 6252 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);6253 5587 return $v_result; 6254 5588 } 6255 5589 // -------------------------------------------------------------------------------- … … 6282 5616 // -------------------------------------------------------------------------------- 6283 5617 6284 5618 6285 ?> 5619 ?> 5620 No newline at end of file