Make WordPress Core

Changeset 11993


Ignore:
Timestamp:
10/01/2009 09:04:57 PM (16 years ago)
Author:
westi
Message:

Update pclzip to 2.8.2 - Fixes #10650 and #10777.
Includes:

  • Removal of eval()s
  • Merge WordPress 64 bit fix upstream
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/class-pclzip.php

    r11930 r11993  
    11<?php
    22// --------------------------------------------------------------------------------
    3 // PhpConcept Library - Zip Module 2.8
     3// PhpConcept Library - Zip Module 2.8.2
    44// --------------------------------------------------------------------------------
    5 // License GNU/LGPL - Vincent Blavet - March 2006
     5// License GNU/LGPL - Vincent Blavet - August 2009
    66// http://www.phpconcept.net
    77// --------------------------------------------------------------------------------
     
    2323//
    2424// --------------------------------------------------------------------------------
    25 // $Id: pclzip.lib.php,v 1.55 2009/04/22 07:38:36 vblavet Exp $
     25// $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $
    2626// --------------------------------------------------------------------------------
    2727
     
    3030    define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );
    3131  }
    32 
     32 
    3333  // ----- File list separator
    3434  // In version 1.x of PclZip, the separator for file list is a space
     
    6969  // ----- Optional threshold ratio for use of temporary files
    7070  //       Pclzip sense the size of the file to add/extract and decide to
    71   //       use or not temporary file. The algorythm is looking for
     71  //       use or not temporary file. The algorythm is looking for 
    7272  //       memory_limit of PHP and apply a ratio.
    7373  //       threshold = memory_limit * ratio.
     
    8484
    8585  // ----- Global variables
    86   $g_pclzip_version = "2.8";
     86  $g_pclzip_version = "2.8.2";
    8787
    8888  // ----- Error codes
     
    153153  define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 );
    154154  define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias
    155 
     155 
    156156  // ----- File description attributes
    157157  define( 'PCLZIP_ATT_FILE_NAME', 79001 );
     
    199199    var $error_code = 1;
    200200    var $error_string = '';
    201 
     201   
    202202    // ----- Current status of the magic_quotes_runtime
    203203    // This value store the php configuration for magic_quotes
     
    215215  function PclZip($p_zipname)
    216216  {
    217     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::PclZip', "zipname=$p_zipname");
    218217
    219218    // ----- Tests the zlib
    220219    if (!function_exists('gzopen'))
    221220    {
    222       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 1, "zlib extension seems to be missing");
    223221      die('Abort '.basename(__FILE__).' : Missing zlib extensions');
    224222    }
     
    230228
    231229    // ----- Return
    232     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 1);
    233230    return;
    234231  }
     
    274271  function create($p_filelist)
    275272  {
    276     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::create', "filelist='$p_filelist', ...");
    277273    $v_result=1;
    278274
     
    286282    // ----- Look for variable options arguments
    287283    $v_size = func_num_args();
    288     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
    289284
    290285    // ----- Look for arguments
     
    299294      // ----- Look for first arg
    300295      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
    301         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected");
    302296
    303297        // ----- Parse the options
     
    316310                                             ));
    317311        if ($v_result != 1) {
    318           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    319312          return 0;
    320313        }
     
    325318      // method.
    326319      else {
    327         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
    328320
    329321        // ----- Get the first argument
     
    337329          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
    338330                               "Invalid number / type of arguments");
    339           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    340331          return 0;
    341332        }
    342333      }
    343334    }
    344 
     335   
    345336    // ----- Look for default option values
    346337    $this->privOptionDefaultThreshold($v_options);
     
    351342    $v_filedescr_list = array();
    352343    $p_result_list = array();
    353 
     344   
    354345    // ----- Look if the $p_filelist is really an array
    355346    if (is_array($p_filelist)) {
    356 
     347   
    357348      // ----- Look if the first element is also an array
    358349      //       This will mean that this is a file description entry
     
    360351        $v_att_list = $p_filelist;
    361352      }
    362 
     353     
    363354      // ----- The list is a list of string names
    364355      else {
     
    376367    else {
    377368      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");
    378       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    379369      return 0;
    380370    }
    381 
     371   
    382372    // ----- Reformat the string list
    383373    if (sizeof($v_string_list) != 0) {
     
    387377        }
    388378        else {
    389           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Ignore an empty filename");
    390         }
    391       }
    392     }
    393 
     379        }
     380      }
     381    }
     382   
    394383    // ----- For each file in the list check the attributes
    395384    $v_supported_attributes
     
    407396                                               $v_supported_attributes);
    408397      if ($v_result != 1) {
    409         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    410398        return 0;
    411399      }
     
    415403    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
    416404    if ($v_result != 1) {
    417       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    418405      return 0;
    419406    }
     
    422409    $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options);
    423410    if ($v_result != 1) {
    424       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    425411      return 0;
    426412    }
    427413
    428414    // ----- Return
    429     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);
    430415    return $p_result_list;
    431416  }
     
    469454  function add($p_filelist)
    470455  {
    471     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::add', "filelist='$p_filelist', ...");
    472456    $v_result=1;
    473457
     
    481465    // ----- Look for variable options arguments
    482466    $v_size = func_num_args();
    483     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
    484467
    485468    // ----- Look for arguments
     
    494477      // ----- Look for first arg
    495478      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
    496         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected");
    497479
    498480        // ----- Parse the options
     
    513495                                                   ));
    514496        if ($v_result != 1) {
    515           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    516497          return 0;
    517498        }
     
    522503      // method.
    523504      else {
    524         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
    525505
    526506        // ----- Get the first argument
     
    536516
    537517          // ----- Return
    538           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    539518          return 0;
    540519        }
     
    550529    $v_filedescr_list = array();
    551530    $p_result_list = array();
    552 
     531   
    553532    // ----- Look if the $p_filelist is really an array
    554533    if (is_array($p_filelist)) {
    555 
     534   
    556535      // ----- Look if the first element is also an array
    557536      //       This will mean that this is a file description entry
     
    559538        $v_att_list = $p_filelist;
    560539      }
    561 
     540     
    562541      // ----- The list is a list of string names
    563542      else {
     
    575554    else {
    576555      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist");
    577       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    578556      return 0;
    579557    }
    580 
     558   
    581559    // ----- Reformat the string list
    582560    if (sizeof($v_string_list) != 0) {
     
    585563      }
    586564    }
    587 
     565   
    588566    // ----- For each file in the list check the attributes
    589567    $v_supported_attributes
     
    601579                                               $v_supported_attributes);
    602580      if ($v_result != 1) {
    603         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    604581        return 0;
    605582      }
     
    609586    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
    610587    if ($v_result != 1) {
    611       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    612588      return 0;
    613589    }
     
    616592    $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options);
    617593    if ($v_result != 1) {
    618       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    619594      return 0;
    620595    }
    621596
    622597    // ----- Return
    623     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);
    624598    return $p_result_list;
    625599  }
     
    669643  function listContent()
    670644  {
    671     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::listContent', "");
    672645    $v_result=1;
    673646
     
    677650    // ----- Check archive
    678651    if (!$this->privCheckFormat()) {
    679       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    680652      return(0);
    681653    }
     
    686658    {
    687659      unset($p_list);
    688       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
    689660      return(0);
    690661    }
    691662
    692663    // ----- Return
    693     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
    694664    return $p_list;
    695665  }
     
    730700  function extract()
    731701  {
    732     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extract", "");
    733702    $v_result=1;
    734703
     
    738707    // ----- Check archive
    739708    if (!$this->privCheckFormat()) {
    740       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    741709      return(0);
    742710    }
     
    751719    // ----- Look for variable options arguments
    752720    $v_size = func_num_args();
    753     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
    754721
    755722    // ----- Default values for option
     
    763730      // ----- Look for first arg
    764731      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
    765         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");
    766732
    767733        // ----- Parse the options
     
    788754                                                    ));
    789755        if ($v_result != 1) {
    790           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    791756          return 0;
    792757        }
     
    815780      // method.
    816781      else {
    817         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
    818782
    819783        // ----- Get the first argument
     
    829793
    830794          // ----- Return
    831           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
    832795          return 0;
    833796        }
     
    839802
    840803    // ----- Trace
    841     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'");
    842804
    843805    // ----- Call the extracting fct
     
    847809    if ($v_result < 1) {
    848810      unset($p_list);
    849       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
    850811      return(0);
    851812    }
    852813
    853814    // ----- Return
    854     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
    855815    return $p_list;
    856816  }
     
    897857  function extractByIndex($p_index)
    898858  {
    899     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extractByIndex", "index='$p_index', ...");
    900859    $v_result=1;
    901860
     
    905864    // ----- Check archive
    906865    if (!$this->privCheckFormat()) {
    907       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    908866      return(0);
    909867    }
     
    918876    // ----- Look for variable options arguments
    919877    $v_size = func_num_args();
    920     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
    921878
    922879    // ----- Default values for option
     
    934891      // ----- Look for first arg
    935892      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
    936         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");
    937893
    938894        // ----- Parse the options
     
    954910                                                   ));
    955911        if ($v_result != 1) {
    956           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    957912          return 0;
    958913        }
     
    977932        if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {
    978933          $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
    979           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING not set.");
    980934        }
    981935        else {
    982             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING set.");
    983936        }
    984937      }
     
    988941      // method.
    989942      else {
    990         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
    991943
    992944        // ----- Get the first argument
     
    1002954
    1003955          // ----- Return
    1004           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    1005956          return 0;
    1006957        }
     
    1009960
    1010961    // ----- 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')."'");
    1012962
    1013963    // ----- Trick
     
    1019969                                        array (PCLZIP_OPT_BY_INDEX => 'optional' ));
    1020970    if ($v_result != 1) {
    1021         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    1022971        return 0;
    1023972    }
     
    1029978    // ----- Call the extracting fct
    1030979    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());
    1032980        return(0);
    1033981    }
    1034982
    1035983    // ----- Return
    1036     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
    1037984    return $p_list;
    1038985  }
     
    1050997  //   PCLZIP_OPT_BY_INDEX :
    1051998  //   PCLZIP_OPT_BY_NAME :
    1052   //   PCLZIP_OPT_BY_EREG :
     999  //   PCLZIP_OPT_BY_EREG : 
    10531000  //   PCLZIP_OPT_BY_PREG :
    10541001  // Return Values :
     
    10591006  function delete()
    10601007  {
    1061     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::delete", "");
    10621008    $v_result=1;
    10631009
     
    10671013    // ----- Check archive
    10681014    if (!$this->privCheckFormat()) {
    1069       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    10701015      return(0);
    10711016    }
     
    10761021    // ----- Look for variable options arguments
    10771022    $v_size = func_num_args();
    1078     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
    10791023
    10801024    // ----- Look for arguments
     
    10901034                                               PCLZIP_OPT_BY_INDEX => 'optional' ));
    10911035      if ($v_result != 1) {
    1092           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    10931036          return 0;
    10941037      }
     
    11031046      $this->privSwapBackMagicQuotes();
    11041047      unset($v_list);
    1105       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
    11061048      return(0);
    11071049    }
     
    11111053
    11121054    // ----- Return
    1113     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_list);
    11141055    return $v_list;
    11151056  }
     
    11241065  function deleteByIndex($p_index)
    11251066  {
    1126     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::deleteByIndex", "index='$p_index'");
    1127 
     1067   
    11281068    $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index);
    11291069
    11301070    // ----- Return
    1131     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
    11321071    return $p_list;
    11331072  }
     
    11501089  function properties()
    11511090  {
    1152     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::properties", "");
    11531091
    11541092    // ----- Reset the error handler
     
    11611099    if (!$this->privCheckFormat()) {
    11621100      $this->privSwapBackMagicQuotes();
    1163       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    11641101      return(0);
    11651102    }
     
    11751112    {
    11761113      // ----- Open the zip file
    1177       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    11781114      if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
    11791115      {
    11801116        $this->privSwapBackMagicQuotes();
    1181 
     1117       
    11821118        // ----- Error log
    11831119        PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
    11841120
    11851121        // ----- Return
    1186         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), 0);
    11871122        return 0;
    11881123      }
     
    11931128      {
    11941129        $this->privSwapBackMagicQuotes();
    1195         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    11961130        return 0;
    11971131      }
     
    12101144
    12111145    // ----- Return
    1212     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_prop);
    12131146    return $v_prop;
    12141147  }
     
    12291162  function duplicate($p_archive)
    12301163  {
    1231     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::duplicate", "");
    12321164    $v_result = 1;
    12331165
     
    12381170    if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip'))
    12391171    {
    1240       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is valid PclZip object '".$p_archive->zipname."'");
    12411172
    12421173      // ----- Duplicate the archive
     
    12471178    else if (is_string($p_archive))
    12481179    {
    1249       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is a filename '$p_archive'");
    12501180
    12511181      // ----- Check that $p_archive is a valid zip file
     
    12711201
    12721202    // ----- Return
    1273     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    12741203    return $v_result;
    12751204  }
     
    12921221  function merge($p_archive_to_add)
    12931222  {
    1294     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::merge", "");
    12951223    $v_result = 1;
    12961224
     
    13001228    // ----- Check archive
    13011229    if (!$this->privCheckFormat()) {
    1302       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
    13031230      return(0);
    13041231    }
     
    13071234    if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip'))
    13081235    {
    1309       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is valid PclZip object");
    13101236
    13111237      // ----- Merge the archive
     
    13161242    else if (is_string($p_archive_to_add))
    13171243    {
    1318       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is a filename");
    13191244
    13201245      // ----- Create a temporary archive
     
    13341259
    13351260    // ----- Return
    1336     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    13371261    return $v_result;
    13381262  }
     
    14491373  function privCheckFormat($p_level=0)
    14501374  {
    1451     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFormat", "");
    14521375    $v_result = true;
    14531376
     
    14621385      // ----- Error log
    14631386      PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'");
    1464       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());
    14651387      return(false);
    14661388    }
     
    14701392      // ----- Error log
    14711393      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'");
    1472       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());
    14731394      return(false);
    14741395    }
     
    14841405
    14851406    // ----- Return
    1486     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    14871407    return $v_result;
    14881408  }
     
    15061426  function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false)
    15071427  {
    1508     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privParseOptions", "");
    15091428    $v_result=1;
    1510 
     1429   
    15111430    // ----- Read the options
    15121431    $i=0;
    15131432    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].")'");
    15151433
    15161434      // ----- Check if the option is supported
     
    15201438
    15211439        // ----- Return
    1522         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    15231440        return PclZip::errorCode();
    15241441      }
     
    15361453
    15371454            // ----- Return
    1538             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    15391455            return PclZip::errorCode();
    15401456          }
     
    15421458          // ----- Get the value
    15431459          $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]]."'");
    15451460          $i++;
    15461461        break;
     
    15501465          if (($i+1) >= $p_size) {
    15511466            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());
    15531467            return PclZip::errorCode();
    15541468          }
    1555 
     1469         
    15561470          // ----- Check for incompatible options
    15571471          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
    15581472            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());
    15601473            return PclZip::errorCode();
    15611474          }
    1562 
     1475         
    15631476          // ----- Check the value
    15641477          $v_value = $p_options_list[$i+1];
    15651478          if ((!is_integer($v_value)) || ($v_value<0)) {
    15661479            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());
    15681480            return PclZip::errorCode();
    15691481          }
     
    15711483          // ----- Get the value (and convert it in bytes)
    15721484          $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]]."'");
    15741485          $i++;
    15751486        break;
     
    15791490          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
    15801491            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());
    15821492            return PclZip::errorCode();
    15831493          }
    1584 
     1494         
    15851495          $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]]."'");
    15871496        break;
    15881497
     
    15911500          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) {
    15921501            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());
    15941502            return PclZip::errorCode();
    15951503          }
     
    15971505          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
    15981506            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());
    16001507            return PclZip::errorCode();
    16011508          }
    1602 
     1509         
    16031510          $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]]."'");
    16051511        break;
    16061512
     
    16121518
    16131519            // ----- Return
    1614             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    16151520            return PclZip::errorCode();
    16161521          }
     
    16201525              && ($p_options_list[$i+1] != '')) {
    16211526            $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]]."'");
    16231527            $i++;
    16241528          }
    16251529          else {
    1626             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." set with an empty value is ignored.");
    16271530          }
    16281531        break;
     
    16361539
    16371540            // ----- Return
    1638             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    16391541            return PclZip::errorCode();
    16401542          }
     
    16521554
    16531555            // ----- Return
    1654             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    16551556            return PclZip::errorCode();
    16561557          }
    1657           ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
    16581558          $i++;
    16591559        break;
     
    16611561        // ----- Look for options that request an EREG or PREG expression
    16621562        case PCLZIP_OPT_BY_EREG :
     1563          // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG
     1564          // to PCLZIP_OPT_BY_PREG
     1565          $p_options_list[$i] = PCLZIP_OPT_BY_PREG;
    16631566        case PCLZIP_OPT_BY_PREG :
    16641567        //case PCLZIP_OPT_CRYPT :
     
    16691572
    16701573            // ----- Return
    1671             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    16721574            return PclZip::errorCode();
    16731575          }
     
    16821584
    16831585            // ----- Return
    1684             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    16851586            return PclZip::errorCode();
    16861587          }
    1687           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
    16881588          $i++;
    16891589        break;
     
    17021602
    17031603            // ----- Return
    1704             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    17051604            return PclZip::errorCode();
    17061605          }
     
    17181617
    17191618            // ----- Return
    1720             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    17211619            return PclZip::errorCode();
    17221620          }
    1723           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
    17241621          $i++;
    17251622        break;
     
    17331630
    17341631            // ----- Return
    1735             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    17361632            return PclZip::errorCode();
    17371633          }
     
    17401636          $v_work_list = array();
    17411637          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]."'");
    17431638
    17441639              // ----- Remove spaces
     
    17491644          }
    17501645          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]."'");
    17521646              $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1];
    17531647          }
    17541648          else if (is_array($p_options_list[$i+1])) {
    1755               //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an array");
    17561649              $v_work_list = $p_options_list[$i+1];
    17571650          }
     
    17611654
    17621655            // ----- Return
    1763             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    17641656            return PclZip::errorCode();
    17651657          }
    1766 
     1658         
    17671659          // ----- Reduce the index list
    17681660          // each index item in the list must be a couple with a start and
     
    17751667              $v_item_list = explode("-", $v_work_list[$j]);
    17761668              $v_size_item_list = sizeof($v_item_list);
    1777 
     1669             
    17781670              // ----- TBC : Here we might check that each item is a
    17791671              // real integer ...
    1780 
     1672             
    17811673              // ----- Look for single value
    17821674              if ($v_size_item_list == 1) {
     
    17951687
    17961688                  // ----- Return
    1797                   //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    17981689                  return PclZip::errorCode();
    17991690              }
    18001691
    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']."]");
    18021692
    18031693              // ----- Look for list sort
    18041694              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 ...");
    18061695                  $v_sort_flag=true;
    18071696
     
    18111700
    18121701                  // ----- Return
    1813                   //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    18141702                  return PclZip::errorCode();
    18151703              }
    18161704              $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];
    18171705          }
    1818 
     1706         
    18191707          // ----- Sort the items
    18201708          if ($v_sort_flag) {
    18211709              // TBC : To Be Completed
    1822               //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "List sorting is not yet write ...");
    18231710          }
    18241711
     
    18351722        case PCLZIP_OPT_STOP_ON_ERROR :
    18361723          $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]]."'");
    18381724        break;
    18391725
     
    18461732
    18471733            // ----- Return
    1848             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    18491734            return PclZip::errorCode();
    18501735          }
     
    18521737          // ----- Get the value
    18531738          $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]]."'");
    18551739          $i++;
    18561740        break;
     
    18731757
    18741758            // ----- Return
    1875             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    18761759            return PclZip::errorCode();
    18771760          }
     
    18791762          // ----- Get the value
    18801763          $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."'");
    18821764
    18831765          // ----- Check that the value is a valid existing function
     
    18871769
    18881770            // ----- Return
    1889             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    18901771            return PclZip::errorCode();
    18911772          }
     
    19031784
    19041785          // ----- Return
    1905           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    19061786          return PclZip::errorCode();
    19071787      }
     
    19161796        // ----- Look for mandatory option
    19171797        if ($v_requested_options[$key] == 'mandatory') {
    1918           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");
    19191798          // ----- Look if present
    19201799          if (!isset($v_result_list[$key])) {
     
    19231802
    19241803            // ----- Return
    1925             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    19261804            return PclZip::errorCode();
    19271805          }
     
    19291807      }
    19301808    }
    1931 
     1809   
    19321810    // ----- Look for default values
    19331811    if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
    1934       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Calculate auto threshold");
    1935 
     1812     
    19361813    }
    19371814
    19381815    // ----- Return
    1939     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    19401816    return $v_result;
    19411817  }
     
    19501826  function privOptionDefaultThreshold(&$p_options)
    19511827  {
    1952     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOptionDefaultThreshold", "");
    19531828    $v_result=1;
    1954 
     1829   
    19551830    if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
    19561831        || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) {
    1957       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    19581832      return $v_result;
    19591833    }
    1960 
    1961     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Create an auto-threshold for use of temporay files");
     1834   
    19621835    // ----- Get 'memory_limit' configuration value
    19631836    $v_memory_limit = ini_get('memory_limit');
    19641837    $v_memory_limit = trim($v_memory_limit);
    19651838    $last = strtolower(substr($v_memory_limit, -1));
    1966 
     1839 
    19671840    if($last == 'g')
    19681841        //$v_memory_limit = $v_memory_limit*1024*1024*1024;
     
    19731846    if($last == 'k')
    19741847        $v_memory_limit = $v_memory_limit*1024;
    1975 
     1848           
    19761849    $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO);
    1977 
    1978     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Current memory usage : ".memory_get_usage(TRUE)." bytes");
    1979     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Threshold value is : ".$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]." bytes");
     1850   
    19801851
    19811852    // ----- Sanity check : No threshold if value lower than 1M
    19821853    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)");
    19841854      unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]);
    19851855    }
    1986 
     1856         
    19871857    // ----- Return
    1988     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    19891858    return $v_result;
    19901859  }
     
    20011870  function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false)
    20021871  {
    2003     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrParseAtt", "");
    20041872    $v_result=1;
    2005 
     1873   
    20061874    // ----- For each file in the list check the attributes
    20071875    foreach ($p_file_list as $v_key => $v_value) {
    2008 
     1876   
    20091877      // ----- Check if the option is supported
    20101878      if (!isset($v_requested_options[$v_key])) {
     
    20131881
    20141882        // ----- Return
    2015         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    20161883        return PclZip::errorCode();
    20171884      }
     
    20221889          if (!is_string($v_value)) {
    20231890            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());
    20251891            return PclZip::errorCode();
    20261892          }
    20271893
    20281894          $p_filedescr['filename'] = PclZipUtilPathReduction($v_value);
    2029           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
    2030 
     1895         
    20311896          if ($p_filedescr['filename'] == '') {
    20321897            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());
    20341898            return PclZip::errorCode();
    20351899          }
     
    20401904          if (!is_string($v_value)) {
    20411905            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());
    20431906            return PclZip::errorCode();
    20441907          }
    20451908
    20461909          $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value);
    2047           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
    20481910
    20491911          if ($p_filedescr['new_short_name'] == '') {
    20501912            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());
    20521913            return PclZip::errorCode();
    20531914          }
     
    20571918          if (!is_string($v_value)) {
    20581919            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());
    20601920            return PclZip::errorCode();
    20611921          }
    20621922
    20631923          $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value);
    2064           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
    20651924
    20661925          if ($p_filedescr['new_full_name'] == '') {
    20671926            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());
    20691927            return PclZip::errorCode();
    20701928          }
     
    20751933          if (!is_string($v_value)) {
    20761934            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());
    20781935            return PclZip::errorCode();
    20791936          }
    20801937
    20811938          $p_filedescr['comment'] = $v_value;
    2082           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
    20831939        break;
    20841940
     
    20861942          if (!is_integer($v_value)) {
    20871943            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());
    20891944            return PclZip::errorCode();
    20901945          }
    20911946
    20921947          $p_filedescr['mtime'] = $v_value;
    2093           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
    20941948        break;
    20951949
    20961950        case PCLZIP_ATT_FILE_CONTENT :
    20971951          $p_filedescr['content'] = $v_value;
    2098           ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
    20991952        break;
    21001953
     
    21051958
    21061959          // ----- Return
    2107           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    21081960          return PclZip::errorCode();
    21091961      }
     
    21141966          // ----- Look for mandatory option
    21151967          if ($v_requested_options[$key] == 'mandatory') {
    2116             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");
    21171968            // ----- Look if present
    21181969            if (!isset($p_file_list[$key])) {
    21191970              PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
    2120               //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    21211971              return PclZip::errorCode();
    21221972            }
     
    21241974        }
    21251975      }
    2126 
     1976   
    21271977    // end foreach
    21281978    }
    2129 
     1979   
    21301980    // ----- Return
    2131     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    21321981    return $v_result;
    21331982  }
     
    21411990  //   just ignore the item.
    21421991  //   Then prepare the information that will be stored for that file.
    2143   //   When its a folder, expand the folder with all the files that are in that
     1992  //   When its a folder, expand the folder with all the files that are in that 
    21441993  //   folder (recursively).
    21451994  // Parameters :
     
    21501999  function privFileDescrExpand(&$p_filedescr_list, &$p_options)
    21512000  {
    2152     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrExpand", "");
    21532001    $v_result=1;
    2154 
     2002   
    21552003    // ----- Create a result list
    21562004    $v_result_list = array();
    2157 
     2005   
    21582006    // ----- Look each entry
    21592007    for ($i=0; $i<sizeof($p_filedescr_list); $i++) {
    2160       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for file ".$i.".");
    2161 
     2008     
    21622009      // ----- Get filedescr
    21632010      $v_descr = $p_filedescr_list[$i];
    2164 
     2011     
    21652012      // ----- Reduce the filename
    2166       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr before reduction :'".$v_descr['filename']."'");
    21672013      $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false);
    21682014      $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);
    2169       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr after reduction :'".$v_descr['filename']."'");
    2170 
     2015     
    21712016      // ----- Look for real file or folder
    21722017      if (file_exists($v_descr['filename'])) {
    21732018        if (@is_file($v_descr['filename'])) {
    2174           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a file");
    21752019          $v_descr['type'] = 'file';
    21762020        }
    21772021        else if (@is_dir($v_descr['filename'])) {
    2178           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a folder");
    21792022          $v_descr['type'] = 'folder';
    21802023        }
    21812024        else if (@is_link($v_descr['filename'])) {
    2182           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : link");
    21832025          // skip
    21842026          continue;
    21852027        }
    21862028        else {
    2187           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : unknown type");
    21882029          // skip
    21892030          continue;
    21902031        }
    21912032      }
    2192 
     2033     
    21932034      // ----- Look for string added as file
    21942035      else if (isset($v_descr['content'])) {
    2195         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a string added as a file");
    21962036        $v_descr['type'] = 'virtual_file';
    21972037      }
    2198 
     2038     
    21992039      // ----- Missing file
    22002040      else {
    22012041        // ----- Error log
    2202         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_descr['filename']."' does not exist");
    22032042        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist");
    22042043
    22052044        // ----- Return
    2206         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    22072045        return PclZip::errorCode();
    22082046      }
    2209 
     2047     
    22102048      // ----- Calculate the stored filename
    22112049      $this->privCalculateStoredFilename($v_descr, $p_options);
    2212 
     2050     
    22132051      // ----- Add the descriptor in result list
    22142052      $v_result_list[sizeof($v_result_list)] = $v_descr;
    2215 
     2053     
    22162054      // ----- Look for folder
    22172055      if ($v_descr['type'] == 'folder') {
     
    22212059        if ($v_folder_handler = @opendir($v_descr['filename'])) {
    22222060          while (($v_item_handler = @readdir($v_folder_handler)) !== false) {
    2223             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for '".$v_item_handler."' in the directory");
    22242061
    22252062            // ----- Skip '.' and '..'
     
    22272064                continue;
    22282065            }
    2229 
     2066           
    22302067            // ----- Compose the full filename
    22312068            $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler;
    2232 
     2069           
    22332070            // ----- Look for different stored filename
    22342071            // Because the name of the folder was changed, the name of the
    22352072            // files/sub-folders also change
    2236             if ($v_descr['stored_filename'] != $v_descr['filename']) {
     2073            if (($v_descr['stored_filename'] != $v_descr['filename'])
     2074                 && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) {
    22372075              if ($v_descr['stored_filename'] != '') {
    22382076                $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;
     
    22422080              }
    22432081            }
    2244 
     2082     
    22452083            $v_dirlist_nb++;
    22462084          }
    2247 
     2085         
    22482086          @closedir($v_folder_handler);
    22492087        }
    22502088        else {
    2251           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to open dir '".$v_descr['filename']."' in read mode. Skipped.");
    22522089          // TBC : unable to open folder in read mode
    22532090        }
    2254 
     2091       
    22552092        // ----- Expand each element of the list
    22562093        if ($v_dirlist_nb != 0) {
    22572094          // ----- Expand
    22582095          if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) {
    2259             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    22602096            return $v_result;
    22612097          }
    2262 
     2098         
    22632099          // ----- 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)."')");
    22652100          $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)."'");
    22672101        }
    22682102        else {
    2269           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Nothing in this folder to expand.");
    2270         }
    2271 
     2103        }
     2104         
    22722105        // ----- Free local array
    22732106        unset($v_dirlist_descr);
    22742107      }
    22752108    }
    2276 
     2109   
    22772110    // ----- Get the result list
    22782111    $p_filedescr_list = $v_result_list;
    22792112
    22802113    // ----- Return
    2281     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    22822114    return $v_result;
    22832115  }
     
    22922124  function privCreate($p_filedescr_list, &$p_result_list, &$p_options)
    22932125  {
    2294     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCreate", "list");
    22952126    $v_result=1;
    22962127    $v_list_detail = array();
    2297 
     2128   
    22982129    // ----- Magic quotes trick
    22992130    $this->privDisableMagicQuotes();
     
    23032134    {
    23042135      // ----- Return
    2305       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    23062136      return $v_result;
    23072137    }
     
    23172147
    23182148    // ----- Return
    2319     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    23202149    return $v_result;
    23212150  }
     
    23302159  function privAdd($p_filedescr_list, &$p_result_list, &$p_options)
    23312160  {
    2332     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAdd", "list");
    23332161    $v_result=1;
    23342162    $v_list_detail = array();
     
    23372165    if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0))
    23382166    {
    2339       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, or is empty, create it.");
    23402167
    23412168      // ----- Do a create
     
    23432170
    23442171      // ----- Return
    2345       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    23462172      return $v_result;
    23472173    }
     
    23502176
    23512177    // ----- Open the zip file
    2352     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    23532178    if (($v_result=$this->privOpenFd('rb')) != 1)
    23542179    {
     
    23572182
    23582183      // ----- Return
    2359       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    23602184      return $v_result;
    23612185    }
     
    23672191      $this->privCloseFd();
    23682192      $this->privSwapBackMagicQuotes();
    2369       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    23702193      return $v_result;
    23712194    }
    23722195
    23732196    // ----- Go to beginning of File
    2374     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
    23752197    @rewind($this->zip_fd);
    2376     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
    23772198
    23782199    // ----- Creates a temporay file
     
    23802201
    23812202    // ----- Open the temporary file in write mode
    2382     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    23832203    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
    23842204    {
     
    23892209
    23902210      // ----- Return
    2391       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    23922211      return PclZip::errorCode();
    23932212    }
     
    23992218    {
    24002219      $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");
    24022220      $v_buffer = fread($this->zip_fd, $v_read_size);
    24032221      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
     
    24222240
    24232241      // ----- Return
    2424       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    24252242      return $v_result;
    24262243    }
     
    24282245    // ----- Store the offset of the central dir
    24292246    $v_offset = @ftell($this->zip_fd);
    2430     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");
    24312247
    24322248    // ----- Copy the block of file headers from the old archive
     
    24352251    {
    24362252      $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");
    24382253      $v_buffer = @fread($v_zip_temp_fd, $v_read_size);
    24392254      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
     
    24532268
    24542269          // ----- Return
    2455           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    24562270          return $v_result;
    24572271        }
     
    24862300
    24872301      // ----- Return
    2488       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    24892302      return $v_result;
    24902303    }
     
    25142327
    25152328    // ----- Return
    2516     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    25172329    return $v_result;
    25182330  }
     
    25262338  function privOpenFd($p_mode)
    25272339  {
    2528     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOpenFd", 'mode='.$p_mode);
    25292340    $v_result=1;
    25302341
     
    25362347
    25372348      // ----- Return
    2538       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    25392349      return PclZip::errorCode();
    25402350    }
    25412351
    25422352    // ----- Open the zip file
    2543     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Open file in '.$p_mode.' mode');
    25442353    if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0)
    25452354    {
     
    25482357
    25492358      // ----- Return
    2550       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    25512359      return PclZip::errorCode();
    25522360    }
    25532361
    25542362    // ----- Return
    2555     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    25562363    return $v_result;
    25572364  }
     
    25652372  function privCloseFd()
    25662373  {
    2567     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCloseFd", "");
    25682374    $v_result=1;
    25692375
     
    25732379
    25742380    // ----- Return
    2575     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    25762381    return $v_result;
    25772382  }
     
    25942399  function privAddList($p_filedescr_list, &$p_result_list, &$p_options)
    25952400  {
    2596     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddList", "list");
    25972401    $v_result=1;
    25982402
     
    26022406    {
    26032407      // ----- Return
    2604       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    26052408      return $v_result;
    26062409    }
     
    26162419        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
    26172420          // ----- Return
    2618           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    26192421          return $v_result;
    26202422        }
     
    26422444
    26432445      // ----- Return
    2644       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    26452446      return $v_result;
    26462447    }
    26472448
    26482449    // ----- Return
    2649     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    26502450    return $v_result;
    26512451  }
     
    26562456  // Description :
    26572457  // Parameters :
    2658   //   $p_filedescr_list : An array containing the file description
     2458  //   $p_filedescr_list : An array containing the file description 
    26592459  //                      or directory names to add in the zip
    26602460  //   $p_result_list : list of added files with their properties (specially the status field)
     
    26632463  function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options)
    26642464  {
    2665     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFileList", "filedescr_list");
    26662465    $v_result=1;
    26672466    $v_header = array();
     
    26692468    // ----- Recuperate the current number of elt in list
    26702469    $v_nb = sizeof($p_result_list);
    2671     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Before add, list have ".$v_nb." elements");
    26722470
    26732471    // ----- Loop on the files
     
    26762474      $p_filedescr_list[$j]['filename']
    26772475      = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false);
    2678 
    2679       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for file '".$p_filedescr_list[$j]['filename']."'");
     2476     
    26802477
    26812478      // ----- Skip empty file names
    26822479      // TBC : Can this be possible ? not checked in DescrParseAtt ?
    26832480      if ($p_filedescr_list[$j]['filename'] == "") {
    2684         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Skip empty filename");
    26852481        continue;
    26862482      }
     
    26892485      if (   ($p_filedescr_list[$j]['type'] != 'virtual_file')
    26902486          && (!file_exists($p_filedescr_list[$j]['filename']))) {
    2691         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_filedescr_list[$j]['filename']."' does not exist");
    26922487        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());
    26942488        return PclZip::errorCode();
    26952489      }
     
    27102504                                       $p_options);
    27112505        if ($v_result != 1) {
    2712           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    27132506          return $v_result;
    27142507        }
     
    27182511      }
    27192512    }
    2720     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "After add, list have ".$v_nb." elements");
    27212513
    27222514    // ----- Return
    2723     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    27242515    return $v_result;
    27252516  }
     
    27342525  function privAddFile($p_filedescr, &$p_header, &$p_options)
    27352526  {
    2736     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFile", "filename='".$p_filedescr['filename']."'");
    27372527    $v_result=1;
    2738 
     2528   
    27392529    // ----- Working variable
    27402530    $p_filename = $p_filedescr['filename'];
     
    27462536
    27472537      // ----- Return
    2748       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    27492538      return PclZip::errorCode();
    27502539    }
    2751 
    2752     // ----- Look for a stored different filename
     2540 
     2541    // ----- Look for a stored different filename 
    27532542    /* TBC : Removed
    27542543    if (isset($p_filedescr['stored_filename'])) {
    27552544      $v_stored_filename = $p_filedescr['stored_filename'];
    2756       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is NOT the same "'.$v_stored_filename.'"');
    27572545    }
    27582546    else {
    27592547      $v_stored_filename = $p_filedescr['stored_filename'];
    2760       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is the same');
    27612548    }
    27622549    */
     
    27872574      $p_header['size'] = filesize($p_filename);
    27882575    }
    2789 
     2576   
    27902577    // ----- Look for regular folder
    27912578    else if ($p_filedescr['type']=='folder') {
     
    27942581      $p_header['size'] = filesize($p_filename);
    27952582    }
    2796 
     2583   
    27972584    // ----- Look for virtual file
    27982585    else if ($p_filedescr['type'] == 'virtual_file') {
     
    28002587      $p_header['size'] = strlen($p_filedescr['content']);
    28012588    }
    2802 
    2803     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header external extension '".sprintf("0x%X",$p_header['external'])."'");
     2589   
    28042590
    28052591    // ----- Look for filetime
    28062592    if (isset($p_filedescr['mtime'])) {
    2807       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Overload mtime value with :'".$p_filedescr['mtime']."'");
    28082593      $p_header['mtime'] = $p_filedescr['mtime'];
    28092594    }
    28102595    else if ($p_filedescr['type'] == 'virtual_file') {
    28112596      $p_header['mtime'] = time();
    2812       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Virtual file : use current time '".$p_header['mtime']."' for mtime value.");
    28132597    }
    28142598    else {
     
    28282612    // ----- Look for pre-add callback
    28292613    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");
    28312614
    28322615      // ----- Generate a local information
     
    28372620      // Here I do not use call_user_func() because I need to send a reference to the
    28382621      // header.
    2839       eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);');
     2622      $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header);
    28402623      if ($v_result == 0) {
    28412624        // ----- Change the file status
     
    28482631      if ($p_header['stored_filename'] != $v_local_header['stored_filename']) {
    28492632        $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']."'");
    28512633      }
    28522634    }
     
    28562638      $p_header['status'] = "filtered";
    28572639    }
    2858 
     2640   
    28592641    // ----- Check the path length
    28602642    if (strlen($p_header['stored_filename']) > 0xFF) {
     
    28682650      if ($p_filedescr['type'] == 'file') {
    28692651        // ----- Look for using temporary file to zip
    2870         if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF]))
     2652        if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
    28712653            && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
    28722654                || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
     
    28772659          }
    28782660        }
    2879 
     2661       
    28802662        // ----- Use "in memory" zip algo
    28812663        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");
    28862664
    28872665        // ----- Open the source file
    28882666        if (($v_file = @fopen($p_filename, "rb")) == 0) {
    28892667          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());
    28912668          return PclZip::errorCode();
    28922669        }
     
    28942671        // ----- Read the file content
    28952672        $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");
    28982673
    28992674        // ----- Close the file
     
    29022677        // ----- Calculate the CRC
    29032678        $p_header['crc'] = @crc32($v_content);
    2904 
     2679       
    29052680        // ----- Look for no compression
    29062681        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
    2907           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed");
    29082682          // ----- Set header parameters
    29092683          $p_header['compressed_size'] = $p_header['size'];
    29102684          $p_header['compression'] = 0;
    29112685        }
    2912 
     2686       
    29132687        // ----- Look for normal compression
    29142688        else {
    2915           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed");
    29162689          // ----- Compress the content
    29172690          $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");
    29202691
    29212692          // ----- Set header parameters
     
    29232694          $p_header['compression'] = 8;
    29242695        }
    2925 
     2696       
    29262697        // ----- Call the header generation
    29272698        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
    29282699          @fclose($v_file);
    2929           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    29302700          return $v_result;
    29312701        }
     
    29402710      // ----- Look for a virtual file (a file from string)
    29412711      else if ($p_filedescr['type'] == 'virtual_file') {
    2942 
    2943         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Add by string");
     2712         
    29442713        $v_content = $p_filedescr['content'];
    29452714
    29462715        // ----- Calculate the CRC
    29472716        $p_header['crc'] = @crc32($v_content);
    2948 
     2717       
    29492718        // ----- Look for no compression
    29502719        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
    2951           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed");
    29522720          // ----- Set header parameters
    29532721          $p_header['compressed_size'] = $p_header['size'];
    29542722          $p_header['compression'] = 0;
    29552723        }
    2956 
     2724       
    29572725        // ----- Look for normal compression
    29582726        else {
    2959           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed");
    29602727          // ----- Compress the content
    29612728          $v_content = @gzdeflate($v_content);
     
    29652732          $p_header['compression'] = 8;
    29662733        }
    2967 
     2734       
    29682735        // ----- Call the header generation
    29692736        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
    29702737          @fclose($v_file);
    2971           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    29722738          return $v_result;
    29732739        }
     
    29792745      // ----- Look for a directory
    29802746      else if ($p_filedescr['type'] == 'folder') {
    2981         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a folder");
    29822747        // ----- Look for directory last '/'
    29832748        if (@substr($p_header['stored_filename'], -1) != '/') {
     
    29932758        if (($v_result = $this->privWriteFileHeader($p_header)) != 1)
    29942759        {
    2995           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    29962760          return $v_result;
    29972761        }
     
    30012765    // ----- Look for post-add callback
    30022766    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");
    30042767
    30052768      // ----- Generate a local information
     
    30102773      // Here I do not use call_user_func() because I need to send a reference to the
    30112774      // header.
    3012       eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);');
     2775      $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header);
    30132776      if ($v_result == 0) {
    30142777        // ----- Ignored
     
    30212784
    30222785    // ----- Return
    3023     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    30242786    return $v_result;
    30252787  }
     
    30342796  function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options)
    30352797  {
    3036     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFileUsingTempFile", "filename='".$p_filedescr['filename']."'");
    30372798    $v_result=PCLZIP_ERR_NO_ERROR;
    3038 
     2799   
    30392800    // ----- Working variable
    30402801    $p_filename = $p_filedescr['filename'];
    30412802
    3042     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a file");
    30432803
    30442804    // ----- Open the source file
    30452805    if (($v_file = @fopen($p_filename, "rb")) == 0) {
    30462806      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());
    30482807      return PclZip::errorCode();
    30492808    }
     
    30542813      fclose($v_file);
    30552814      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());
    30572815      return PclZip::errorCode();
    30582816    }
     
    30622820    while ($v_size != 0) {
    30632821      $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");
    30652822      $v_buffer = @fread($v_file, $v_read_size);
    30662823      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
     
    30742831
    30752832    // ----- Check the minimum file size
    3076     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "gzip file size ".filesize($v_gzip_temp_name));
    30772833    if (filesize($v_gzip_temp_name) < 18) {
    30782834      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());
    30802835      return PclZip::errorCode();
    30812836    }
     
    30842839    if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) {
    30852840      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());
    30872841      return PclZip::errorCode();
    30882842    }
     
    30932847
    30942848    // ----- 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']));
    31022849    $v_data_header['os'] = bin2hex($v_data_header['os']);
    31032850
    31042851    // ----- Read the gzip file footer
    3105     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position after header ".ftell($v_file_compressed));
    31062852    @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));
    31082853    $v_binary_data = @fread($v_file_compressed, 8);
    3109     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position after footer ".ftell($v_file_compressed));
    31102854    $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data);
    31112855
     
    31142858    //$p_header['mtime'] = $v_data_header['mtime'];
    31152859    $p_header['crc'] = $v_data_footer['crc'];
    3116     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Compressed size ".(filesize($v_gzip_temp_name)-18));
    31172860    $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18;
    31182861
     
    31222865    // ----- Call the header generation
    31232866    if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
    3124       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    31252867      return $v_result;
    31262868    }
     
    31302872    {
    31312873      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());
    31332874      return PclZip::errorCode();
    31342875    }
     
    31362877    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
    31372878    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');
    31402879    $v_size = $p_header['compressed_size'];
    31412880    while ($v_size != 0)
    31422881    {
    31432882      $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");
    31452883      $v_buffer = @fread($v_file_compressed, $v_read_size);
    31462884      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
     
    31542892    // ----- Unlink the temporary file
    31552893    @unlink($v_gzip_temp_name);
    3156 
     2894   
    31572895    // ----- Return
    3158     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    31592896    return $v_result;
    31602897  }
     
    31712908  function privCalculateStoredFilename(&$p_filedescr, &$p_options)
    31722909  {
    3173     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCalculateStoredFilename", "filename='".$p_filedescr['filename']."'");
    31742910    $v_result=1;
    3175 
     2911   
    31762912    // ----- Working variables
    31772913    $p_filename = $p_filedescr['filename'];
     
    31882924      $p_remove_dir = '';
    31892925    }
    3190     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Remove path ='".$p_remove_dir."'");
    31912926    if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
    31922927      $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
     
    31952930      $p_remove_all_dir = 0;
    31962931    }
     2932
    31972933
    31982934    // ----- Look for full name change
     
    32002936      // ----- Remove drive letter if any
    32012937      $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']);
    3202       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Changing full name of '".$p_filename."' for '".$v_stored_filename."'");
    3203     }
    3204 
     2938    }
     2939   
    32052940    // ----- Look for path and/or short name change
    32062941    else {
     
    32152950        }
    32162951        $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."'");
    32182952      }
    32192953      else {
     
    32252959      if ($p_remove_all_dir) {
    32262960        $v_stored_filename = basename($p_filename);
    3227         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove all path selected change '".$p_filename."' for '".$v_stored_filename."'");
    32282961      }
    32292962      // ----- Look for partial path remove
    32302963      else if ($p_remove_dir != "") {
    3231         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Partial path to remove");
    32322964        if (substr($p_remove_dir, -1) != '/')
    32332965          $p_remove_dir .= "/";
     
    32352967        if (   (substr($p_filename, 0, 2) == "./")
    32362968            || (substr($p_remove_dir, 0, 2) == "./")) {
    3237 
     2969           
    32382970          if (   (substr($p_filename, 0, 2) == "./")
    32392971              && (substr($p_remove_dir, 0, 2) != "./")) {
     
    32512983          if ($v_compare == 2) {
    32522984            $v_stored_filename = "";
    3253             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Path to remove is the current folder");
    32542985          }
    32552986          else {
    3256             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove path '$p_remove_dir' in file '$v_stored_filename'");
    32572987            $v_stored_filename = substr($v_stored_filename,
    32582988                                        strlen($p_remove_dir));
    3259             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Result is '$v_stored_filename'");
    3260           }
    3261         }
    3262       }
    3263 
     2989          }
     2990        }
     2991      }
     2992     
    32642993      // ----- Remove drive letter if any
    32652994      $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename);
    3266 
     2995     
    32672996      // ----- Look for path to add
    32682997      if ($p_add_dir != "") {
     
    32713000        else
    32723001          $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'");
    32743002      }
    32753003    }
     
    32783006    $v_stored_filename = PclZipUtilPathReduction($v_stored_filename);
    32793007    $p_filedescr['stored_filename'] = $v_stored_filename;
    3280     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Stored filename will be '".$p_filedescr['stored_filename']."', strlen ".strlen($p_filedescr['stored_filename']));
    3281 
     3008   
    32823009    // ----- Return
    3283     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    32843010    return $v_result;
    32853011  }
     
    32943020  function privWriteFileHeader(&$p_header)
    32953021  {
    3296     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');
    32973022    $v_result=1;
    32983023
    32993024    // ----- Store the offset position of the file
    33003025    $p_header['offset'] = ftell($this->zip_fd);
    3301     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File offset of the header :'.$p_header['offset']);
    33023026
    33033027    // ----- 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']).'\'');
    33053028    $v_date = getdate($p_header['mtime']);
    33063029    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
     
    33303053
    33313054    // ----- Return
    3332     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    33333055    return $v_result;
    33343056  }
     
    33433065  function privWriteCentralFileHeader(&$p_header)
    33443066  {
    3345     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');
    33463067    $v_result=1;
    33473068
    33483069    // TBC
    33493070    //for(reset($p_header); $key = key($p_header); next($p_header)) {
    3350     //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "header[$key] = ".$p_header[$key]);
    33513071    //}
    33523072
    33533073    // ----- 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']).'\'');
    33553074    $v_date = getdate($p_header['mtime']);
    33563075    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
    33573076    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
    33583077
    3359     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$p_header['comment_len'].'\'');
    33603078
    33613079    // ----- Packed data
     
    33883106
    33893107    // ----- Return
    3390     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    33913108    return $v_result;
    33923109  }
     
    34013118  function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)
    34023119  {
    3403     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralHeader", 'nb_entries='.$p_nb_entries.', size='.$p_size.', offset='.$p_offset.', comment="'.$p_comment.'"');
    34043120    $v_result=1;
    34053121
     
    34193135
    34203136    // ----- Return
    3421     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    34223137    return $v_result;
    34233138  }
     
    34323147  function privList(&$p_list)
    34333148  {
    3434     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privList", "list");
    34353149    $v_result=1;
    34363150
     
    34393153
    34403154    // ----- Open the zip file
    3441     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    34423155    if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
    34433156    {
    34443157      // ----- Magic quotes trick
    34453158      $this->privSwapBackMagicQuotes();
    3446 
     3159     
    34473160      // ----- Error log
    34483161      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
    34493162
    34503163      // ----- Return
    3451       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    34523164      return PclZip::errorCode();
    34533165    }
     
    34583170    {
    34593171      $this->privSwapBackMagicQuotes();
    3460       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    34613172      return $v_result;
    34623173    }
    34633174
    34643175    // ----- 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)."'");
    34673176    @rewind($this->zip_fd);
    3468     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");
    34693177    if (@fseek($this->zip_fd, $v_central_dir['offset']))
    34703178    {
     
    34753183
    34763184      // ----- Return
    3477       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    34783185      return PclZip::errorCode();
    34793186    }
    3480     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");
    34813187
    34823188    // ----- Read each entry
     
    34873193      {
    34883194        $this->privSwapBackMagicQuotes();
    3489         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    34903195        return $v_result;
    34913196      }
     
    35043209
    35053210    // ----- Return
    3506     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    35073211    return $v_result;
    35083212  }
     
    35303234  function privConvertHeader2FileInfo($p_header, &$p_info)
    35313235  {
    3532     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privConvertHeader2FileInfo", "Filename='".$p_header['filename']."'");
    35333236    $v_result=1;
    35343237
     
    35483251
    35493252    // ----- Return
    3550     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    35513253    return $v_result;
    35523254  }
     
    35713273  function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
    35723274  {
    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')."'");
    35743275    $v_result=1;
    35753276
     
    35903291      while (substr($p_path, -1) == "/")
    35913292      {
    3592         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Destination path [$p_path] ends by '/'");
    35933293        $p_path = substr($p_path, 0, strlen($p_path)-1);
    3594         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Modified to [$p_path]");
    35953294      }
    35963295    }
     
    36043303
    36053304    // ----- Open the zip file
    3606     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    36073305    if (($v_result = $this->privOpenFd('rb')) != 1)
    36083306    {
    36093307      $this->privSwapBackMagicQuotes();
    3610       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    36113308      return $v_result;
    36123309    }
     
    36203317      $this->privSwapBackMagicQuotes();
    36213318
    3622       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    36233319      return $v_result;
    36243320    }
     
    36313327    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
    36323328    {
    3633       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry : '$i'");
    36343329
    36353330      // ----- Read next Central dir entry
    3636       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position before rewind : ".ftell($this->zip_fd)."'");
    36373331      @rewind($this->zip_fd);
    3638       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position after rewind : ".ftell($this->zip_fd)."'");
    36393332      if (@fseek($this->zip_fd, $v_pos_entry))
    36403333      {
     
    36473340
    36483341        // ----- Return
    3649         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    36503342        return PclZip::errorCode();
    36513343      }
    3652       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position after fseek : ".ftell($this->zip_fd)."'");
    36533344
    36543345      // ----- Read the file header
     
    36603351        $this->privSwapBackMagicQuotes();
    36613352
    3662         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    36633353        return $v_result;
    36643354      }
     
    36763366      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
    36773367          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
    3678           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");
    36793368
    36803369          // ----- Look if the filename is in the list
    36813370          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]."'");
    36833371
    36843372              // ----- Look for a directory
    36853373              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
    3686                   //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");
    36873374
    36883375                  // ----- Look if the directory is in the filename path
    36893376                  if (   (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
    36903377                      && (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");
    36923378                      $v_extract = true;
    36933379                  }
     
    36953381              // ----- Look for a filename
    36963382              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.");
    36983383                  $v_extract = true;
    36993384              }
     
    37023387
    37033388      // ----- Look for extract by ereg rule
     3389      // ereg() is deprecated with PHP 5.3
     3390      /*
    37043391      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
    37053392               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
    3706           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");
    37073393
    37083394          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) {
    3709               //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");
    37103395              $v_extract = true;
    37113396          }
    37123397      }
     3398      */
    37133399
    37143400      // ----- Look for extract by preg rule
    37153401      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
    37163402               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
    3717           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");
    37183403
    37193404          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");
    37213405              $v_extract = true;
    37223406          }
     
    37263410      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
    37273411               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
    3728           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'");
    3729 
     3412         
    37303413          // ----- Look if the index is in the list
    37313414          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']."]");
    37333415
    37343416              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");
    37363417                  $v_extract = true;
    37373418              }
    37383419              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");
    37403420                  $j_start = $j+1;
    37413421              }
    37423422
    37433423              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");
    37453424                  break;
    37463425              }
     
    37503429      // ----- Look for no rule, which means extract all the archive
    37513430      else {
    3752           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with no rule (extract all)");
    37533431          $v_extract = true;
    37543432      }
     
    37583436          && (   ($v_header['compression'] != 8)
    37593437              && ($v_header['compression'] != 0))) {
    3760           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported compression method (".$v_header['compression'].")");
    37613438          $v_header['status'] = 'unsupported_compression';
    37623439
     
    37643441          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
    37653442              && ($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");
    37673443
    37683444              $this->privSwapBackMagicQuotes();
    3769 
     3445             
    37703446              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION,
    37713447                                   "Filename '".$v_header['stored_filename']."' is "
     
    37733449                                   ."method (".$v_header['compression'].") ");
    37743450
    3775               //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    37763451              return PclZip::errorCode();
    37773452          }
    37783453      }
    3779 
     3454     
    37803455      // ----- Check encrypted files
    37813456      if (($v_extract) && (($v_header['flag'] & 1) == 1)) {
    3782           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported file encryption");
    37833457          $v_header['status'] = 'unsupported_encryption';
    37843458
     
    37863460          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
    37873461              && ($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");
    37893462
    37903463              $this->privSwapBackMagicQuotes();
     
    37953468                                   ."'");
    37963469
    3797               //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    37983470              return PclZip::errorCode();
    37993471          }
     
    38023474      // ----- Look for real extraction
    38033475      if (($v_extract) && ($v_header['status'] != 'ok')) {
    3804           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "No need for extract");
    38053476          $v_result = $this->privConvertHeader2FileInfo($v_header,
    38063477                                                $p_file_list[$v_nb_extracted++]);
     
    38083479              $this->privCloseFd();
    38093480              $this->privSwapBackMagicQuotes();
    3810               //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    38113481              return $v_result;
    38123482          }
     
    38143484          $v_extract = false;
    38153485      }
    3816 
     3486     
    38173487      // ----- Look for real extraction
    38183488      if ($v_extract)
    38193489      {
    3820         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file '".$v_header['filename']."', index '$i'");
    38213490
    38223491        // ----- Go to the file position
    3823         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");
    38243492        @rewind($this->zip_fd);
    3825         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");
    38263493        if (@fseek($this->zip_fd, $v_header['offset']))
    38273494        {
     
    38353502
    38363503          // ----- Return
    3837           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    38383504          return PclZip::errorCode();
    38393505        }
    3840         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");
    38413506
    38423507        // ----- Look for extraction as string
    38433508        if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) {
    38443509
     3510          $v_string = '';
     3511
    38453512          // ----- Extracting the file
    3846           $v_result1 = $this->privExtractFileAsString($v_header, $v_string);
     3513          $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options);
    38473514          if ($v_result1 < 1) {
    38483515            $this->privCloseFd();
    38493516            $this->privSwapBackMagicQuotes();
    3850             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
    38513517            return $v_result1;
    38523518          }
     
    38593525            $this->privSwapBackMagicQuotes();
    38603526
    3861             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    38623527            return $v_result;
    38633528          }
     
    38683533          // ----- Next extracted file
    38693534          $v_nb_extracted++;
    3870 
     3535         
    38713536          // ----- Look for user callback abort
    38723537          if ($v_result1 == 2) {
     
    38823547            $this->privCloseFd();
    38833548            $this->privSwapBackMagicQuotes();
    3884             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
    38853549            return $v_result1;
    38863550          }
     
    38903554            $this->privCloseFd();
    38913555            $this->privSwapBackMagicQuotes();
    3892             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    38933556            return $v_result;
    38943557          }
     
    39093572            $this->privCloseFd();
    39103573            $this->privSwapBackMagicQuotes();
    3911             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
    39123574            return $v_result1;
    39133575          }
     
    39203582            $this->privSwapBackMagicQuotes();
    39213583
    3922             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    39233584            return $v_result;
    39243585          }
     
    39373598
    39383599    // ----- Return
    3939     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    39403600    return $v_result;
    39413601  }
     
    39533613  function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
    39543614  {
    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')."'");
    39563615    $v_result=1;
    39573616
     
    39603619    {
    39613620      // ----- Return
    3962       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    39633621      return $v_result;
    39643622    }
    39653623
    3966     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");
    39673624
    39683625    // ----- Check that the file header is coherent with $p_entry info
     
    39753632        // ----- Look for folder entry that not need to be extracted
    39763633        if (($p_entry['external']&0x00000010)==0x00000010) {
    3977             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The entry is a folder : need to be filtered");
    39783634
    39793635            $p_entry['status'] = "filtered";
    39803636
    3981             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    39823637            return $v_result;
    39833638        }
    39843639
    3985         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "All path is removed");
    39863640        // ----- Get the basename of the path
    39873641        $p_entry['filename'] = basename($p_entry['filename']);
     
    39913645    else if ($p_remove_path != "")
    39923646    {
    3993       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look for some path to remove");
    39943647      if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2)
    39953648      {
    3996         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The folder is the same as the removed path '".$p_entry['filename']."'");
    39973649
    39983650        // ----- Change the file status
     
    40003652
    40013653        // ----- Return
    4002         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    40033654        return $v_result;
    40043655      }
     
    40073658      if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path)
    40083659      {
    4009         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '".$p_entry['filename']."'");
    40103660
    40113661        // ----- Remove the path
    40123662        $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size);
    40133663
    4014         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Resulting file is '".$p_entry['filename']."'");
    40153664      }
    40163665    }
     
    40203669      $p_entry['filename'] = $p_path."/".$p_entry['filename'];
    40213670    }
    4022 
     3671   
    40233672    // ----- Check a base_dir_restriction
    40243673    if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) {
    4025       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Check the extract directory restriction");
    40263674      $v_inclusion
    40273675      = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION],
    4028                                 $p_entry['filename']);
     3676                                $p_entry['filename']); 
    40293677      if ($v_inclusion == 0) {
    4030         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_EXTRACT_DIR_RESTRICTION is selected, file is outside restriction");
    40313678
    40323679        PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION,
     
    40343681                                 ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION");
    40353682
    4036         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    40373683        return PclZip::errorCode();
    40383684      }
     
    40413687    // ----- Look for pre-extract callback
    40423688    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");
    40443689
    40453690      // ----- Generate a local information
     
    40503695      // Here I do not use call_user_func() because I need to send a reference to the
    40513696      // header.
    4052       eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
     3697      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
    40533698      if ($v_result == 0) {
    40543699        // ----- Change the file status
     
    40563701        $v_result = 1;
    40573702      }
    4058 
     3703     
    40593704      // ----- Look for abort result
    40603705      if ($v_result == 2) {
    4061         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
    40623706        // ----- This status is internal and will be changed in 'skipped'
    40633707        $p_entry['status'] = "aborted";
     
    40683712      // Only some fields can be modified
    40693713      $p_entry['filename'] = $v_local_header['filename'];
    4070       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'");
    4071     }
    4072 
    4073     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'");
     3714    }
     3715
    40743716
    40753717    // ----- Look if extraction should be done
     
    40793721    if (file_exists($p_entry['filename']))
    40803722    {
    4081       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_entry['filename']."' already exists");
    40823723
    40833724      // ----- Look if file is a directory
    40843725      if (is_dir($p_entry['filename']))
    40853726      {
    4086         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is a directory");
    40873727
    40883728        // ----- Change the file status
    40893729        $p_entry['status'] = "already_a_directory";
    4090 
     3730       
    40913731        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
    40923732        // For historical reason first PclZip implementation does not stop
     
    40943734        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
    40953735            && ($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");
    40973736
    40983737            PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY,
     
    41003739                                 ."already used by an existing directory");
    41013740
    4102             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    41033741            return PclZip::errorCode();
    41043742            }
     
    41073745      else if (!is_writeable($p_entry['filename']))
    41083746      {
    4109         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is write protected");
    41103747
    41113748        // ----- Change the file status
     
    41173754        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
    41183755            && ($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");
    41203756
    41213757            PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
     
    41233759                                 ."and is write protected");
    41243760
    4125             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    41263761            return PclZip::errorCode();
    41273762            }
     
    41313766      else if (filemtime($p_entry['filename']) > $p_entry['mtime'])
    41323767      {
    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']).")");
    41343768        // ----- Change the file status
    41353769        if (   (isset($p_options[PCLZIP_OPT_REPLACE_NEWER]))
    41363770            && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) {
    4137             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_REPLACE_NEWER is selected, file will be replaced");
    41383771          }
    41393772            else {
    4140             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be replaced");
    41413773            $p_entry['status'] = "newer_exist";
    41423774
     
    41463778            if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
    41473779                && ($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");
    41493780
    41503781                PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
     
    41523783                        ."and option PCLZIP_OPT_REPLACE_NEWER is not selected");
    41533784
    4154                 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    41553785                return PclZip::errorCode();
    41563786              }
     
    41583788      }
    41593789      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']).")");
    41613790      }
    41623791    }
     
    41723801
    41733802        if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) {
    4174           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to create path for '".$p_entry['filename']."'");
    4175 
     3803 
    41763804          // ----- Change the file status
    41773805          $p_entry['status'] = "path_creation_fail";
    4178 
     3806 
    41793807          // ----- Return
    4180           ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    41813808          //return $v_result;
    41823809          $v_result = 1;
     
    41933820        // ----- Look for not compressed file
    41943821        if ($p_entry['compression'] == 0) {
    4195           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");
    41963822
    41973823              // ----- Opening destination file
    41983824          if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0)
    41993825          {
    4200             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");
    42013826
    42023827            // ----- Change the file status
     
    42043829
    42053830            // ----- Return
    4206             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    42073831            return $v_result;
    42083832          }
    42093833
    4210           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read '".$p_entry['size']."' bytes");
    42113834
    42123835          // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
     
    42153838          {
    42163839            $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");
    42183840            $v_buffer = @fread($this->zip_fd, $v_read_size);
    42193841            /* Try to speed up the code
     
    42213843            @fwrite($v_dest_file, $v_binary_data, $v_read_size);
    42223844            */
    4223             @fwrite($v_dest_file, $v_buffer, $v_read_size);
     3845            @fwrite($v_dest_file, $v_buffer, $v_read_size);           
    42243846            $v_size -= $v_read_size;
    42253847          }
     
    42303852          // ----- Change the file mtime
    42313853          touch($p_entry['filename'], $p_entry['mtime']);
    4232 
     3854         
    42333855
    42343856        }
    42353857        else {
    4236           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (Compression method ".$p_entry['compression'].")");
    42373858          // ----- TBC
    42383859          // Need to be finished
    42393860          if (($p_entry['flag'] & 1) == 1) {
    4240             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File is encrypted");
    42413861            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());
    42433862            return PclZip::errorCode();
    42443863          }
     
    42463865
    42473866          // ----- Look for using temporary file to unzip
    4248           if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF]))
     3867          if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
    42493868              && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
    42503869                  || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
     
    42553874            }
    42563875          }
    4257 
     3876         
    42583877          // ----- Look for extract in memory
    42593878          else {
    42603879
    4261             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read '".$p_entry['compressed_size']."' compressed bytes");
    4262 
     3880         
    42633881            // ----- Read the compressed file in a buffer (one shot)
    42643882            $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
    4265 
     3883           
    42663884            // ----- Decompress the file
    42673885            $v_file_content = @gzinflate($v_buffer);
    42683886            unset($v_buffer);
    42693887            if ($v_file_content === FALSE) {
    4270               //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to inflate compressed file");
    4271 
     3888 
    42723889              // ----- Change the file status
    42733890              // TBC
    42743891              $p_entry['status'] = "error";
    4275 
    4276               //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
     3892             
    42773893              return $v_result;
    42783894            }
    4279 
     3895           
    42803896            // ----- Opening destination file
    42813897            if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
    4282               //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");
    4283 
     3898 
    42843899              // ----- Change the file status
    42853900              $p_entry['status'] = "write_error";
    4286 
    4287               //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
     3901 
    42883902              return $v_result;
    42893903            }
    4290 
     3904 
    42913905            // ----- Write the uncompressed data
    42923906            @fwrite($v_dest_file, $v_file_content, $p_entry['size']);
    42933907            unset($v_file_content);
    4294 
     3908 
    42953909            // ----- Closing the destination file
    42963910            @fclose($v_dest_file);
    4297 
     3911           
    42983912          }
    42993913
     
    43043918        // ----- Look for chmod option
    43053919        if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) {
    4306           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "chmod option activated '".$p_options[PCLZIP_OPT_SET_CHMOD]."'");
    43073920
    43083921          // ----- Change the mode of the file
     
    43103923        }
    43113924
    4312         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");
    4313       }
    4314     }
    4315 
    4316     // ----- Change abort status
    4317     if ($p_entry['status'] == "aborted") {
    4318       $p_entry['status'] = "skipped";
    4319     }
    4320 
     3925      }
     3926    }
     3927
     3928    // ----- Change abort status
     3929    if ($p_entry['status'] == "aborted") {
     3930        $p_entry['status'] = "skipped";
     3931    }
     3932   
    43213933    // ----- Look for post-extract callback
    43223934    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");
    43243935
    43253936      // ----- Generate a local information
     
    43303941      // Here I do not use call_user_func() because I need to send a reference to the
    43313942      // header.
    4332       eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
     3943      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
    43333944
    43343945      // ----- Look for abort result
    43353946      if ($v_result == 2) {
    4336         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
    43373947        $v_result = PCLZIP_ERR_USER_ABORTED;
    43383948      }
     
    43403950
    43413951    // ----- Return
    4342     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    43433952    return $v_result;
    43443953  }
     
    43533962  function privExtractFileUsingTempFile(&$p_entry, &$p_options)
    43543963  {
    4355     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileUsingTempFile', "filename='".$p_entry['filename']."'");
    43563964    $v_result=1;
    4357 
     3965       
    43583966    // ----- Creates a temporary file
    43593967    $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
     
    43613969      fclose($v_file);
    43623970      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());
    43643971      return PclZip::errorCode();
    43653972    }
    43663973
    4367     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Start extraction of '".$p_entry['filename']."'");
    43683974
    43693975    // ----- Write gz file format header
     
    43733979    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
    43743980    $v_size = $p_entry['compressed_size'];
    4375     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Compressed Size :".$v_size."");
    43763981    while ($v_size != 0)
    43773982    {
    43783983      $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");
    43803984      $v_buffer = @fread($this->zip_fd, $v_read_size);
    43813985      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
     
    43933997    // ----- Opening destination file
    43943998    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");
    43963999      $p_entry['status'] = "write_error";
    4397       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    43984000      return $v_result;
    43994001    }
     
    44044006      $p_entry['status'] = "read_error";
    44054007      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());
    44074008      return PclZip::errorCode();
    44084009    }
    44094010
    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");
    44124011
    44134012    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
    44144013    $v_size = $p_entry['size'];
    4415     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size :".$v_size."");
    44164014    while ($v_size != 0) {
    44174015      $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");
    44194016      $v_buffer = @gzread($v_src_file, $v_read_size);
    44204017      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
     
    44274024    // ----- Delete the temporary file
    44284025    @unlink($v_gzip_temp_name);
    4429 
     4026   
    44304027    // ----- Return
    4431     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    44324028    return $v_result;
    44334029  }
     
    44424038  function privExtractFileInOutput(&$p_entry, &$p_options)
    44434039  {
    4444     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileInOutput', "");
    44454040    $v_result=1;
    44464041
    44474042    // ----- Read the file header
    44484043    if (($v_result = $this->privReadFileHeader($v_header)) != 1) {
    4449       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    44504044      return $v_result;
    44514045    }
    44524046
    4453     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");
    44544047
    44554048    // ----- Check that the file header is coherent with $p_entry info
     
    44604053    // ----- Look for pre-extract callback
    44614054    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");
    44634055
    44644056      // ----- Generate a local information
     
    44694061      // Here I do not use call_user_func() because I need to send a reference to the
    44704062      // header.
    4471       eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
     4063//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
     4064      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
    44724065      if ($v_result == 0) {
    44734066        // ----- Change the file status
     
    44784071      // ----- Look for abort result
    44794072      if ($v_result == 2) {
    4480         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
    44814073        // ----- This status is internal and will be changed in 'skipped'
    44824074        $p_entry['status'] = "aborted";
     
    44874079      // Only some fields can be modified
    44884080      $p_entry['filename'] = $v_local_header['filename'];
    4489       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'");
    44904081    }
    44914082
    44924083    // ----- Trace
    4493     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'");
    44944084
    44954085    // ----- Look if extraction should be done
     
    45004090        // ----- Look for not compressed file
    45014091        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");
    45044092
    45054093          // ----- Read the file in a buffer (one shot)
     
    45114099        }
    45124100        else {
    4513           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file");
    4514           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Reading '".$p_entry['size']."' bytes");
    45154101
    45164102          // ----- Read the compressed file in a buffer (one shot)
    45174103          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
    4518 
     4104         
    45194105          // ----- Decompress the file
    45204106          $v_file_content = gzinflate($v_buffer);
     
    45254111          unset($v_file_content);
    45264112        }
    4527         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");
    45284113      }
    45294114    }
     
    45364121    // ----- Look for post-extract callback
    45374122    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");
    45394123
    45404124      // ----- Generate a local information
     
    45454129      // Here I do not use call_user_func() because I need to send a reference to the
    45464130      // header.
    4547       eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
     4131      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
    45484132
    45494133      // ----- Look for abort result
    45504134      if ($v_result == 2) {
    4551         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
    45524135        $v_result = PCLZIP_ERR_USER_ABORTED;
    45534136      }
    45544137    }
    45554138
    4556     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    45574139    return $v_result;
    45584140  }
     
    45654147  // Return Values :
    45664148  // --------------------------------------------------------------------------------
    4567   function privExtractFileAsString(&$p_entry, &$p_string)
     4149  function privExtractFileAsString(&$p_entry, &$p_string, &$p_options)
    45684150  {
    4569     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileAsString', "p_entry['filename']='".$p_entry['filename']."'");
    45704151    $v_result=1;
    45714152
     
    45754156    {
    45764157      // ----- Return
    4577       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    45784158      return $v_result;
    45794159    }
    45804160
    4581     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");
    45824161
    45834162    // ----- Check that the file header is coherent with $p_entry info
     
    45864165    }
    45874166
    4588     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file in string (with path) '".$p_entry['filename']."', size '$v_header[size]'");
    4589 
    4590     // ----- Do the extraction (if not a folder)
    4591     if (!(($p_entry['external']&0x00000010)==0x00000010))
    4592     {
    4593       // ----- Look for not compressed file
    4594 //      if ($p_entry['compressed_size'] == $p_entry['size'])
    4595       if ($p_entry['compression'] == 0) {
    4596         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");
    4597         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes");
    4598 
    4599         // ----- Reading the file
    4600         $p_string = @fread($this->zip_fd, $p_entry['compressed_size']);
     4167    // ----- Look for pre-extract callback
     4168    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
     4169
     4170      // ----- Generate a local information
     4171      $v_local_header = array();
     4172      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
     4173
     4174      // ----- Call the callback
     4175      // Here I do not use call_user_func() because I need to send a reference to the
     4176      // header.
     4177      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
     4178      if ($v_result == 0) {
     4179        // ----- Change the file status
     4180        $p_entry['status'] = "skipped";
     4181        $v_result = 1;
     4182      }
     4183     
     4184      // ----- Look for abort result
     4185      if ($v_result == 2) {
     4186        // ----- This status is internal and will be changed in 'skipped'
     4187        $p_entry['status'] = "aborted";
     4188        $v_result = PCLZIP_ERR_USER_ABORTED;
     4189      }
     4190
     4191      // ----- Update the informations
     4192      // Only some fields can be modified
     4193      $p_entry['filename'] = $v_local_header['filename'];
     4194    }
     4195
     4196
     4197    // ----- Look if extraction should be done
     4198    if ($p_entry['status'] == 'ok') {
     4199
     4200      // ----- Do the extraction (if not a folder)
     4201      if (!(($p_entry['external']&0x00000010)==0x00000010)) {
     4202        // ----- Look for not compressed file
     4203  //      if ($p_entry['compressed_size'] == $p_entry['size'])
     4204        if ($p_entry['compression'] == 0) {
     4205 
     4206          // ----- Reading the file
     4207          $p_string = @fread($this->zip_fd, $p_entry['compressed_size']);
     4208        }
     4209        else {
     4210 
     4211          // ----- Reading the file
     4212          $v_data = @fread($this->zip_fd, $p_entry['compressed_size']);
     4213         
     4214          // ----- Decompress the file
     4215          if (($p_string = @gzinflate($v_data)) === FALSE) {
     4216              // TBC
     4217          }
     4218        }
     4219 
     4220        // ----- Trace
    46014221      }
    46024222      else {
    4603         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (compression method '".$p_entry['compression']."')");
    4604 
    4605         // ----- Reading the file
    4606         $v_data = @fread($this->zip_fd, $p_entry['compressed_size']);
    4607 
    4608         // ----- Decompress the file
    4609         if (($p_string = @gzinflate($v_data)) === FALSE) {
    4610             // TBC
    4611         }
    4612       }
    4613 
    4614       // ----- Trace
    4615       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");
    4616     }
    4617     else {
    4618         // TBC : error : can not extract a folder in a string
     4223          // TBC : error : can not extract a folder in a string
     4224      }
     4225     
     4226    }
     4227
     4228    // ----- Change abort status
     4229    if ($p_entry['status'] == "aborted") {
     4230        $p_entry['status'] = "skipped";
     4231    }
     4232   
     4233    // ----- Look for post-extract callback
     4234    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
     4235
     4236      // ----- Generate a local information
     4237      $v_local_header = array();
     4238      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
     4239     
     4240      // ----- Swap the content to header
     4241      $v_local_header['content'] = $p_string;
     4242      $p_string = '';
     4243
     4244      // ----- Call the callback
     4245      // Here I do not use call_user_func() because I need to send a reference to the
     4246      // header.
     4247      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
     4248
     4249      // ----- Swap back the content to header
     4250      $p_string = $v_local_header['content'];
     4251      unset($v_local_header['content']);
     4252
     4253      // ----- Look for abort result
     4254      if ($v_result == 2) {
     4255        $v_result = PCLZIP_ERR_USER_ABORTED;
     4256      }
    46194257    }
    46204258
    46214259    // ----- Return
    4622     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    46234260    return $v_result;
    46244261  }
     
    46334270  function privReadFileHeader(&$p_header)
    46344271  {
    4635     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadFileHeader", "");
    46364272    $v_result=1;
    46374273
    46384274    // ----- Read the 4 bytes signature
    46394275    $v_binary_data = @fread($this->zip_fd, 4);
    4640     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");
    46414276    $v_data = unpack('Vid', $v_binary_data);
    4642     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");
    46434277
    46444278    // ----- Check signature
    46454279    if ($v_data['id'] != 0x04034b50)
    46464280    {
    4647       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid File header");
    46484281
    46494282      // ----- Error log
     
    46514284
    46524285      // ----- Return
    4653       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    46544286      return PclZip::errorCode();
    46554287    }
     
    46634295      $p_header['filename'] = "";
    46644296      $p_header['status'] = "invalid_header";
    4665       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));
    46664297
    46674298      // ----- Error log
     
    46694300
    46704301      // ----- Return
    4671       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    46724302      return PclZip::errorCode();
    46734303    }
    46744304
    46754305    // ----- 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)."'");
    46784306    $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data);
    46794307
    46804308    // ----- Get filename
    4681     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "File name length : ".$v_data['filename_len']);
    46824309    $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']);
    4683     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename : \''.$p_header['filename'].'\'');
    46844310
    46854311    // ----- Get extra_fields
    4686     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extra field length : ".$v_data['extra_len']);
    46874312    if ($v_data['extra_len'] != 0) {
    46884313      $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']);
     
    46914316      $p_header['extra'] = '';
    46924317    }
    4693     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Extra field : \''.bin2hex($p_header['extra']).'\'');
    46944318
    46954319    // ----- Extract properties
    46964320    $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).'\'');
    46984321    $p_header['compression'] = $v_data['compression'];
    4699     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compression method : \''.$p_header['compression'].'\'');
    47004322    $p_header['size'] = $v_data['size'];
    4701     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_header['size'].'\'');
    47024323    $p_header['compressed_size'] = $v_data['compressed_size'];
    4703     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_header['compressed_size'].'\'');
    47044324    $p_header['crc'] = $v_data['crc'];
    4705     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\'');
    47064325    $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).'\'');
    47104326    $p_header['filename_len'] = $v_data['filename_len'];
    4711     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename_len : \''.$p_header['filename_len'].'\'');
    47124327
    47134328    // ----- Recuperate date in UNIX format
     
    47294344      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
    47304345
    4731       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
    47324346    }
    47334347    else
    47344348    {
    47354349      $p_header['mtime'] = time();
    4736       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
    47374350    }
    47384351
    47394352    // TBC
    47404353    //for(reset($v_data); $key = key($v_data); next($v_data)) {
    4741     //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Attribut[$key] = ".$v_data[$key]);
    47424354    //}
    47434355
     
    47494361
    47504362    // ----- Return
    4751     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    47524363    return $v_result;
    47534364  }
     
    47624373  function privReadCentralFileHeader(&$p_header)
    47634374  {
    4764     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadCentralFileHeader", "");
    47654375    $v_result=1;
    47664376
    47674377    // ----- Read the 4 bytes signature
    47684378    $v_binary_data = @fread($this->zip_fd, 4);
    4769     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");
    47704379    $v_data = unpack('Vid', $v_binary_data);
    4771     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");
    47724380
    47734381    // ----- Check signature
    47744382    if ($v_data['id'] != 0x02014b50)
    47754383    {
    4776       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid Central Dir File signature");
    47774384
    47784385      // ----- Error log
     
    47804387
    47814388      // ----- Return
    4782       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    47834389      return PclZip::errorCode();
    47844390    }
     
    47924398      $p_header['filename'] = "";
    47934399      $p_header['status'] = "invalid_header";
    4794       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));
    47954400
    47964401      // ----- Error log
     
    47984403
    47994404      // ----- Return
    4800       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    48014405      return PclZip::errorCode();
    48024406    }
    48034407
    48044408    // ----- 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)."'");
    48074409    $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);
    48084410
    48094411    // ----- Get filename
    4810     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File name length : ".$p_header['filename_len']);
    48114412    if ($p_header['filename_len'] != 0)
    48124413      $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']);
    48134414    else
    48144415      $p_header['filename'] = '';
    4815     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Filename : \''.$p_header['filename'].'\'');
    48164416
    48174417    // ----- Get extra
    4818     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Extra length : ".$p_header['extra_len']);
    48194418    if ($p_header['extra_len'] != 0)
    48204419      $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']);
    48214420    else
    48224421      $p_header['extra'] = '';
    4823     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Extra : \''.$p_header['extra'].'\'');
    48244422
    48254423    // ----- Get comment
    4826     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Comment length : ".$p_header['comment_len']);
    48274424    if ($p_header['comment_len'] != 0)
    48284425      $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']);
    48294426    else
    48304427      $p_header['comment'] = '';
    4831     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Comment : \''.$p_header['comment'].'\'');
    48324428
    48334429    // ----- 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'].'\'');
    48414430
    48424431    // ----- Recuperate date in UNIX format
     
    48584447      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
    48594448
    4860       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
    48614449    }
    48624450    else
    48634451    {
    48644452      $p_header['mtime'] = time();
    4865       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
    48664453    }
    48674454
     
    48734460
    48744461    // ----- 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').')');
    48774462    if (substr($p_header['filename'], -1) == '/') {
    48784463      //$p_header['external'] = 0x41FF0010;
    48794464      $p_header['external'] = 0x00000010;
    4880       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Force folder external : \''.sprintf("Ox%04X", $p_header['external']).'\'');
    4881     }
    4882 
    4883     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Header of filename : \''.$p_header['filename'].'\'');
     4465    }
     4466
    48844467
    48854468    // ----- Return
    4886     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    48874469    return $v_result;
    48884470  }
     
    48994481  function privCheckFileHeaders(&$p_local_header, &$p_central_header)
    49004482  {
    4901     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFileHeaders", "");
    49024483    $v_result=1;
    49034484
     
    49054486    // TBC
    49064487    if ($p_local_header['filename'] != $p_central_header['filename']) {
    4907           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename" : TBC To Be Completed');
    49084488    }
    49094489    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');
    49114490    }
    49124491    if ($p_local_header['flag'] != $p_central_header['flag']) {
    4913           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "flag" : TBC To Be Completed');
    49144492    }
    49154493    if ($p_local_header['compression'] != $p_central_header['compression']) {
    4916           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "compression" : TBC To Be Completed');
    49174494    }
    49184495    if ($p_local_header['mtime'] != $p_central_header['mtime']) {
    4919           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "mtime" : TBC To Be Completed');
    49204496    }
    49214497    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');
    49234498    }
    4924 
     4499 
    49254500    // ----- Look for flag bit 3
    49264501    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');
    49294502          $p_local_header['size'] = $p_central_header['size'];
    4930           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_local_header['size'].'\'');
    49314503          $p_local_header['compressed_size'] = $p_central_header['compressed_size'];
    4932           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_local_header['compressed_size'].'\'');
    49334504          $p_local_header['crc'] = $p_central_header['crc'];
    4934           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_local_header['crc']).'\'');
    49354505    }
    49364506
    49374507    // ----- Return
    4938     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    49394508    return $v_result;
    49404509  }
     
    49494518  function privReadEndCentralDir(&$p_central_dir)
    49504519  {
    4951     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadEndCentralDir", "");
    49524520    $v_result=1;
    49534521
    49544522    // ----- Go to the end of the zip file
    49554523    $v_size = filesize($this->zipname);
    4956     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size of the file :$v_size");
    49574524    @fseek($this->zip_fd, $v_size);
    4958     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position at end of zip file : \''.ftell($this->zip_fd).'\'');
    49594525    if (@ftell($this->zip_fd) != $v_size)
    49604526    {
     
    49634529
    49644530      // ----- Return
    4965       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    49664531      return PclZip::errorCode();
    49674532    }
     
    49714536    $v_found = 0;
    49724537    if ($v_size > 26) {
    4973       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Look for central dir with no comment');
    49744538      @fseek($this->zip_fd, $v_size-22);
    4975       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after min central position : \''.ftell($this->zip_fd).'\'');
    49764539      if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22))
    49774540      {
     
    49804543
    49814544        // ----- Return
    4982         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    49834545        return PclZip::errorCode();
    49844546      }
     
    49864548      // ----- Read for bytes
    49874549      $v_binary_data = @fread($this->zip_fd, 4);
    4988       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");
    49894550      $v_data = @unpack('Vid', $v_binary_data);
    4990       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");
    49914551
    49924552      // ----- Check signature
    49934553      if ($v_data['id'] == 0x06054b50) {
    4994         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found central dir at the default position.");
    49954554        $v_found = 1;
    49964555      }
     
    50014560    // ----- Go back to the maximum possible size of the Central Dir End Record
    50024561    if (!$v_found) {
    5003       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Start extended search of end central dir');
    50044562      $v_maximum_size = 65557; // 0xFFFF + 22;
    50054563      if ($v_maximum_size > $v_size)
     
    50124570
    50134571        // ----- Return
    5014         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    50154572        return PclZip::errorCode();
    50164573      }
    5017       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after max central position : \''.ftell($this->zip_fd).'\'');
    50184574
    50194575      // ----- Read byte per byte in order to find the signature
     
    50264582
    50274583        // -----  Add the byte
    5028         // $v_bytes = ($v_bytes << 8) | Ord($v_byte);
    5029         // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number
    5030         // Otherwise on systems where we have 64bit integers the check below for the magic number will fail.
    5031         $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte);
     4584        //$v_bytes = ($v_bytes << 8) | Ord($v_byte);
     4585        // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number 
     4586        // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. 
     4587        $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); 
    50324588
    50334589        // ----- Compare the bytes
    50344590        if ($v_bytes == 0x504b0506)
    50354591        {
    5036           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Found End Central Dir signature at position : \''.ftell($this->zip_fd).'\'');
    50374592          $v_pos++;
    50384593          break;
     
    50454600      if ($v_pos == $v_size)
    50464601      {
    5047         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to find End of Central Dir Record signature");
    50484602
    50494603        // ----- Error log
     
    50514605
    50524606        // ----- Return
    5053         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    50544607        return PclZip::errorCode();
    50554608      }
     
    50624615    if (strlen($v_binary_data) != 18)
    50634616    {
    5064       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));
    50654617
    50664618      // ----- Error log
     
    50684620
    50694621      // ----- Return
    5070       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    50714622      return PclZip::errorCode();
    50724623    }
    50734624
    50744625    // ----- 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)."'");
    50774626    $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data);
    50784627
    50794628    // ----- Check the global size
    5080     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Comment length : ".$v_data['comment_size']);
    50814629    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.");
    50834630
    50844631      // ----- Removed in release 2.2 see readme file
     
    50934640
    50944641      // ----- Return
    5095       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    50964642      return PclZip::errorCode();
    50974643      }
     
    50994645
    51004646    // ----- Get comment
    5101     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$v_data['comment_size'].'\'');
    51024647    if ($v_data['comment_size'] != 0) {
    51034648      $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']);
     
    51054650    else
    51064651      $p_central_dir['comment'] = '';
    5107     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\'');
    51084652
    51094653    $p_central_dir['entries'] = $v_data['entries'];
    5110     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries : \''.$p_central_dir['entries'].'\'');
    51114654    $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'].'\'');
    51134655    $p_central_dir['offset'] = $v_data['offset'];
    5114     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Offset of Central Dir : \''.$p_central_dir['offset'].'\'');
    51154656    $p_central_dir['size'] = $v_data['size'];
    5116     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size of Central Dir : \''.$p_central_dir['size'].'\'');
    51174657    $p_central_dir['disk'] = $v_data['disk'];
    5118     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Disk number : \''.$p_central_dir['disk'].'\'');
    51194658    $p_central_dir['disk_start'] = $v_data['disk_start'];
    5120     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Start disk number : \''.$p_central_dir['disk_start'].'\'');
    51214659
    51224660    // TBC
    51234661    //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]);
    51254662    //}
    51264663
    51274664    // ----- Return
    5128     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    51294665    return $v_result;
    51304666  }
     
    51394675  function privDeleteByRule(&$p_result_list, &$p_options)
    51404676  {
    5141     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDeleteByRule", "");
    51424677    $v_result=1;
    51434678    $v_list_detail = array();
    51444679
    51454680    // ----- Open the zip file
    5146     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    51474681    if (($v_result=$this->privOpenFd('rb')) != 1)
    51484682    {
    51494683      // ----- Return
    5150       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    51514684      return $v_result;
    51524685    }
     
    51574690    {
    51584691      $this->privCloseFd();
    5159       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    51604692      return $v_result;
    51614693    }
    51624694
    51634695    // ----- Go to beginning of File
    5164     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
    51654696    @rewind($this->zip_fd);
    5166     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
    51674697
    51684698    // ----- Scan all the files
    51694699    // ----- Start at beginning of Central Dir
    51704700    $v_pos_entry = $v_central_dir['offset'];
    5171     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");
    51724701    @rewind($this->zip_fd);
    5173     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");
    51744702    if (@fseek($this->zip_fd, $v_pos_entry))
    51754703    {
     
    51814709
    51824710      // ----- Return
    5183       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    51844711      return PclZip::errorCode();
    51854712    }
    5186     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");
    51874713
    51884714    // ----- Read each entry
     
    51914717    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
    51924718    {
    5193       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry (index '$i')");
    51944719
    51954720      // ----- Read the file header
     
    52004725        $this->privCloseFd();
    52014726
    5202         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    52034727        return $v_result;
    52044728      }
    52054729
    5206       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename (index '$i') : '".$v_header_list[$v_nb_extracted]['stored_filename']."'");
    52074730
    52084731      // ----- Store the index
     
    52154738      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
    52164739          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
    5217           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");
    52184740
    52194741          // ----- Look if the filename is in the list
    52204742          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]."'");
    52224743
    52234744              // ----- Look for a directory
    52244745              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
    5225                   //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");
    52264746
    52274747                  // ----- Look if the directory is in the filename path
    52284748                  if (   (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
    52294749                      && (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");
    52314750                      $v_found = true;
    52324751                  }
    52334752                  elseif (   (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */
    52344753                          && ($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");
    52364754                      $v_found = true;
    52374755                  }
     
    52394757              // ----- Look for a filename
    52404758              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.");
    52424759                  $v_found = true;
    52434760              }
     
    52464763
    52474764      // ----- Look for extract by ereg rule
     4765      // ereg() is deprecated with PHP 5.3
     4766      /*
    52484767      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
    52494768               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
    5250           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");
    52514769
    52524770          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");
    52544771              $v_found = true;
    52554772          }
    52564773      }
     4774      */
    52574775
    52584776      // ----- Look for extract by preg rule
    52594777      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
    52604778               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
    5261           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");
    52624779
    52634780          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");
    52654781              $v_found = true;
    52664782          }
     
    52704786      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
    52714787               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
    5272           //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'");
    52734788
    52744789          // ----- Look if the index is in the list
    52754790          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']."]");
    52774791
    52784792              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");
    52804793                  $v_found = true;
    52814794              }
    52824795              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");
    52844796                  $j_start = $j+1;
    52854797              }
    52864798
    52874799              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");
    52894800                  break;
    52904801              }
     
    52924803      }
    52934804      else {
    5294         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "No argument mean remove all file");
    52954805        $v_found = true;
    52964806      }
     
    52994809      if ($v_found)
    53004810      {
    5301         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' need to be deleted");
    53024811        unset($v_header_list[$v_nb_extracted]);
    53034812      }
    53044813      else
    53054814      {
    5306         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' will not be deleted");
    53074815        $v_nb_extracted++;
    53084816      }
     
    53194827
    53204828        // ----- Open the temporary zip file in write mode
    5321         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary write mode");
    53224829        if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) {
    53234830            $this->privCloseFd();
    53244831
    53254832            // ----- Return
    5326             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    53274833            return $v_result;
    53284834        }
     
    53304836        // ----- Look which file need to be kept
    53314837        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']."'");
    53334838
    53344839            // ----- 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)."'");
    53374840            @rewind($this->zip_fd);
    5338             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");
    53394841            if (@fseek($this->zip_fd,  $v_header_list[$i]['offset'])) {
    53404842                // ----- Close the zip file
     
    53474849
    53484850                // ----- Return
    5349                 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    53504851                return PclZip::errorCode();
    53514852            }
    5352             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");
    53534853
    53544854            // ----- Read the file header
     
    53614861
    53624862                // ----- Return
    5363                 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    53644863                return $v_result;
    53654864            }
    5366 
     4865           
    53674866            // ----- Check that local file header is same as central file header
    53684867            if ($this->privCheckFileHeaders($v_local_header,
     
    53804879
    53814880                // ----- Return
    5382                 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    53834881                return $v_result;
    53844882            }
    5385             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset for this file is '".$v_header_list[$i]['offset']."'");
    53864883
    53874884            // ----- Read/write the data block
     
    53934890
    53944891                // ----- Return
    5395                 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    53964892                return $v_result;
    53974893            }
     
    54004896        // ----- Store the offset of the central dir
    54014897        $v_offset = @ftell($v_temp_zip->zip_fd);
    5402         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "New offset of central dir : $v_offset");
    54034898
    54044899        // ----- Re-Create the Central Dir files header
    5405         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the new central directory");
    54064900        for ($i=0; $i<sizeof($v_header_list); $i++) {
    54074901            // ----- Create the file header
    5408             //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset of file : ".$v_header_list[$i]['offset']);
    54094902            if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
    54104903                $v_temp_zip->privCloseFd();
     
    54134906
    54144907                // ----- Return
    5415                 //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    54164908                return $v_result;
    54174909            }
     
    54214913        }
    54224914
    5423         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the central directory footer");
    54244915
    54254916        // ----- Zip file comment
     
    54414932
    54424933            // ----- Return
    5443             //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    54444934            return $v_result;
    54454935        }
     
    54574947        //@rename($v_zip_temp_name, $this->zipname);
    54584948        PclZipUtilRename($v_zip_temp_name, $this->zipname);
    5459 
     4949   
    54604950        // ----- Destroy the temporary archive
    54614951        unset($v_temp_zip);
    54624952    }
    5463 
     4953   
    54644954    // ----- Remove every files : reset the file
    54654955    else if ($v_central_dir['entries'] != 0) {
     
    54674957
    54684958        if (($v_result = $this->privOpenFd('wb')) != 1) {
    5469           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    54704959          return $v_result;
    54714960        }
    54724961
    54734962        if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) {
    5474           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    54754963          return $v_result;
    54764964        }
     
    54804968
    54814969    // ----- Return
    5482     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    54834970    return $v_result;
    54844971  }
     
    55004987    $v_result = 1;
    55014988
    5502     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDirCheck", "entry='$p_dir', is_dir='".($p_is_dir?"true":"false")."'");
    55034989
    55044990    // ----- Remove the final '/'
     
    55074993      $p_dir = substr($p_dir, 0, strlen($p_dir)-1);
    55084994    }
    5509     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for entry '$p_dir'");
    55104995
    55114996    // ----- Check the directory availability
    55124997    if ((is_dir($p_dir)) || ($p_dir == ""))
    55134998    {
    5514       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, "'$p_dir' is a directory");
    55154999      return 1;
    55165000    }
     
    55185002    // ----- Extract parent directory
    55195003    $p_parent_dir = dirname($p_dir);
    5520     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Parent directory is '$p_parent_dir'");
    55215004
    55225005    // ----- Just a check
     
    55285011        if (($v_result = $this->privDirCheck($p_parent_dir)) != 1)
    55295012        {
    5530           //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    55315013          return $v_result;
    55325014        }
     
    55355017
    55365018    // ----- Create the directory
    5537     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Create directory '$p_dir'");
    55385019    if (!@mkdir($p_dir, 0777))
    55395020    {
     
    55425023
    55435024      // ----- Return
    5544       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    55455025      return PclZip::errorCode();
    55465026    }
    55475027
    55485028    // ----- Return
    5549     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result, "Directory '$p_dir' created");
    55505029    return $v_result;
    55515030  }
     
    55615040  function privMerge(&$p_archive_to_add)
    55625041  {
    5563     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privMerge", "archive='".$p_archive_to_add->zipname."'");
    55645042    $v_result=1;
    55655043
     
    55675045    if (!is_file($p_archive_to_add->zipname))
    55685046    {
    5569       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to add does not exist. End of merge.");
    55705047
    55715048      // ----- Nothing to merge, so merge is a success
     
    55735050
    55745051      // ----- Return
    5575       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    55765052      return $v_result;
    55775053    }
     
    55805056    if (!is_file($this->zipname))
    55815057    {
    5582       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, duplicate the archive_to_add.");
    55835058
    55845059      // ----- Do a duplicate
     
    55865061
    55875062      // ----- Return
    5588       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    55895063      return $v_result;
    55905064    }
    55915065
    55925066    // ----- Open the zip file
    5593     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    55945067    if (($v_result=$this->privOpenFd('rb')) != 1)
    55955068    {
    55965069      // ----- Return
    5597       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    55985070      return $v_result;
    55995071    }
     
    56045076    {
    56055077      $this->privCloseFd();
    5606       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    56075078      return $v_result;
    56085079    }
    56095080
    56105081    // ----- Go to beginning of File
    5611     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");
    56125082    @rewind($this->zip_fd);
    5613     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");
    56145083
    56155084    // ----- Open the archive_to_add file
    5616     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open archive_to_add in binary read mode");
    56175085    if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1)
    56185086    {
     
    56205088
    56215089      // ----- Return
    5622       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    56235090      return $v_result;
    56245091    }
     
    56315098      $p_archive_to_add->privCloseFd();
    56325099
    5633       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    56345100      return $v_result;
    56355101    }
    56365102
    56375103    // ----- Go to beginning of File
    5638     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'");
    56395104    @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)."'");
    56415105
    56425106    // ----- Creates a temporay file
     
    56445108
    56455109    // ----- Open the temporary file in write mode
    5646     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    56475110    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
    56485111    {
     
    56535116
    56545117      // ----- Return
    5655       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    56565118      return PclZip::errorCode();
    56575119    }
     
    56635125    {
    56645126      $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");
    56665127      $v_buffer = fread($this->zip_fd, $v_read_size);
    56675128      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
     
    56745135    {
    56755136      $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");
    56775137      $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size);
    56785138      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
     
    56825142    // ----- Store the offset of the central dir
    56835143    $v_offset = @ftell($v_zip_temp_fd);
    5684     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");
    56855144
    56865145    // ----- Copy the block of file headers from the old archive
     
    56895148    {
    56905149      $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");
    56925150      $v_buffer = @fread($this->zip_fd, $v_read_size);
    56935151      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
     
    57005158    {
    57015159      $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");
    57035160      $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size);
    57045161      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
     
    57315188
    57325189      // ----- Return
    5733       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    57345190      return $v_result;
    57355191    }
     
    57575213
    57585214    // ----- Return
    5759     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    57605215    return $v_result;
    57615216  }
     
    57705225  function privDuplicate($p_archive_filename)
    57715226  {
    5772     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDuplicate", "archive_filename='$p_archive_filename'");
    57735227    $v_result=1;
    57745228
     
    57765230    if (!is_file($p_archive_filename))
    57775231    {
    5778       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to duplicate does not exist. End of duplicate.");
    57795232
    57805233      // ----- Nothing to duplicate, so duplicate is a success.
     
    57825235
    57835236      // ----- Return
    5784       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    57855237      return $v_result;
    57865238    }
    57875239
    57885240    // ----- Open the zip file
    5789     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    57905241    if (($v_result=$this->privOpenFd('wb')) != 1)
    57915242    {
    57925243      // ----- Return
    5793       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    57945244      return $v_result;
    57955245    }
    57965246
    57975247    // ----- Open the temporary file in write mode
    5798     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
    57995248    if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0)
    58005249    {
     
    58045253
    58055254      // ----- Return
    5806       //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
    58075255      return PclZip::errorCode();
    58085256    }
     
    58145262    {
    58155263      $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");
    58175264      $v_buffer = fread($v_zip_temp_fd, $v_read_size);
    58185265      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
     
    58275274
    58285275    // ----- Return
    5829     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    58305276    return $v_result;
    58315277  }
     
    58745320  function privDisableMagicQuotes()
    58755321  {
    5876     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privDisableMagicQuotes', "");
    58775322    $v_result=1;
    58785323
     
    58805325    if (   (!function_exists("get_magic_quotes_runtime"))
    58815326        || (!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);
    58845327      return $v_result;
    58855328    }
     
    58875330    // ----- Look if already done
    58885331    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);
    58915332      return $v_result;
    58925333    }
     
    58945335    // ----- Get and memorize the magic_quote value
    58955336    $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')."'");
    58975337
    58985338    // ----- Disable magic_quotes
    58995339    if ($this->magic_quotes_status == 1) {
    5900       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Disable magic_quotes");
    59015340      @set_magic_quotes_runtime(0);
    59025341    }
    59035342
    59045343    // ----- Return
    5905     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    59065344    return $v_result;
    59075345  }
     
    59165354  function privSwapBackMagicQuotes()
    59175355  {
    5918     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privSwapBackMagicQuotes', "");
    59195356    $v_result=1;
    59205357
     
    59225359    if (   (!function_exists("get_magic_quotes_runtime"))
    59235360        || (!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);
    59265361      return $v_result;
    59275362    }
     
    59295364    // ----- Look if something to do
    59305365    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);
    59335366      return $v_result;
    59345367    }
     
    59365369    // ----- Swap back magic_quotes
    59375370    if ($this->magic_quotes_status == 1) {
    5938       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Enable back magic_quotes");
    59395371      @set_magic_quotes_runtime($this->magic_quotes_status);
    59405372    }
    59415373
    59425374    // ----- Return
    5943     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    59445375    return $v_result;
    59455376  }
     
    59585389  function PclZipUtilPathReduction($p_dir)
    59595390  {
    5960     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathReduction", "dir='$p_dir'");
    59615391    $v_result = "";
    59625392
     
    59855415                // TBC
    59865416                $v_result = $p_dir;
    5987                 //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid path is unchanged");
    59885417                $v_skip = 0;
    59895418            }
     
    60095438        }
    60105439      }
    6011 
     5440     
    60125441      // ----- Look for skip
    60135442      if ($v_skip > 0) {
     
    60205449
    60215450    // ----- Return
    6022     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    60235451    return $v_result;
    60245452  }
     
    60425470  function PclZipUtilPathInclusion($p_dir, $p_path)
    60435471  {
    6044     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathInclusion", "dir='$p_dir', path='$p_path'");
    60455472    $v_result = 1;
    6046 
     5473   
    60475474    // ----- Look for path beginning by ./
    60485475    if (   ($p_dir == '.')
    60495476        || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) {
    60505477      $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."'");
    60525478    }
    60535479    if (   ($p_path == '.')
    60545480        || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) {
    60555481      $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."'");
    60575482    }
    60585483
     
    60675492    $j = 0;
    60685493    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]."'");
    60705494
    60715495      // ----- Look for empty dir (path reduction)
     
    60815505      // ----- Compare the items
    60825506      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");
    60845507        $v_result = 0;
    60855508      }
     
    60925515    // ----- Look if everything seems to be the same
    60935516    if ($v_result) {
    6094       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Look for tie break");
    60955517      // ----- Skip all the empty items
    60965518      while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++;
    60975519      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]:'')."'");
    60995520
    61005521      if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) {
     
    61095530
    61105531    // ----- Return
    6111     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    61125532    return $v_result;
    61135533  }
     
    61275547  function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0)
    61285548  {
    6129     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilCopyBlock", "size=$p_size, mode=$p_mode");
    61305549    $v_result = 1;
    61315550
    61325551    if ($p_mode==0)
    61335552    {
    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)));
    61365553      while ($p_size != 0)
    61375554      {
    61385555        $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");
    61405556        $v_buffer = @fread($p_src, $v_read_size);
    61415557        @fwrite($p_dest, $v_buffer, $v_read_size);
    61425558        $p_size -= $v_read_size;
    61435559      }
    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)));
    61465560    }
    61475561    else if ($p_mode==1)
     
    61505564      {
    61515565        $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");
    61535566        $v_buffer = @gzread($p_src, $v_read_size);
    61545567        @fwrite($p_dest, $v_buffer, $v_read_size);
     
    61615574      {
    61625575        $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");
    61645576        $v_buffer = @fread($p_src, $v_read_size);
    61655577        @gzwrite($p_dest, $v_buffer, $v_read_size);
     
    61725584      {
    61735585        $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");
    61755586        $v_buffer = @gzread($p_src, $v_read_size);
    61765587        @gzwrite($p_dest, $v_buffer, $v_read_size);
     
    61805591
    61815592    // ----- Return
    6182     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    61835593    return $v_result;
    61845594  }
     
    61995609  function PclZipUtilRename($p_src, $p_dest)
    62005610  {
    6201     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilRename", "source=$p_src, destination=$p_dest");
    62025611    $v_result = 1;
    62035612
    62045613    // ----- Try to rename the files
    62055614    if (!@rename($p_src, $p_dest)) {
    6206       //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to rename file, try copy+unlink");
    62075615
    62085616      // ----- Try to copy & unlink the src
    62095617      if (!@copy($p_src, $p_dest)) {
    6210         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to copy file");
    62115618        $v_result = 0;
    62125619      }
    62135620      else if (!@unlink($p_src)) {
    6214         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to unlink old filename");
    62155621        $v_result = 0;
    62165622      }
     
    62185624
    62195625    // ----- Return
    6220     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    62215626    return $v_result;
    62225627  }
     
    62345639  function PclZipUtilOptionText($p_option)
    62355640  {
    6236     //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilOptionText", "option='".$p_option."'");
    6237 
     5641   
    62385642    $v_list = get_defined_constants();
    62395643    for (reset($v_list); $v_key = key($v_list); next($v_list)) {
     
    62435647           || ($v_prefix == 'PCLZIP_ATT'))
    62445648            && ($v_list[$v_key] == $p_option)) {
    6245         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_key);
    62465649        return $v_key;
    62475650        }
    62485651    }
    6249 
     5652   
    62505653    $v_result = 'Unknown';
    62515654
    6252     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
    62535655    return $v_result;
    62545656  }
Note: See TracChangeset for help on using the changeset viewer.