<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre, #msg p { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[11993] trunk/wp-admin/includes/class-pclzip.php: Update pclzip to 2.8.
 2 - Fixes #10650 and #10777.</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/11993">11993</a></dd>
<dt>Author</dt> <dd>westi</dd>
<dt>Date</dt> <dd>2009-10-01 21:04:57 +0000 (Thu, 01 Oct 2009)</dd>
</dl>

<h3>Log Message</h3>
<pre>Update pclzip to 2.8.2 - Fixes <a href="http://trac.wordpress.org/ticket/10650">#10650</a> and <a href="http://trac.wordpress.org/ticket/10777">#10777</a>.
Includes:
 * Removal of eval()s
 * Merge WordPress 64 bit fix upstream</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadminincludesclasspclzipphp">trunk/wp-admin/includes/class-pclzip.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadminincludesclasspclzipphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/includes/class-pclzip.php (11992 => 11993)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/includes/class-pclzip.php        2009-10-01 19:59:35 UTC (rev 11992)
+++ trunk/wp-admin/includes/class-pclzip.php        2009-10-01 21:04:57 UTC (rev 11993)
</span><span class="lines">@@ -1,8 +1,8 @@
</span><span class="cx"> &lt;?php
</span><span class="cx"> // --------------------------------------------------------------------------------
</span><del>-// PhpConcept Library - Zip Module 2.8
</del><ins>+// PhpConcept Library - Zip Module 2.8.2
</ins><span class="cx"> // --------------------------------------------------------------------------------
</span><del>-// License GNU/LGPL - Vincent Blavet - March 2006
</del><ins>+// License GNU/LGPL - Vincent Blavet - August 2009
</ins><span class="cx"> // http://www.phpconcept.net
</span><span class="cx"> // --------------------------------------------------------------------------------
</span><span class="cx"> //
</span><span class="lines">@@ -22,14 +22,14 @@
</span><span class="cx"> //   The use of this software is at the risk of the user.
</span><span class="cx"> //
</span><span class="cx"> // --------------------------------------------------------------------------------
</span><del>-// $Id: pclzip.lib.php,v 1.55 2009/04/22 07:38:36 vblavet Exp $
</del><ins>+// $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $
</ins><span class="cx"> // --------------------------------------------------------------------------------
</span><span class="cx"> 
</span><span class="cx">   // ----- Constants
</span><span class="cx">   if (!defined('PCLZIP_READ_BLOCK_SIZE')) {
</span><span class="cx">     define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );
</span><span class="cx">   }
</span><del>-
</del><ins>+  
</ins><span class="cx">   // ----- File list separator
</span><span class="cx">   // In version 1.x of PclZip, the separator for file list is a space
</span><span class="cx">   // (which is not a very smart choice, specifically for windows paths !).
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> 
</span><span class="cx">   // ----- Optional threshold ratio for use of temporary files
</span><span class="cx">   //       Pclzip sense the size of the file to add/extract and decide to
</span><del>-  //       use or not temporary file. The algorythm is looking for
</del><ins>+  //       use or not temporary file. The algorythm is looking for 
</ins><span class="cx">   //       memory_limit of PHP and apply a ratio.
</span><span class="cx">   //       threshold = memory_limit * ratio.
</span><span class="cx">   //       Recommended values are under 0.5. Default 0.47.
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> // --------------------------------------------------------------------------------
</span><span class="cx"> 
</span><span class="cx">   // ----- Global variables
</span><del>-  $g_pclzip_version = &quot;2.8&quot;;
</del><ins>+  $g_pclzip_version = &quot;2.8.2&quot;;
</ins><span class="cx"> 
</span><span class="cx">   // ----- Error codes
</span><span class="cx">   //   -1 : Unable to open file in binary write mode
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx">   define( 'PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021 ); // alias
</span><span class="cx">   define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 );
</span><span class="cx">   define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias
</span><del>-
</del><ins>+  
</ins><span class="cx">   // ----- File description attributes
</span><span class="cx">   define( 'PCLZIP_ATT_FILE_NAME', 79001 );
</span><span class="cx">   define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );
</span><span class="lines">@@ -198,7 +198,7 @@
</span><span class="cx">     // ----- Internal error handling
</span><span class="cx">     var $error_code = 1;
</span><span class="cx">     var $error_string = '';
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Current status of the magic_quotes_runtime
</span><span class="cx">     // This value store the php configuration for magic_quotes
</span><span class="cx">     // The class can then disable the magic_quotes and reset it after
</span><span class="lines">@@ -214,12 +214,10 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function PclZip($p_zipname)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::PclZip', &quot;zipname=$p_zipname&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Tests the zlib
</span><span class="cx">     if (!function_exists('gzopen'))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 1, &quot;zlib extension seems to be missing&quot;);
</del><span class="cx">       die('Abort '.basename(__FILE__).' : Missing zlib extensions');
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -229,7 +227,6 @@
</span><span class="cx">     $this-&gt;magic_quotes_status = -1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 1);
</del><span class="cx">     return;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -273,7 +270,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function create($p_filelist)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::create', &quot;filelist='$p_filelist', ...&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Reset the error handler
</span><span class="lines">@@ -285,7 +281,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for variable options arguments
</span><span class="cx">     $v_size = func_num_args();
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;$v_size arguments passed to the method&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Look for arguments
</span><span class="cx">     if ($v_size &gt; 1) {
</span><span class="lines">@@ -298,7 +293,6 @@
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for first arg
</span><span class="cx">       if ((is_integer($v_arg_list[0])) &amp;&amp; ($v_arg_list[0] &gt; 77000)) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Variable list of options detected&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Parse the options
</span><span class="cx">         $v_result = $this-&gt;privParseOptions($v_arg_list, $v_size, $v_options,
</span><span class="lines">@@ -315,7 +309,6 @@
</span><span class="cx">                                                    //, PCLZIP_OPT_CRYPT =&gt; 'optional'
</span><span class="cx">                                              ));
</span><span class="cx">         if ($v_result != 1) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">           return 0;
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="lines">@@ -324,7 +317,6 @@
</span><span class="cx">       // Here we need to support the first historic synopsis of the
</span><span class="cx">       // method.
</span><span class="cx">       else {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Static synopsis&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Get the first argument
</span><span class="cx">         $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0];
</span><span class="lines">@@ -336,12 +328,11 @@
</span><span class="cx">         else if ($v_size &gt; 2) {
</span><span class="cx">           PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
</span><span class="cx">                                        &quot;Invalid number / type of arguments&quot;);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">           return 0;
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Look for default option values
</span><span class="cx">     $this-&gt;privOptionDefaultThreshold($v_options);
</span><span class="cx"> 
</span><span class="lines">@@ -350,16 +341,16 @@
</span><span class="cx">     $v_att_list = array();
</span><span class="cx">     $v_filedescr_list = array();
</span><span class="cx">     $p_result_list = array();
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Look if the $p_filelist is really an array
</span><span class="cx">     if (is_array($p_filelist)) {
</span><del>-
</del><ins>+    
</ins><span class="cx">       // ----- Look if the first element is also an array
</span><span class="cx">       //       This will mean that this is a file description entry
</span><span class="cx">       if (isset($p_filelist[0]) &amp;&amp; is_array($p_filelist[0])) {
</span><span class="cx">         $v_att_list = $p_filelist;
</span><span class="cx">       }
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- The list is a list of string names
</span><span class="cx">       else {
</span><span class="cx">         $v_string_list = $p_filelist;
</span><span class="lines">@@ -375,10 +366,9 @@
</span><span class="cx">     // ----- Invalid variable type for $p_filelist
</span><span class="cx">     else {
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Invalid variable type p_filelist&quot;);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return 0;
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Reformat the string list
</span><span class="cx">     if (sizeof($v_string_list) != 0) {
</span><span class="cx">       foreach ($v_string_list as $v_string) {
</span><span class="lines">@@ -386,11 +376,10 @@
</span><span class="cx">           $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
</span><span class="cx">         }
</span><span class="cx">         else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Ignore an empty filename&quot;);
</del><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- For each file in the list check the attributes
</span><span class="cx">     $v_supported_attributes
</span><span class="cx">     = array ( PCLZIP_ATT_FILE_NAME =&gt; 'mandatory'
</span><span class="lines">@@ -406,7 +395,6 @@
</span><span class="cx">                                                $v_options,
</span><span class="cx">                                                $v_supported_attributes);
</span><span class="cx">       if ($v_result != 1) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">         return 0;
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="lines">@@ -414,19 +402,16 @@
</span><span class="cx">     // ----- Expand the filelist (expand directories)
</span><span class="cx">     $v_result = $this-&gt;privFileDescrExpand($v_filedescr_list, $v_options);
</span><span class="cx">     if ($v_result != 1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Call the create fct
</span><span class="cx">     $v_result = $this-&gt;privCreate($v_filedescr_list, $p_result_list, $v_options);
</span><span class="cx">     if ($v_result != 1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);
</del><span class="cx">     return $p_result_list;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -468,7 +453,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function add($p_filelist)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::add', &quot;filelist='$p_filelist', ...&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Reset the error handler
</span><span class="lines">@@ -480,7 +464,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for variable options arguments
</span><span class="cx">     $v_size = func_num_args();
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;$v_size arguments passed to the method&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Look for arguments
</span><span class="cx">     if ($v_size &gt; 1) {
</span><span class="lines">@@ -493,7 +476,6 @@
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for first arg
</span><span class="cx">       if ((is_integer($v_arg_list[0])) &amp;&amp; ($v_arg_list[0] &gt; 77000)) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Variable list of options detected&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Parse the options
</span><span class="cx">         $v_result = $this-&gt;privParseOptions($v_arg_list, $v_size, $v_options,
</span><span class="lines">@@ -512,7 +494,6 @@
</span><span class="cx">                                                    //, PCLZIP_OPT_CRYPT =&gt; 'optional'
</span><span class="cx">                                                                                                    ));
</span><span class="cx">         if ($v_result != 1) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">           return 0;
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="lines">@@ -521,7 +502,6 @@
</span><span class="cx">       // Here we need to support the first historic synopsis of the
</span><span class="cx">       // method.
</span><span class="cx">       else {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Static synopsis&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Get the first argument
</span><span class="cx">         $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0];
</span><span class="lines">@@ -535,7 +515,6 @@
</span><span class="cx">           PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Invalid number / type of arguments&quot;);
</span><span class="cx"> 
</span><span class="cx">           // ----- Return
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">           return 0;
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="lines">@@ -549,16 +528,16 @@
</span><span class="cx">     $v_att_list = array();
</span><span class="cx">     $v_filedescr_list = array();
</span><span class="cx">     $p_result_list = array();
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Look if the $p_filelist is really an array
</span><span class="cx">     if (is_array($p_filelist)) {
</span><del>-
</del><ins>+    
</ins><span class="cx">       // ----- Look if the first element is also an array
</span><span class="cx">       //       This will mean that this is a file description entry
</span><span class="cx">       if (isset($p_filelist[0]) &amp;&amp; is_array($p_filelist[0])) {
</span><span class="cx">         $v_att_list = $p_filelist;
</span><span class="cx">       }
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- The list is a list of string names
</span><span class="cx">       else {
</span><span class="cx">         $v_string_list = $p_filelist;
</span><span class="lines">@@ -574,17 +553,16 @@
</span><span class="cx">     // ----- Invalid variable type for $p_filelist
</span><span class="cx">     else {
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Invalid variable type '&quot;.gettype($p_filelist).&quot;' for p_filelist&quot;);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return 0;
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Reformat the string list
</span><span class="cx">     if (sizeof($v_string_list) != 0) {
</span><span class="cx">       foreach ($v_string_list as $v_string) {
</span><span class="cx">         $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
</span><span class="cx">       }
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- For each file in the list check the attributes
</span><span class="cx">     $v_supported_attributes
</span><span class="cx">     = array ( PCLZIP_ATT_FILE_NAME =&gt; 'mandatory'
</span><span class="lines">@@ -600,7 +578,6 @@
</span><span class="cx">                                                $v_options,
</span><span class="cx">                                                $v_supported_attributes);
</span><span class="cx">       if ($v_result != 1) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">         return 0;
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="lines">@@ -608,19 +585,16 @@
</span><span class="cx">     // ----- Expand the filelist (expand directories)
</span><span class="cx">     $v_result = $this-&gt;privFileDescrExpand($v_filedescr_list, $v_options);
</span><span class="cx">     if ($v_result != 1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Call the create fct
</span><span class="cx">     $v_result = $this-&gt;privAdd($v_filedescr_list, $p_result_list, $v_options);
</span><span class="cx">     if ($v_result != 1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);
</del><span class="cx">     return $p_result_list;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -668,7 +642,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function listContent()
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::listContent', &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Reset the error handler
</span><span class="lines">@@ -676,7 +649,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Check archive
</span><span class="cx">     if (!$this-&gt;privCheckFormat()) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -685,12 +657,10 @@
</span><span class="cx">     if (($v_result = $this-&gt;privList($p_list)) != 1)
</span><span class="cx">     {
</span><span class="cx">       unset($p_list);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
</del><span class="cx">       return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
</del><span class="cx">     return $p_list;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -729,7 +699,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function extract()
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::extract&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Reset the error handler
</span><span class="lines">@@ -737,7 +706,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Check archive
</span><span class="cx">     if (!$this-&gt;privCheckFormat()) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -750,7 +718,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for variable options arguments
</span><span class="cx">     $v_size = func_num_args();
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;$v_size arguments passed to the method&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Default values for option
</span><span class="cx">     $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
</span><span class="lines">@@ -762,7 +729,6 @@
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for first arg
</span><span class="cx">       if ((is_integer($v_arg_list[0])) &amp;&amp; ($v_arg_list[0] &gt; 77000)) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Variable list of options&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Parse the options
</span><span class="cx">         $v_result = $this-&gt;privParseOptions($v_arg_list, $v_size, $v_options,
</span><span class="lines">@@ -787,7 +753,6 @@
</span><span class="cx">                                                    PCLZIP_OPT_TEMP_FILE_OFF =&gt; 'optional'
</span><span class="cx">                                                                                                     ));
</span><span class="cx">         if ($v_result != 1) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">           return 0;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -814,7 +779,6 @@
</span><span class="cx">       // Here we need to support the first historic synopsis of the
</span><span class="cx">       // method.
</span><span class="cx">       else {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Static synopsis&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Get the first argument
</span><span class="cx">         $v_path = $v_arg_list[0];
</span><span class="lines">@@ -828,7 +792,6 @@
</span><span class="cx">           PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Invalid number / type of arguments&quot;);
</span><span class="cx"> 
</span><span class="cx">           // ----- Return
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
</del><span class="cx">           return 0;
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="lines">@@ -838,7 +801,6 @@
</span><span class="cx">     $this-&gt;privOptionDefaultThreshold($v_options);
</span><span class="cx"> 
</span><span class="cx">     // ----- Trace
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;path='$v_path', remove_path='$v_remove_path', remove_all_path='&quot;.($v_remove_path?'true':'false').&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Call the extracting fct
</span><span class="cx">     $p_list = array();
</span><span class="lines">@@ -846,12 +808,10 @@
</span><span class="cx">                                              $v_remove_all_path, $v_options);
</span><span class="cx">     if ($v_result &lt; 1) {
</span><span class="cx">       unset($p_list);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
</del><span class="cx">       return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
</del><span class="cx">     return $p_list;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -896,7 +856,6 @@
</span><span class="cx">   //function extractByIndex($p_index, options...)
</span><span class="cx">   function extractByIndex($p_index)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::extractByIndex&quot;, &quot;index='$p_index', ...&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Reset the error handler
</span><span class="lines">@@ -904,7 +863,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Check archive
</span><span class="cx">     if (!$this-&gt;privCheckFormat()) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -917,7 +875,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for variable options arguments
</span><span class="cx">     $v_size = func_num_args();
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;$v_size arguments passed to the method&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Default values for option
</span><span class="cx">     $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
</span><span class="lines">@@ -933,7 +890,6 @@
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for first arg
</span><span class="cx">       if ((is_integer($v_arg_list[0])) &amp;&amp; ($v_arg_list[0] &gt; 77000)) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Variable list of options&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Parse the options
</span><span class="cx">         $v_result = $this-&gt;privParseOptions($v_arg_list, $v_size, $v_options,
</span><span class="lines">@@ -953,7 +909,6 @@
</span><span class="cx">                                                    PCLZIP_OPT_TEMP_FILE_OFF =&gt; 'optional'
</span><span class="cx">                                                                                                    ));
</span><span class="cx">         if ($v_result != 1) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">           return 0;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -976,10 +931,8 @@
</span><span class="cx">         }
</span><span class="cx">         if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {
</span><span class="cx">           $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Option PCLZIP_OPT_EXTRACT_AS_STRING not set.&quot;);
</del><span class="cx">         }
</span><span class="cx">         else {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Option PCLZIP_OPT_EXTRACT_AS_STRING set.&quot;);
</del><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -987,7 +940,6 @@
</span><span class="cx">       // Here we need to support the first historic synopsis of the
</span><span class="cx">       // method.
</span><span class="cx">       else {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Static synopsis&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Get the first argument
</span><span class="cx">         $v_path = $v_arg_list[0];
</span><span class="lines">@@ -1001,14 +953,12 @@
</span><span class="cx">           PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Invalid number / type of arguments&quot;);
</span><span class="cx"> 
</span><span class="cx">           // ----- Return
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">           return 0;
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Trace
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;index='$p_index', path='$v_path', remove_path='$v_remove_path', remove_all_path='&quot;.($v_remove_path?'true':'false').&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Trick
</span><span class="cx">     // Here I want to reuse extractByRule(), so I need to parse the $p_index
</span><span class="lines">@@ -1018,7 +968,6 @@
</span><span class="cx">     $v_result = $this-&gt;privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick,
</span><span class="cx">                                         array (PCLZIP_OPT_BY_INDEX =&gt; 'optional' ));
</span><span class="cx">     if ($v_result != 1) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">         return 0;
</span><span class="cx">     }
</span><span class="cx">     $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];
</span><span class="lines">@@ -1028,12 +977,10 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Call the extracting fct
</span><span class="cx">     if (($v_result = $this-&gt;privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) &lt; 1) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
</del><span class="cx">         return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
</del><span class="cx">     return $p_list;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -1049,7 +996,7 @@
</span><span class="cx">   // Options :
</span><span class="cx">   //   PCLZIP_OPT_BY_INDEX :
</span><span class="cx">   //   PCLZIP_OPT_BY_NAME :
</span><del>-  //   PCLZIP_OPT_BY_EREG :
</del><ins>+  //   PCLZIP_OPT_BY_EREG : 
</ins><span class="cx">   //   PCLZIP_OPT_BY_PREG :
</span><span class="cx">   // Return Values :
</span><span class="cx">   //   0 on failure,
</span><span class="lines">@@ -1058,7 +1005,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function delete()
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::delete&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Reset the error handler
</span><span class="lines">@@ -1066,7 +1012,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Check archive
</span><span class="cx">     if (!$this-&gt;privCheckFormat()) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1075,7 +1020,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for variable options arguments
</span><span class="cx">     $v_size = func_num_args();
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;$v_size arguments passed to the method&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Look for arguments
</span><span class="cx">     if ($v_size &gt; 0) {
</span><span class="lines">@@ -1089,7 +1033,6 @@
</span><span class="cx">                                                PCLZIP_OPT_BY_PREG =&gt; 'optional',
</span><span class="cx">                                                PCLZIP_OPT_BY_INDEX =&gt; 'optional' ));
</span><span class="cx">       if ($v_result != 1) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">           return 0;
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="lines">@@ -1102,7 +1045,6 @@
</span><span class="cx">     if (($v_result = $this-&gt;privDeleteByRule($v_list, $v_options)) != 1) {
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx">       unset($v_list);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
</del><span class="cx">       return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1110,7 +1052,6 @@
</span><span class="cx">     $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_list);
</del><span class="cx">     return $v_list;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -1123,12 +1064,10 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function deleteByIndex($p_index)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::deleteByIndex&quot;, &quot;index='$p_index'&quot;);
-
</del><ins>+    
</ins><span class="cx">     $p_list = $this-&gt;delete(PCLZIP_OPT_BY_INDEX, $p_index);
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
</del><span class="cx">     return $p_list;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -1149,7 +1088,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function properties()
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::properties&quot;, &quot;&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Reset the error handler
</span><span class="cx">     $this-&gt;privErrorReset();
</span><span class="lines">@@ -1160,7 +1098,6 @@
</span><span class="cx">     // ----- Check archive
</span><span class="cx">     if (!$this-&gt;privCheckFormat()) {
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1174,16 +1111,14 @@
</span><span class="cx">     if (@is_file($this-&gt;zipname))
</span><span class="cx">     {
</span><span class="cx">       // ----- Open the zip file
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">       if (($this-&gt;zip_fd = @fopen($this-&gt;zipname, 'rb')) == 0)
</span><span class="cx">       {
</span><span class="cx">         $this-&gt;privSwapBackMagicQuotes();
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Error log
</span><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this-&gt;zipname.'\' in binary read mode');
</span><span class="cx"> 
</span><span class="cx">         // ----- Return
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), 0);
</del><span class="cx">         return 0;
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -1192,7 +1127,6 @@
</span><span class="cx">       if (($v_result = $this-&gt;privReadEndCentralDir($v_central_dir)) != 1)
</span><span class="cx">       {
</span><span class="cx">         $this-&gt;privSwapBackMagicQuotes();
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">         return 0;
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -1209,7 +1143,6 @@
</span><span class="cx">     $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_prop);
</del><span class="cx">     return $v_prop;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -1228,7 +1161,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function duplicate($p_archive)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::duplicate&quot;, &quot;&quot;);
</del><span class="cx">     $v_result = 1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Reset the error handler
</span><span class="lines">@@ -1237,7 +1169,6 @@
</span><span class="cx">     // ----- Look if the $p_archive is a PclZip object
</span><span class="cx">     if ((is_object($p_archive)) &amp;&amp; (get_class($p_archive) == 'pclzip'))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;The parameter is valid PclZip object '&quot;.$p_archive-&gt;zipname.&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Duplicate the archive
</span><span class="cx">       $v_result = $this-&gt;privDuplicate($p_archive-&gt;zipname);
</span><span class="lines">@@ -1246,7 +1177,6 @@
</span><span class="cx">     // ----- Look if the $p_archive is a string (so a filename)
</span><span class="cx">     else if (is_string($p_archive))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;The parameter is a filename '$p_archive'&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Check that $p_archive is a valid zip file
</span><span class="cx">       // TBC : Should also check the archive format
</span><span class="lines">@@ -1270,7 +1200,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -1291,7 +1220,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function merge($p_archive_to_add)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::merge&quot;, &quot;&quot;);
</del><span class="cx">     $v_result = 1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Reset the error handler
</span><span class="lines">@@ -1299,14 +1227,12 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Check archive
</span><span class="cx">     if (!$this-&gt;privCheckFormat()) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
</del><span class="cx">       return(0);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if the $p_archive_to_add is a PclZip object
</span><span class="cx">     if ((is_object($p_archive_to_add)) &amp;&amp; (get_class($p_archive_to_add) == 'pclzip'))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The parameter is valid PclZip object&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Merge the archive
</span><span class="cx">       $v_result = $this-&gt;privMerge($p_archive_to_add);
</span><span class="lines">@@ -1315,7 +1241,6 @@
</span><span class="cx">     // ----- Look if the $p_archive_to_add is a string (so a filename)
</span><span class="cx">     else if (is_string($p_archive_to_add))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The parameter is a filename&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Create a temporary archive
</span><span class="cx">       $v_object_archive = new PclZip($p_archive_to_add);
</span><span class="lines">@@ -1333,7 +1258,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -1448,7 +1372,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privCheckFormat($p_level=0)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privCheckFormat&quot;, &quot;&quot;);
</del><span class="cx">     $v_result = true;
</span><span class="cx"> 
</span><span class="cx">         // ----- Reset the file system cache
</span><span class="lines">@@ -1461,7 +1384,6 @@
</span><span class="cx">     if (!is_file($this-&gt;zipname)) {
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, &quot;Missing archive file '&quot;.$this-&gt;zipname.&quot;'&quot;);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());
</del><span class="cx">       return(false);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1469,7 +1391,6 @@
</span><span class="cx">     if (!is_readable($this-&gt;zipname)) {
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, &quot;Unable to read archive '&quot;.$this-&gt;zipname.&quot;'&quot;);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());
</del><span class="cx">       return(false);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1483,7 +1404,6 @@
</span><span class="cx">     // TBC
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -1505,13 +1425,11 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privParseOptions(&amp;$p_options_list, $p_size, &amp;$v_result_list, $v_requested_options=false)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privParseOptions&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Read the options
</span><span class="cx">     $i=0;
</span><span class="cx">     while ($i&lt;$p_size) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Looking for table index $i, option = '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;(&quot;.$p_options_list[$i].&quot;)'&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Check if the option is supported
</span><span class="cx">       if (!isset($v_requested_options[$p_options_list[$i]])) {
</span><span class="lines">@@ -1519,7 +1437,6 @@
</span><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Invalid optional parameter '&quot;.$p_options_list[$i].&quot;' for this method&quot;);
</span><span class="cx"> 
</span><span class="cx">         // ----- Return
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">         return PclZip::errorCode();
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -1535,13 +1452,11 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, &quot;Missing parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           // ----- Get the value
</span><span class="cx">           $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">           $i++;
</span><span class="cx">         break;
</span><span class="cx"> 
</span><span class="lines">@@ -1549,28 +1464,24 @@
</span><span class="cx">           // ----- Check the number of parameters
</span><span class="cx">           if (($i+1) &gt;= $p_size) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, &quot;Missing parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           // ----- Check for incompatible options
</span><span class="cx">           if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           // ----- Check the value
</span><span class="cx">           $v_value = $p_options_list[$i+1];
</span><span class="cx">           if ((!is_integer($v_value)) || ($v_value&lt;0)) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, &quot;Integer expected for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           // ----- Get the value (and convert it in bytes)
</span><span class="cx">           $v_result_list[$p_options_list[$i]] = $v_value*1048576;
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">           $i++;
</span><span class="cx">         break;
</span><span class="cx"> 
</span><span class="lines">@@ -1578,30 +1489,25 @@
</span><span class="cx">           // ----- Check for incompatible options
</span><span class="cx">           if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           $v_result_list[$p_options_list[$i]] = true;
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">         break;
</span><span class="cx"> 
</span><span class="cx">         case PCLZIP_OPT_TEMP_FILE_OFF :
</span><span class="cx">           // ----- Check for incompatible options
</span><span class="cx">           if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx">           // ----- Check for incompatible options
</span><span class="cx">           if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           $v_result_list[$p_options_list[$i]] = true;
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">         break;
</span><span class="cx"> 
</span><span class="cx">         case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION :
</span><span class="lines">@@ -1611,7 +1517,6 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, &quot;Missing parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -1619,11 +1524,9 @@
</span><span class="cx">           if (   is_string($p_options_list[$i+1])
</span><span class="cx">               &amp;&amp; ($p_options_list[$i+1] != '')) {
</span><span class="cx">             $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">             $i++;
</span><span class="cx">           }
</span><span class="cx">           else {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; set with an empty value is ignored.&quot;);
</del><span class="cx">           }
</span><span class="cx">         break;
</span><span class="cx"> 
</span><span class="lines">@@ -1635,7 +1538,6 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, &quot;Missing parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -1651,15 +1553,16 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, &quot;Wrong parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><del>-          ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">           $i++;
</span><span class="cx">         break;
</span><span class="cx"> 
</span><span class="cx">         // ----- Look for options that request an EREG or PREG expression
</span><span class="cx">         case PCLZIP_OPT_BY_EREG :
</span><ins>+          // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG
+          // to PCLZIP_OPT_BY_PREG
+          $p_options_list[$i] = PCLZIP_OPT_BY_PREG;
</ins><span class="cx">         case PCLZIP_OPT_BY_PREG :
</span><span class="cx">         //case PCLZIP_OPT_CRYPT :
</span><span class="cx">           // ----- Check the number of parameters
</span><span class="lines">@@ -1668,7 +1571,6 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, &quot;Missing parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -1681,10 +1583,8 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, &quot;Wrong parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">           $i++;
</span><span class="cx">         break;
</span><span class="cx"> 
</span><span class="lines">@@ -1701,7 +1601,6 @@
</span><span class="cx">                                                                  .&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -1717,10 +1616,8 @@
</span><span class="cx">                                                                  .&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">           $i++;
</span><span class="cx">         break;
</span><span class="cx"> 
</span><span class="lines">@@ -1732,14 +1629,12 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, &quot;Missing parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           // ----- Get the value
</span><span class="cx">           $v_work_list = array();
</span><span class="cx">           if (is_string($p_options_list[$i+1])) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Index value is a string '&quot;.$p_options_list[$i+1].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">               // ----- Remove spaces
</span><span class="cx">               $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', '');
</span><span class="lines">@@ -1748,11 +1643,9 @@
</span><span class="cx">               $v_work_list = explode(&quot;,&quot;, $p_options_list[$i+1]);
</span><span class="cx">           }
</span><span class="cx">           else if (is_integer($p_options_list[$i+1])) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Index value is an integer '&quot;.$p_options_list[$i+1].&quot;'&quot;);
</del><span class="cx">               $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1];
</span><span class="cx">           }
</span><span class="cx">           else if (is_array($p_options_list[$i+1])) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Index value is an array&quot;);
</del><span class="cx">               $v_work_list = $p_options_list[$i+1];
</span><span class="cx">           }
</span><span class="cx">           else {
</span><span class="lines">@@ -1760,10 +1653,9 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, &quot;Value must be integer, string or array for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           // ----- Reduce the index list
</span><span class="cx">           // each index item in the list must be a couple with a start and
</span><span class="cx">           // an end value : [0,3], [5-5], [8-10], ...
</span><span class="lines">@@ -1774,10 +1666,10 @@
</span><span class="cx">               // ----- Explode the item
</span><span class="cx">               $v_item_list = explode(&quot;-&quot;, $v_work_list[$j]);
</span><span class="cx">               $v_size_item_list = sizeof($v_item_list);
</span><del>-
</del><ins>+              
</ins><span class="cx">               // ----- TBC : Here we might check that each item is a
</span><span class="cx">               // real integer ...
</span><del>-
</del><ins>+              
</ins><span class="cx">               // ----- Look for single value
</span><span class="cx">               if ($v_size_item_list == 1) {
</span><span class="cx">                   // ----- Set the option value
</span><span class="lines">@@ -1794,15 +1686,12 @@
</span><span class="cx">                   PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, &quot;Too many values in index range for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">                   // ----- Return
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">                   return PclZip::errorCode();
</span><span class="cx">               }
</span><span class="cx"> 
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extracted index item = [&quot;.$v_result_list[$p_options_list[$i]][$j]['start'].&quot;,&quot;.$v_result_list[$p_options_list[$i]][$j]['end'].&quot;]&quot;);
</del><span class="cx"> 
</span><span class="cx">               // ----- Look for list sort
</span><span class="cx">               if ($v_result_list[$p_options_list[$i]][$j]['start'] &lt; $v_sort_value) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The list should be sorted ...&quot;);
</del><span class="cx">                   $v_sort_flag=true;
</span><span class="cx"> 
</span><span class="cx">                   // ----- TBC : An automatic sort should be writen ...
</span><span class="lines">@@ -1810,16 +1699,14 @@
</span><span class="cx">                   PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, &quot;Invalid order of index range for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">                   // ----- Return
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">                   return PclZip::errorCode();
</span><span class="cx">               }
</span><span class="cx">               $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           // ----- Sort the items
</span><span class="cx">           if ($v_sort_flag) {
</span><span class="cx">               // TBC : To Be Completed
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;List sorting is not yet write ...&quot;);
</del><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           // ----- Next option
</span><span class="lines">@@ -1834,7 +1721,6 @@
</span><span class="cx">         case PCLZIP_OPT_REPLACE_NEWER :
</span><span class="cx">         case PCLZIP_OPT_STOP_ON_ERROR :
</span><span class="cx">           $v_result_list[$p_options_list[$i]] = true;
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">         break;
</span><span class="cx"> 
</span><span class="cx">         // ----- Look for options that request an octal value
</span><span class="lines">@@ -1845,13 +1731,11 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, &quot;Missing parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           // ----- Get the value
</span><span class="cx">           $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_result_list[$p_options_list[$i]].&quot;'&quot;);
</del><span class="cx">           $i++;
</span><span class="cx">         break;
</span><span class="cx"> 
</span><span class="lines">@@ -1872,13 +1756,11 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, &quot;Missing parameter value for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           // ----- Get the value
</span><span class="cx">           $v_function_name = $p_options_list[$i+1];
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;call-back &quot;.PclZipUtilOptionText($p_options_list[$i]).&quot; = '&quot;.$v_function_name.&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Check that the value is a valid existing function
</span><span class="cx">           if (!function_exists($v_function_name)) {
</span><span class="lines">@@ -1886,7 +1768,6 @@
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, &quot;Function '&quot;.$v_function_name.&quot;()' is not an existing function for option '&quot;.PclZipUtilOptionText($p_options_list[$i]).&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -1902,7 +1783,6 @@
</span><span class="cx">                                                            .$p_options_list[$i].&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">           // ----- Return
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">           return PclZip::errorCode();
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -1915,28 +1795,24 @@
</span><span class="cx">       for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
</span><span class="cx">         // ----- Look for mandatory option
</span><span class="cx">         if ($v_requested_options[$key] == 'mandatory') {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Detect a mandatory option : &quot;.PclZipUtilOptionText($key).&quot;(&quot;.$key.&quot;)&quot;);
</del><span class="cx">           // ----- Look if present
</span><span class="cx">           if (!isset($v_result_list[$key])) {
</span><span class="cx">             // ----- Error log
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Missing mandatory parameter &quot;.PclZipUtilOptionText($key).&quot;(&quot;.$key.&quot;)&quot;);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Look for default values
</span><span class="cx">     if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,&quot;Calculate auto threshold&quot;);
-
</del><ins>+      
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -1949,21 +1825,18 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privOptionDefaultThreshold(&amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privOptionDefaultThreshold&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><del>-
</del><ins>+    
</ins><span class="cx">     if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
</span><span class="cx">         || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><del>-
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,&quot;Create an auto-threshold for use of temporay files&quot;);
</del><ins>+    
</ins><span class="cx">     // ----- Get 'memory_limit' configuration value
</span><span class="cx">     $v_memory_limit = ini_get('memory_limit');
</span><span class="cx">     $v_memory_limit = trim($v_memory_limit);
</span><span class="cx">     $last = strtolower(substr($v_memory_limit, -1));
</span><del>-
</del><ins>+ 
</ins><span class="cx">     if($last == 'g')
</span><span class="cx">         //$v_memory_limit = $v_memory_limit*1024*1024*1024;
</span><span class="cx">         $v_memory_limit = $v_memory_limit*1073741824;
</span><span class="lines">@@ -1972,20 +1845,16 @@
</span><span class="cx">         $v_memory_limit = $v_memory_limit*1048576;
</span><span class="cx">     if($last == 'k')
</span><span class="cx">         $v_memory_limit = $v_memory_limit*1024;
</span><del>-
</del><ins>+            
</ins><span class="cx">     $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO);
</span><ins>+    
</ins><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,&quot;Current memory usage : &quot;.memory_get_usage(TRUE).&quot; bytes&quot;);
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,&quot;Threshold value is : &quot;.$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD].&quot; bytes&quot;);
-
</del><span class="cx">     // ----- Sanity check : No threshold if value lower than 1M
</span><span class="cx">     if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] &lt; 1048576) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,&quot;Unset the threshold (value &quot;.$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD].&quot;) because under 1Mo sanity check)&quot;);
</del><span class="cx">       unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]);
</span><span class="cx">     }
</span><del>-
</del><ins>+          
</ins><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -2000,19 +1869,17 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privFileDescrParseAtt(&amp;$p_file_list, &amp;$p_filedescr, $v_options, $v_requested_options=false)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privFileDescrParseAtt&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- For each file in the list check the attributes
</span><span class="cx">     foreach ($p_file_list as $v_key =&gt; $v_value) {
</span><del>-
</del><ins>+    
</ins><span class="cx">       // ----- Check if the option is supported
</span><span class="cx">       if (!isset($v_requested_options[$v_key])) {
</span><span class="cx">         // ----- Error log
</span><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Invalid file attribute '&quot;.$v_key.&quot;' for this file&quot;);
</span><span class="cx"> 
</span><span class="cx">         // ----- Return
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">         return PclZip::errorCode();
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -2021,16 +1888,13 @@
</span><span class="cx">         case PCLZIP_ATT_FILE_NAME :
</span><span class="cx">           if (!is_string($v_value)) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, &quot;Invalid type &quot;.gettype($v_value).&quot;. String expected for attribute '&quot;.PclZipUtilOptionText($v_key).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           $p_filedescr['filename'] = PclZipUtilPathReduction($v_value);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($v_key).&quot; = '&quot;.$v_value.&quot;'&quot;);
-
</del><ins>+          
</ins><span class="cx">           if ($p_filedescr['filename'] == '') {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, &quot;Invalid empty filename for attribute '&quot;.PclZipUtilOptionText($v_key).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -2039,16 +1903,13 @@
</span><span class="cx">         case PCLZIP_ATT_FILE_NEW_SHORT_NAME :
</span><span class="cx">           if (!is_string($v_value)) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, &quot;Invalid type &quot;.gettype($v_value).&quot;. String expected for attribute '&quot;.PclZipUtilOptionText($v_key).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($v_key).&quot; = '&quot;.$v_value.&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">           if ($p_filedescr['new_short_name'] == '') {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, &quot;Invalid empty short filename for attribute '&quot;.PclZipUtilOptionText($v_key).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx">         break;
</span><span class="lines">@@ -2056,16 +1917,13 @@
</span><span class="cx">         case PCLZIP_ATT_FILE_NEW_FULL_NAME :
</span><span class="cx">           if (!is_string($v_value)) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, &quot;Invalid type &quot;.gettype($v_value).&quot;. String expected for attribute '&quot;.PclZipUtilOptionText($v_key).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($v_key).&quot; = '&quot;.$v_value.&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">           if ($p_filedescr['new_full_name'] == '') {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, &quot;Invalid empty full filename for attribute '&quot;.PclZipUtilOptionText($v_key).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx">         break;
</span><span class="lines">@@ -2074,28 +1932,23 @@
</span><span class="cx">         case PCLZIP_ATT_FILE_COMMENT :
</span><span class="cx">           if (!is_string($v_value)) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, &quot;Invalid type &quot;.gettype($v_value).&quot;. String expected for attribute '&quot;.PclZipUtilOptionText($v_key).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           $p_filedescr['comment'] = $v_value;
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($v_key).&quot; = '&quot;.$v_value.&quot;'&quot;);
</del><span class="cx">         break;
</span><span class="cx"> 
</span><span class="cx">         case PCLZIP_ATT_FILE_MTIME :
</span><span class="cx">           if (!is_integer($v_value)) {
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, &quot;Invalid type &quot;.gettype($v_value).&quot;. Integer expected for attribute '&quot;.PclZipUtilOptionText($v_key).&quot;'&quot;);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           $p_filedescr['mtime'] = $v_value;
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($v_key).&quot; = '&quot;.$v_value.&quot;'&quot;);
</del><span class="cx">         break;
</span><span class="cx"> 
</span><span class="cx">         case PCLZIP_ATT_FILE_CONTENT :
</span><span class="cx">           $p_filedescr['content'] = $v_value;
</span><del>-          ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;&quot;.PclZipUtilOptionText($v_key).&quot; = '&quot;.$v_value.&quot;'&quot;);
</del><span class="cx">         break;
</span><span class="cx"> 
</span><span class="cx">         default :
</span><span class="lines">@@ -2104,7 +1957,6 @@
</span><span class="cx">                                            &quot;Unknown parameter '&quot;.$v_key.&quot;'&quot;);
</span><span class="cx"> 
</span><span class="cx">           // ----- Return
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">           return PclZip::errorCode();
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -2113,22 +1965,19 @@
</span><span class="cx">         for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
</span><span class="cx">           // ----- Look for mandatory option
</span><span class="cx">           if ($v_requested_options[$key] == 'mandatory') {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Detect a mandatory option : &quot;.PclZipUtilOptionText($key).&quot;(&quot;.$key.&quot;)&quot;);
</del><span class="cx">             // ----- Look if present
</span><span class="cx">             if (!isset($p_file_list[$key])) {
</span><span class="cx">               PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Missing mandatory parameter &quot;.PclZipUtilOptionText($key).&quot;(&quot;.$key.&quot;)&quot;);
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">               return PclZip::errorCode();
</span><span class="cx">             }
</span><span class="cx">           }
</span><span class="cx">         }
</span><span class="cx">       }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // end foreach
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -2140,7 +1989,7 @@
</span><span class="cx">   //   or a string to be added as file. For any other type of files (link, other)
</span><span class="cx">   //   just ignore the item.
</span><span class="cx">   //   Then prepare the information that will be stored for that file.
</span><del>-  //   When its a folder, expand the folder with all the files that are in that
</del><ins>+  //   When its a folder, expand the folder with all the files that are in that 
</ins><span class="cx">   //   folder (recursively).
</span><span class="cx">   // Parameters :
</span><span class="cx">   // Return Values :
</span><span class="lines">@@ -2149,70 +1998,59 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privFileDescrExpand(&amp;$p_filedescr_list, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privFileDescrExpand&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Create a result list
</span><span class="cx">     $v_result_list = array();
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Look each entry
</span><span class="cx">     for ($i=0; $i&lt;sizeof($p_filedescr_list); $i++) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Looking for file &quot;.$i.&quot;.&quot;);
-
</del><ins>+      
</ins><span class="cx">       // ----- Get filedescr
</span><span class="cx">       $v_descr = $p_filedescr_list[$i];
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Reduce the filename
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Filedescr before reduction :'&quot;.$v_descr['filename'].&quot;'&quot;);
</del><span class="cx">       $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false);
</span><span class="cx">       $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Filedescr after reduction :'&quot;.$v_descr['filename'].&quot;'&quot;);
-
</del><ins>+      
</ins><span class="cx">       // ----- Look for real file or folder
</span><span class="cx">       if (file_exists($v_descr['filename'])) {
</span><span class="cx">         if (@is_file($v_descr['filename'])) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;This is a file&quot;);
</del><span class="cx">           $v_descr['type'] = 'file';
</span><span class="cx">         }
</span><span class="cx">         else if (@is_dir($v_descr['filename'])) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;This is a folder&quot;);
</del><span class="cx">           $v_descr['type'] = 'folder';
</span><span class="cx">         }
</span><span class="cx">         else if (@is_link($v_descr['filename'])) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Unsupported file type : link&quot;);
</del><span class="cx">           // skip
</span><span class="cx">           continue;
</span><span class="cx">         }
</span><span class="cx">         else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Unsupported file type : unknown type&quot;);
</del><span class="cx">           // skip
</span><span class="cx">           continue;
</span><span class="cx">         }
</span><span class="cx">       }
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Look for string added as file
</span><span class="cx">       else if (isset($v_descr['content'])) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;This is a string added as a file&quot;);
</del><span class="cx">         $v_descr['type'] = 'virtual_file';
</span><span class="cx">       }
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Missing file
</span><span class="cx">       else {
</span><span class="cx">         // ----- Error log
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File '&quot;.$v_descr['filename'].&quot;' does not exist&quot;);
</del><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, &quot;File '&quot;.$v_descr['filename'].&quot;' does not exist&quot;);
</span><span class="cx"> 
</span><span class="cx">         // ----- Return
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">         return PclZip::errorCode();
</span><span class="cx">       }
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Calculate the stored filename
</span><span class="cx">       $this-&gt;privCalculateStoredFilename($v_descr, $p_options);
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Add the descriptor in result list
</span><span class="cx">       $v_result_list[sizeof($v_result_list)] = $v_descr;
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Look for folder
</span><span class="cx">       if ($v_descr['type'] == 'folder') {
</span><span class="cx">         // ----- List of items in folder
</span><span class="lines">@@ -2220,20 +2058,20 @@
</span><span class="cx">         $v_dirlist_nb = 0;
</span><span class="cx">         if ($v_folder_handler = @opendir($v_descr['filename'])) {
</span><span class="cx">           while (($v_item_handler = @readdir($v_folder_handler)) !== false) {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Looking for '&quot;.$v_item_handler.&quot;' in the directory&quot;);
</del><span class="cx"> 
</span><span class="cx">             // ----- Skip '.' and '..'
</span><span class="cx">             if (($v_item_handler == '.') || ($v_item_handler == '..')) {
</span><span class="cx">                 continue;
</span><span class="cx">             }
</span><del>-
</del><ins>+            
</ins><span class="cx">             // ----- Compose the full filename
</span><span class="cx">             $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler;
</span><del>-
</del><ins>+            
</ins><span class="cx">             // ----- Look for different stored filename
</span><span class="cx">             // Because the name of the folder was changed, the name of the
</span><span class="cx">             // files/sub-folders also change
</span><del>-            if ($v_descr['stored_filename'] != $v_descr['filename']) {
</del><ins>+            if (($v_descr['stored_filename'] != $v_descr['filename'])
+                 &amp;&amp; (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) {
</ins><span class="cx">               if ($v_descr['stored_filename'] != '') {
</span><span class="cx">                 $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;
</span><span class="cx">               }
</span><span class="lines">@@ -2241,44 +2079,38 @@
</span><span class="cx">                 $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler;
</span><span class="cx">               }
</span><span class="cx">             }
</span><del>-
</del><ins>+      
</ins><span class="cx">             $v_dirlist_nb++;
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           @closedir($v_folder_handler);
</span><span class="cx">         }
</span><span class="cx">         else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Unable to open dir '&quot;.$v_descr['filename'].&quot;' in read mode. Skipped.&quot;);
</del><span class="cx">           // TBC : unable to open folder in read mode
</span><span class="cx">         }
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Expand each element of the list
</span><span class="cx">         if ($v_dirlist_nb != 0) {
</span><span class="cx">           // ----- Expand
</span><span class="cx">           if (($v_result = $this-&gt;privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">             return $v_result;
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           // ----- Concat the resulting list
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Merging result list (size '&quot;.sizeof($v_result_list).&quot;') with dirlist (size '&quot;.sizeof($v_dirlist_descr).&quot;')&quot;);
</del><span class="cx">           $v_result_list = array_merge($v_result_list, $v_dirlist_descr);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;merged result list is size '&quot;.sizeof($v_result_list).&quot;'&quot;);
</del><span class="cx">         }
</span><span class="cx">         else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Nothing in this folder to expand.&quot;);
</del><span class="cx">         }
</span><del>-
</del><ins>+          
</ins><span class="cx">         // ----- Free local array
</span><span class="cx">         unset($v_dirlist_descr);
</span><span class="cx">       }
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Get the result list
</span><span class="cx">     $p_filedescr_list = $v_result_list;
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -2291,10 +2123,9 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privCreate($p_filedescr_list, &amp;$p_result_list, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privCreate&quot;, &quot;list&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx">     $v_list_detail = array();
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Magic quotes trick
</span><span class="cx">     $this-&gt;privDisableMagicQuotes();
</span><span class="cx"> 
</span><span class="lines">@@ -2302,7 +2133,6 @@
</span><span class="cx">     if (($v_result = $this-&gt;privOpenFd('wb')) != 1)
</span><span class="cx">     {
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2316,7 +2146,6 @@
</span><span class="cx">     $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -2329,34 +2158,29 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privAdd($p_filedescr_list, &amp;$p_result_list, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privAdd&quot;, &quot;list&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx">     $v_list_detail = array();
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if the archive exists or is empty
</span><span class="cx">     if ((!is_file($this-&gt;zipname)) || (filesize($this-&gt;zipname) == 0))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Archive does not exist, or is empty, create it.&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Do a create
</span><span class="cx">       $v_result = $this-&gt;privCreate($p_filedescr_list, $p_result_list, $p_options);
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx">     // ----- Magic quotes trick
</span><span class="cx">     $this-&gt;privDisableMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the zip file
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">     if (($v_result=$this-&gt;privOpenFd('rb')) != 1)
</span><span class="cx">     {
</span><span class="cx">       // ----- Magic quotes trick
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2366,20 +2190,16 @@
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privCloseFd();
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Go to beginning of File
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position in file : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">     @rewind($this-&gt;zip_fd);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position in file : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Creates a temporay file
</span><span class="cx">     $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the temporary file in write mode
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">     if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privCloseFd();
</span><span class="lines">@@ -2388,7 +2208,6 @@
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2398,7 +2217,6 @@
</span><span class="cx">     while ($v_size != 0)
</span><span class="cx">     {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">       $v_buffer = fread($this-&gt;zip_fd, $v_read_size);
</span><span class="cx">       @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
</span><span class="cx">       $v_size -= $v_read_size;
</span><span class="lines">@@ -2421,20 +2239,17 @@
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Store the offset of the central dir
</span><span class="cx">     $v_offset = @ftell($this-&gt;zip_fd);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;New offset of central dir : $v_offset&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Copy the block of file headers from the old archive
</span><span class="cx">     $v_size = $v_central_dir['size'];
</span><span class="cx">     while ($v_size != 0)
</span><span class="cx">     {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">       $v_buffer = @fread($v_zip_temp_fd, $v_read_size);
</span><span class="cx">       @fwrite($this-&gt;zip_fd, $v_buffer, $v_read_size);
</span><span class="cx">       $v_size -= $v_read_size;
</span><span class="lines">@@ -2452,7 +2267,6 @@
</span><span class="cx">           $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">           // ----- Return
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           return $v_result;
</span><span class="cx">         }
</span><span class="cx">         $v_count++;
</span><span class="lines">@@ -2485,7 +2299,6 @@
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2513,7 +2326,6 @@
</span><span class="cx">     PclZipUtilRename($v_zip_temp_name, $this-&gt;zipname);
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -2525,7 +2337,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privOpenFd($p_mode)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privOpenFd&quot;, 'mode='.$p_mode);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if already open
</span><span class="lines">@@ -2535,24 +2346,20 @@
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this-&gt;zipname.'\' already open');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the zip file
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Open file in '.$p_mode.' mode');
</del><span class="cx">     if (($this-&gt;zip_fd = @fopen($this-&gt;zipname, $p_mode)) == 0)
</span><span class="cx">     {
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this-&gt;zipname.'\' in '.$p_mode.' mode');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -2564,7 +2371,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privCloseFd()
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privCloseFd&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     if ($this-&gt;zip_fd != 0)
</span><span class="lines">@@ -2572,7 +2378,6 @@
</span><span class="cx">     $this-&gt;zip_fd = 0;
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -2593,7 +2398,6 @@
</span><span class="cx"> //  function privAddList($p_list, &amp;$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &amp;$p_options)
</span><span class="cx">   function privAddList($p_filedescr_list, &amp;$p_result_list, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privAddList&quot;, &quot;list&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Add the files
</span><span class="lines">@@ -2601,7 +2405,6 @@
</span><span class="cx">     if (($v_result = $this-&gt;privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
</span><span class="cx">     {
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2615,7 +2418,6 @@
</span><span class="cx">       if ($v_header_list[$i]['status'] == 'ok') {
</span><span class="cx">         if (($v_result = $this-&gt;privWriteCentralFileHeader($v_header_list[$i])) != 1) {
</span><span class="cx">           // ----- Return
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           return $v_result;
</span><span class="cx">         }
</span><span class="cx">         $v_count++;
</span><span class="lines">@@ -2641,12 +2443,10 @@
</span><span class="cx">       unset($v_header_list);
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -2655,42 +2455,36 @@
</span><span class="cx">   // Function : privAddFileList()
</span><span class="cx">   // Description :
</span><span class="cx">   // Parameters :
</span><del>-  //   $p_filedescr_list : An array containing the file description
</del><ins>+  //   $p_filedescr_list : An array containing the file description 
</ins><span class="cx">   //                      or directory names to add in the zip
</span><span class="cx">   //   $p_result_list : list of added files with their properties (specially the status field)
</span><span class="cx">   // Return Values :
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privAddFileList($p_filedescr_list, &amp;$p_result_list, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privAddFileList&quot;, &quot;filedescr_list&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx">     $v_header = array();
</span><span class="cx"> 
</span><span class="cx">     // ----- Recuperate the current number of elt in list
</span><span class="cx">     $v_nb = sizeof($p_result_list);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Before add, list have &quot;.$v_nb.&quot; elements&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Loop on the files
</span><span class="cx">     for ($j=0; ($j&lt;sizeof($p_filedescr_list)) &amp;&amp; ($v_result==1); $j++) {
</span><span class="cx">       // ----- Format the filename
</span><span class="cx">       $p_filedescr_list[$j]['filename']
</span><span class="cx">       = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false);
</span><ins>+      
</ins><span class="cx"> 
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Looking for file '&quot;.$p_filedescr_list[$j]['filename'].&quot;'&quot;);
-
</del><span class="cx">       // ----- Skip empty file names
</span><span class="cx">       // TBC : Can this be possible ? not checked in DescrParseAtt ?
</span><span class="cx">       if ($p_filedescr_list[$j]['filename'] == &quot;&quot;) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Skip empty filename&quot;);
</del><span class="cx">         continue;
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="cx">       // ----- Check the filename
</span><span class="cx">       if (   ($p_filedescr_list[$j]['type'] != 'virtual_file')
</span><span class="cx">           &amp;&amp; (!file_exists($p_filedescr_list[$j]['filename']))) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File '&quot;.$p_filedescr_list[$j]['filename'].&quot;' does not exist&quot;);
</del><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, &quot;File '&quot;.$p_filedescr_list[$j]['filename'].&quot;' does not exist&quot;);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">         return PclZip::errorCode();
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -2709,7 +2503,6 @@
</span><span class="cx">         $v_result = $this-&gt;privAddFile($p_filedescr_list[$j], $v_header,
</span><span class="cx">                                        $p_options);
</span><span class="cx">         if ($v_result != 1) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -2717,10 +2510,8 @@
</span><span class="cx">         $p_result_list[$v_nb++] = $v_header;
</span><span class="cx">       }
</span><span class="cx">     }
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;After add, list have &quot;.$v_nb.&quot; elements&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -2733,9 +2524,8 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privAddFile($p_filedescr, &amp;$p_header, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privAddFile&quot;, &quot;filename='&quot;.$p_filedescr['filename'].&quot;'&quot;);
</del><span class="cx">     $v_result=1;
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Working variable
</span><span class="cx">     $p_filename = $p_filedescr['filename'];
</span><span class="cx"> 
</span><span class="lines">@@ -2745,19 +2535,16 @@
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, &quot;Invalid file list parameter (invalid or empty list)&quot;);
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><del>-
-    // ----- Look for a stored different filename
</del><ins>+  
+    // ----- Look for a stored different filename 
</ins><span class="cx">     /* TBC : Removed
</span><span class="cx">     if (isset($p_filedescr['stored_filename'])) {
</span><span class="cx">       $v_stored_filename = $p_filedescr['stored_filename'];
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is NOT the same &quot;'.$v_stored_filename.'&quot;');
</del><span class="cx">     }
</span><span class="cx">     else {
</span><span class="cx">       $v_stored_filename = $p_filedescr['stored_filename'];
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is the same');
</del><span class="cx">     }
</span><span class="cx">     */
</span><span class="cx"> 
</span><span class="lines">@@ -2786,30 +2573,27 @@
</span><span class="cx">       $p_header['external'] = 0x00000000;
</span><span class="cx">       $p_header['size'] = filesize($p_filename);
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Look for regular folder
</span><span class="cx">     else if ($p_filedescr['type']=='folder') {
</span><span class="cx">       $p_header['external'] = 0x00000010;
</span><span class="cx">       $p_header['mtime'] = filemtime($p_filename);
</span><span class="cx">       $p_header['size'] = filesize($p_filename);
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Look for virtual file
</span><span class="cx">     else if ($p_filedescr['type'] == 'virtual_file') {
</span><span class="cx">       $p_header['external'] = 0x00000000;
</span><span class="cx">       $p_header['size'] = strlen($p_filedescr['content']);
</span><span class="cx">     }
</span><ins>+    
</ins><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Header external extension '&quot;.sprintf(&quot;0x%X&quot;,$p_header['external']).&quot;'&quot;);
-
</del><span class="cx">     // ----- Look for filetime
</span><span class="cx">     if (isset($p_filedescr['mtime'])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,&quot;Overload mtime value with :'&quot;.$p_filedescr['mtime'].&quot;'&quot;);
</del><span class="cx">       $p_header['mtime'] = $p_filedescr['mtime'];
</span><span class="cx">     }
</span><span class="cx">     else if ($p_filedescr['type'] == 'virtual_file') {
</span><span class="cx">       $p_header['mtime'] = time();
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Virtual file : use current time '&quot;.$p_header['mtime'].&quot;' for mtime value.&quot;);
</del><span class="cx">     }
</span><span class="cx">     else {
</span><span class="cx">       $p_header['mtime'] = filemtime($p_filename);
</span><span class="lines">@@ -2827,7 +2611,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for pre-add callback
</span><span class="cx">     if (isset($p_options[PCLZIP_CB_PRE_ADD])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;A pre-callback '&quot;.$p_options[PCLZIP_CB_PRE_ADD].&quot;()') is defined for the extraction&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Generate a local information
</span><span class="cx">       $v_local_header = array();
</span><span class="lines">@@ -2836,7 +2619,7 @@
</span><span class="cx">       // ----- Call the callback
</span><span class="cx">       // Here I do not use call_user_func() because I need to send a reference to the
</span><span class="cx">       // header.
</span><del>-      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);');
</del><ins>+      $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header);
</ins><span class="cx">       if ($v_result == 0) {
</span><span class="cx">         // ----- Change the file status
</span><span class="cx">         $p_header['status'] = &quot;skipped&quot;;
</span><span class="lines">@@ -2847,7 +2630,6 @@
</span><span class="cx">       // Only some fields can be modified
</span><span class="cx">       if ($p_header['stored_filename'] != $v_local_header['stored_filename']) {
</span><span class="cx">         $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;New stored filename is '&quot;.$p_header['stored_filename'].&quot;'&quot;);
</del><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2855,7 +2637,7 @@
</span><span class="cx">     if ($p_header['stored_filename'] == &quot;&quot;) {
</span><span class="cx">       $p_header['status'] = &quot;filtered&quot;;
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Check the path length
</span><span class="cx">     if (strlen($p_header['stored_filename']) &gt; 0xFF) {
</span><span class="cx">       $p_header['status'] = 'filename_too_long';
</span><span class="lines">@@ -2867,7 +2649,7 @@
</span><span class="cx">       // ----- Look for a file
</span><span class="cx">       if ($p_filedescr['type'] == 'file') {
</span><span class="cx">         // ----- Look for using temporary file to zip
</span><del>-        if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF]))
</del><ins>+        if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
</ins><span class="cx">             &amp;&amp; (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
</span><span class="cx">                 || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
</span><span class="cx">                     &amp;&amp; ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] &lt;= $p_header['size'])) ) ) {
</span><span class="lines">@@ -2876,57 +2658,45 @@
</span><span class="cx">             return $v_result;
</span><span class="cx">           }
</span><span class="cx">         }
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Use &quot;in memory&quot; zip algo
</span><span class="cx">         else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,&quot;In memory compression.&quot;);
-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,&quot;Current memory usage : &quot;.memory_get_usage(TRUE).&quot; bytes&quot;);
-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,&quot;Current memory peak : &quot;.memory_get_peak_usage(TRUE).&quot; bytes&quot;);
-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;'&quot;.$p_filename.&quot;' is a file&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Open the source file
</span><span class="cx">         if (($v_file = @fopen($p_filename, &quot;rb&quot;)) == 0) {
</span><span class="cx">           PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, &quot;Unable to open file '$p_filename' in binary read mode&quot;);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">           return PclZip::errorCode();
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // ----- Read the file content
</span><span class="cx">         $v_content = @fread($v_file, $p_header['size']);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,&quot;Memory usage after reading file : &quot;.memory_get_usage(TRUE).&quot; bytes&quot;);
-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,&quot;Memory peak after reading file : &quot;.memory_get_peak_usage(TRUE).&quot; bytes&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Close the file
</span><span class="cx">         @fclose($v_file);
</span><span class="cx"> 
</span><span class="cx">         // ----- Calculate the CRC
</span><span class="cx">         $p_header['crc'] = @crc32($v_content);
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Look for no compression
</span><span class="cx">         if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File will not be compressed&quot;);
</del><span class="cx">           // ----- Set header parameters
</span><span class="cx">           $p_header['compressed_size'] = $p_header['size'];
</span><span class="cx">           $p_header['compression'] = 0;
</span><span class="cx">         }
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Look for normal compression
</span><span class="cx">         else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File will be compressed&quot;);
</del><span class="cx">           // ----- Compress the content
</span><span class="cx">           $v_content = @gzdeflate($v_content);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,&quot;Memory usage after gzdeflate : &quot;.memory_get_usage(TRUE).&quot; bytes&quot;);
-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,&quot;Memory peak after gzdeflate : &quot;.memory_get_peak_usage(TRUE).&quot; bytes&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Set header parameters
</span><span class="cx">           $p_header['compressed_size'] = strlen($v_content);
</span><span class="cx">           $p_header['compression'] = 8;
</span><span class="cx">         }
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Call the header generation
</span><span class="cx">         if (($v_result = $this-&gt;privWriteFileHeader($p_header)) != 1) {
</span><span class="cx">           @fclose($v_file);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -2939,24 +2709,21 @@
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for a virtual file (a file from string)
</span><span class="cx">       else if ($p_filedescr['type'] == 'virtual_file') {
</span><del>-
-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Add by string&quot;);
</del><ins>+          
</ins><span class="cx">         $v_content = $p_filedescr['content'];
</span><span class="cx"> 
</span><span class="cx">         // ----- Calculate the CRC
</span><span class="cx">         $p_header['crc'] = @crc32($v_content);
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Look for no compression
</span><span class="cx">         if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File will not be compressed&quot;);
</del><span class="cx">           // ----- Set header parameters
</span><span class="cx">           $p_header['compressed_size'] = $p_header['size'];
</span><span class="cx">           $p_header['compression'] = 0;
</span><span class="cx">         }
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Look for normal compression
</span><span class="cx">         else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File will be compressed&quot;);
</del><span class="cx">           // ----- Compress the content
</span><span class="cx">           $v_content = @gzdeflate($v_content);
</span><span class="cx"> 
</span><span class="lines">@@ -2964,11 +2731,10 @@
</span><span class="cx">           $p_header['compressed_size'] = strlen($v_content);
</span><span class="cx">           $p_header['compression'] = 8;
</span><span class="cx">         }
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Call the header generation
</span><span class="cx">         if (($v_result = $this-&gt;privWriteFileHeader($p_header)) != 1) {
</span><span class="cx">           @fclose($v_file);
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -2978,7 +2744,6 @@
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for a directory
</span><span class="cx">       else if ($p_filedescr['type'] == 'folder') {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;'&quot;.$p_filename.&quot;' is a folder&quot;);
</del><span class="cx">         // ----- Look for directory last '/'
</span><span class="cx">         if (@substr($p_header['stored_filename'], -1) != '/') {
</span><span class="cx">           $p_header['stored_filename'] .= '/';
</span><span class="lines">@@ -2992,7 +2757,6 @@
</span><span class="cx">         // ----- Call the header generation
</span><span class="cx">         if (($v_result = $this-&gt;privWriteFileHeader($p_header)) != 1)
</span><span class="cx">         {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           return $v_result;
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="lines">@@ -3000,7 +2764,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for post-add callback
</span><span class="cx">     if (isset($p_options[PCLZIP_CB_POST_ADD])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;A post-callback '&quot;.$p_options[PCLZIP_CB_POST_ADD].&quot;()') is defined for the extraction&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Generate a local information
</span><span class="cx">       $v_local_header = array();
</span><span class="lines">@@ -3009,7 +2772,7 @@
</span><span class="cx">       // ----- Call the callback
</span><span class="cx">       // Here I do not use call_user_func() because I need to send a reference to the
</span><span class="cx">       // header.
</span><del>-      eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);');
</del><ins>+      $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header);
</ins><span class="cx">       if ($v_result == 0) {
</span><span class="cx">         // ----- Ignored
</span><span class="cx">         $v_result = 1;
</span><span class="lines">@@ -3020,7 +2783,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -3033,18 +2795,15 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privAddFileUsingTempFile($p_filedescr, &amp;$p_header, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privAddFileUsingTempFile&quot;, &quot;filename='&quot;.$p_filedescr['filename'].&quot;'&quot;);
</del><span class="cx">     $v_result=PCLZIP_ERR_NO_ERROR;
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Working variable
</span><span class="cx">     $p_filename = $p_filedescr['filename'];
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;'&quot;.$p_filename.&quot;' is a file&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Open the source file
</span><span class="cx">     if (($v_file = @fopen($p_filename, &quot;rb&quot;)) == 0) {
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, &quot;Unable to open file '$p_filename' in binary read mode&quot;);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3053,7 +2812,6 @@
</span><span class="cx">     if (($v_file_compressed = @gzopen($v_gzip_temp_name, &quot;wb&quot;)) == 0) {
</span><span class="cx">       fclose($v_file);
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3061,7 +2819,6 @@
</span><span class="cx">     $v_size = filesize($p_filename);
</span><span class="cx">     while ($v_size != 0) {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read &quot;.$v_read_size.&quot; bytes&quot;);
</del><span class="cx">       $v_buffer = @fread($v_file, $v_read_size);
</span><span class="cx">       //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
</span><span class="cx">       @gzputs($v_file_compressed, $v_buffer, $v_read_size);
</span><span class="lines">@@ -3073,17 +2830,14 @@
</span><span class="cx">     @gzclose($v_file_compressed);
</span><span class="cx"> 
</span><span class="cx">     // ----- Check the minimum file size
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;gzip file size &quot;.filesize($v_gzip_temp_name));
</del><span class="cx">     if (filesize($v_gzip_temp_name) &lt; 18) {
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes');
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Extract the compressed attributes
</span><span class="cx">     if (($v_file_compressed = @fopen($v_gzip_temp_name, &quot;rb&quot;)) == 0) {
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3092,28 +2846,17 @@
</span><span class="cx">     $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data);
</span><span class="cx"> 
</span><span class="cx">     // ----- Check some parameters
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[id1]='.bin2hex($v_data_header['id1']));
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[id2]='.bin2hex($v_data_header['id2']));
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[cm]='.bin2hex($v_data_header['cm']));
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[flag]='.bin2hex($v_data_header['flag']));
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[mtime]='.$v_data_header['mtime']);
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[xfl]='.bin2hex($v_data_header['xfl']));
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[os]='.bin2hex($v_data_header['os']));
</del><span class="cx">     $v_data_header['os'] = bin2hex($v_data_header['os']);
</span><span class="cx"> 
</span><span class="cx">     // ----- Read the gzip file footer
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;File position after header &quot;.ftell($v_file_compressed));
</del><span class="cx">     @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;File position at beginning of footer &quot;.ftell($v_file_compressed));
</del><span class="cx">     $v_binary_data = @fread($v_file_compressed, 8);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;File position after footer &quot;.ftell($v_file_compressed));
</del><span class="cx">     $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data);
</span><span class="cx"> 
</span><span class="cx">     // ----- Set the attributes
</span><span class="cx">     $p_header['compression'] = ord($v_data_header['cm']);
</span><span class="cx">     //$p_header['mtime'] = $v_data_header['mtime'];
</span><span class="cx">     $p_header['crc'] = $v_data_footer['crc'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Compressed size &quot;.(filesize($v_gzip_temp_name)-18));
</del><span class="cx">     $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18;
</span><span class="cx"> 
</span><span class="cx">     // ----- Close the file
</span><span class="lines">@@ -3121,7 +2864,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Call the header generation
</span><span class="cx">     if (($v_result = $this-&gt;privWriteFileHeader($p_header)) != 1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3129,19 +2871,15 @@
</span><span class="cx">     if (($v_file_compressed = @fopen($v_gzip_temp_name, &quot;rb&quot;)) == 0)
</span><span class="cx">     {
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
</span><span class="cx">     fseek($v_file_compressed, 10);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;File position before reading compressed data &quot;.ftell($v_file_compressed));
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, ' '.$p_header['compressed_size'].' bytes to read');
</del><span class="cx">     $v_size = $p_header['compressed_size'];
</span><span class="cx">     while ($v_size != 0)
</span><span class="cx">     {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read &quot;.$v_read_size.&quot; bytes&quot;);
</del><span class="cx">       $v_buffer = @fread($v_file_compressed, $v_read_size);
</span><span class="cx">       //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
</span><span class="cx">       @fwrite($this-&gt;zip_fd, $v_buffer, $v_read_size);
</span><span class="lines">@@ -3153,9 +2891,8 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Unlink the temporary file
</span><span class="cx">     @unlink($v_gzip_temp_name);
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -3170,9 +2907,8 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privCalculateStoredFilename(&amp;$p_filedescr, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privCalculateStoredFilename&quot;, &quot;filename='&quot;.$p_filedescr['filename'].&quot;'&quot;);
</del><span class="cx">     $v_result=1;
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Working variables
</span><span class="cx">     $p_filename = $p_filedescr['filename'];
</span><span class="cx">     if (isset($p_options[PCLZIP_OPT_ADD_PATH])) {
</span><span class="lines">@@ -3187,7 +2923,6 @@
</span><span class="cx">     else {
</span><span class="cx">       $p_remove_dir = '';
</span><span class="cx">     }
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Remove path ='&quot;.$p_remove_dir.&quot;'&quot;);
</del><span class="cx">     if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
</span><span class="cx">       $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
</span><span class="cx">     }
</span><span class="lines">@@ -3195,13 +2930,13 @@
</span><span class="cx">       $p_remove_all_dir = 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+
</ins><span class="cx">     // ----- Look for full name change
</span><span class="cx">     if (isset($p_filedescr['new_full_name'])) {
</span><span class="cx">       // ----- Remove drive letter if any
</span><span class="cx">       $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Changing full name of '&quot;.$p_filename.&quot;' for '&quot;.$v_stored_filename.&quot;'&quot;);
</del><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Look for path and/or short name change
</span><span class="cx">     else {
</span><span class="cx"> 
</span><span class="lines">@@ -3214,7 +2949,6 @@
</span><span class="cx">           $v_dir = $v_path_info['dirname'].'/';
</span><span class="cx">         }
</span><span class="cx">         $v_stored_filename = $v_dir.$p_filedescr['new_short_name'];
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Changing short name of '&quot;.$p_filename.&quot;' for '&quot;.$v_stored_filename.&quot;'&quot;);
</del><span class="cx">       }
</span><span class="cx">       else {
</span><span class="cx">         // ----- Calculate the stored filename
</span><span class="lines">@@ -3224,17 +2958,15 @@
</span><span class="cx">       // ----- Look for all path to remove
</span><span class="cx">       if ($p_remove_all_dir) {
</span><span class="cx">         $v_stored_filename = basename($p_filename);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Remove all path selected change '&quot;.$p_filename.&quot;' for '&quot;.$v_stored_filename.&quot;'&quot;);
</del><span class="cx">       }
</span><span class="cx">       // ----- Look for partial path remove
</span><span class="cx">       else if ($p_remove_dir != &quot;&quot;) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Partial path to remove&quot;);
</del><span class="cx">         if (substr($p_remove_dir, -1) != '/')
</span><span class="cx">           $p_remove_dir .= &quot;/&quot;;
</span><span class="cx"> 
</span><span class="cx">         if (   (substr($p_filename, 0, 2) == &quot;./&quot;)
</span><span class="cx">             || (substr($p_remove_dir, 0, 2) == &quot;./&quot;)) {
</span><del>-
</del><ins>+            
</ins><span class="cx">           if (   (substr($p_filename, 0, 2) == &quot;./&quot;)
</span><span class="cx">               &amp;&amp; (substr($p_remove_dir, 0, 2) != &quot;./&quot;)) {
</span><span class="cx">             $p_remove_dir = &quot;./&quot;.$p_remove_dir;
</span><span class="lines">@@ -3250,37 +2982,31 @@
</span><span class="cx">         if ($v_compare &gt; 0) {
</span><span class="cx">           if ($v_compare == 2) {
</span><span class="cx">             $v_stored_filename = &quot;&quot;;
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Path to remove is the current folder&quot;);
</del><span class="cx">           }
</span><span class="cx">           else {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Remove path '$p_remove_dir' in file '$v_stored_filename'&quot;);
</del><span class="cx">             $v_stored_filename = substr($v_stored_filename,
</span><span class="cx">                                         strlen($p_remove_dir));
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Result is '$v_stored_filename'&quot;);
</del><span class="cx">           }
</span><span class="cx">         }
</span><span class="cx">       }
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Remove drive letter if any
</span><span class="cx">       $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename);
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Look for path to add
</span><span class="cx">       if ($p_add_dir != &quot;&quot;) {
</span><span class="cx">         if (substr($p_add_dir, -1) == &quot;/&quot;)
</span><span class="cx">           $v_stored_filename = $p_add_dir.$v_stored_filename;
</span><span class="cx">         else
</span><span class="cx">           $v_stored_filename = $p_add_dir.&quot;/&quot;.$v_stored_filename;
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Add path '$p_add_dir' in file '$p_filename' = '$v_stored_filename'&quot;);
</del><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Filename (reduce the path of stored name)
</span><span class="cx">     $v_stored_filename = PclZipUtilPathReduction($v_stored_filename);
</span><span class="cx">     $p_filedescr['stored_filename'] = $v_stored_filename;
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Stored filename will be '&quot;.$p_filedescr['stored_filename'].&quot;', strlen &quot;.strlen($p_filedescr['stored_filename']));
-
</del><ins>+    
</ins><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -3293,15 +3019,12 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privWriteFileHeader(&amp;$p_header)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privWriteFileHeader&quot;, 'file=&quot;'.$p_header['filename'].'&quot;, stored as &quot;'.$p_header['stored_filename'].'&quot;');
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Store the offset position of the file
</span><span class="cx">     $p_header['offset'] = ftell($this-&gt;zip_fd);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File offset of the header :'.$p_header['offset']);
</del><span class="cx"> 
</span><span class="cx">     // ----- Transform UNIX mtime to DOS format mdate/mtime
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date(&quot;d/m/y H:i:s&quot;, $p_header['mtime']).'\'');
</del><span class="cx">     $v_date = getdate($p_header['mtime']);
</span><span class="cx">     $v_mtime = ($v_date['hours']&lt;&lt;11) + ($v_date['minutes']&lt;&lt;5) + $v_date['seconds']/2;
</span><span class="cx">     $v_mdate = (($v_date['year']-1980)&lt;&lt;9) + ($v_date['mon']&lt;&lt;5) + $v_date['mday'];
</span><span class="lines">@@ -3329,7 +3052,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -3342,21 +3064,17 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privWriteCentralFileHeader(&amp;$p_header)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privWriteCentralFileHeader&quot;, 'file=&quot;'.$p_header['filename'].'&quot;, stored as &quot;'.$p_header['stored_filename'].'&quot;');
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // TBC
</span><span class="cx">     //for(reset($p_header); $key = key($p_header); next($p_header)) {
</span><del>-    //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;header[$key] = &quot;.$p_header[$key]);
</del><span class="cx">     //}
</span><span class="cx"> 
</span><span class="cx">     // ----- Transform UNIX mtime to DOS format mdate/mtime
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date(&quot;d/m/y H:i:s&quot;, $p_header['mtime']).'\'');
</del><span class="cx">     $v_date = getdate($p_header['mtime']);
</span><span class="cx">     $v_mtime = ($v_date['hours']&lt;&lt;11) + ($v_date['minutes']&lt;&lt;5) + $v_date['seconds']/2;
</span><span class="cx">     $v_mdate = (($v_date['year']-1980)&lt;&lt;9) + ($v_date['mon']&lt;&lt;5) + $v_date['mday'];
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$p_header['comment_len'].'\'');
</del><span class="cx"> 
</span><span class="cx">     // ----- Packed data
</span><span class="cx">     $v_binary_data = pack(&quot;VvvvvvvVVVvvvvvVV&quot;, 0x02014b50,
</span><span class="lines">@@ -3387,7 +3105,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -3400,7 +3117,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privWriteCentralHeader&quot;, 'nb_entries='.$p_nb_entries.', size='.$p_size.', offset='.$p_offset.', comment=&quot;'.$p_comment.'&quot;');
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Packed data
</span><span class="lines">@@ -3418,7 +3134,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -3431,24 +3146,21 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privList(&amp;$p_list)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privList&quot;, &quot;list&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Magic quotes trick
</span><span class="cx">     $this-&gt;privDisableMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the zip file
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">     if (($this-&gt;zip_fd = @fopen($this-&gt;zipname, 'rb')) == 0)
</span><span class="cx">     {
</span><span class="cx">       // ----- Magic quotes trick
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this-&gt;zipname.'\' in binary read mode');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3457,15 +3169,11 @@
</span><span class="cx">     if (($v_result = $this-&gt;privReadEndCentralDir($v_central_dir)) != 1)
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Go to beginning of Central Dir
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Offset : &quot;.$v_central_dir['offset'].&quot;'&quot;);
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Position in file : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">     @rewind($this-&gt;zip_fd);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Position in file : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">     if (@fseek($this-&gt;zip_fd, $v_central_dir['offset']))
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><span class="lines">@@ -3474,10 +3182,8 @@
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Position in file : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Read each entry
</span><span class="cx">     for ($i=0; $i&lt;$v_central_dir['entries']; $i++)
</span><span class="lines">@@ -3486,7 +3192,6 @@
</span><span class="cx">       if (($v_result = $this-&gt;privReadCentralFileHeader($v_header)) != 1)
</span><span class="cx">       {
</span><span class="cx">         $this-&gt;privSwapBackMagicQuotes();
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">         return $v_result;
</span><span class="cx">       }
</span><span class="cx">       $v_header['index'] = $i;
</span><span class="lines">@@ -3503,7 +3208,6 @@
</span><span class="cx">     $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -3529,7 +3233,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privConvertHeader2FileInfo($p_header, &amp;$p_info)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privConvertHeader2FileInfo&quot;, &quot;Filename='&quot;.$p_header['filename'].&quot;'&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Get the interesting attributes
</span><span class="lines">@@ -3547,7 +3250,6 @@
</span><span class="cx">     $p_info['crc'] = $p_header['crc'];
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -3570,7 +3272,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privExtractByRule(&amp;$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privExtractByRule&quot;, &quot;path='$p_path', remove_path='$p_remove_path', remove_all_path='&quot;.($p_remove_all_path?'true':'false').&quot;'&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Magic quotes trick
</span><span class="lines">@@ -3589,9 +3290,7 @@
</span><span class="cx">       // ----- Look for the path end '/'
</span><span class="cx">       while (substr($p_path, -1) == &quot;/&quot;)
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Destination path [$p_path] ends by '/'&quot;);
</del><span class="cx">         $p_path = substr($p_path, 0, strlen($p_path)-1);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Modified to [$p_path]&quot;);
</del><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3603,11 +3302,9 @@
</span><span class="cx">     $p_remove_path_size = strlen($p_remove_path);
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the zip file
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">     if (($v_result = $this-&gt;privOpenFd('rb')) != 1)
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3619,7 +3316,6 @@
</span><span class="cx">       $this-&gt;privCloseFd();
</span><span class="cx">       $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3630,12 +3326,9 @@
</span><span class="cx">     $j_start = 0;
</span><span class="cx">     for ($i=0, $v_nb_extracted=0; $i&lt;$v_central_dir['entries']; $i++)
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Read next file header entry : '$i'&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Read next Central dir entry
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Position before rewind : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">       @rewind($this-&gt;zip_fd);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Position after rewind : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">       if (@fseek($this-&gt;zip_fd, $v_pos_entry))
</span><span class="cx">       {
</span><span class="cx">         // ----- Close the zip file
</span><span class="lines">@@ -3646,10 +3339,8 @@
</span><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
</span><span class="cx"> 
</span><span class="cx">         // ----- Return
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">         return PclZip::errorCode();
</span><span class="cx">       }
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Position after fseek : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Read the file header
</span><span class="cx">       $v_header = array();
</span><span class="lines">@@ -3659,7 +3350,6 @@
</span><span class="cx">         $this-&gt;privCloseFd();
</span><span class="cx">         $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">         return $v_result;
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -3675,49 +3365,43 @@
</span><span class="cx">       // ----- Look for extract by name rule
</span><span class="cx">       if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
</span><span class="cx">           &amp;&amp; ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extract with rule 'ByName'&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Look if the filename is in the list
</span><span class="cx">           for ($j=0; ($j&lt;sizeof($p_options[PCLZIP_OPT_BY_NAME])) &amp;&amp; (!$v_extract); $j++) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Compare with file '&quot;.$p_options[PCLZIP_OPT_BY_NAME][$j].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">               // ----- Look for a directory
</span><span class="cx">               if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == &quot;/&quot;) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The searched item is a directory&quot;);
</del><span class="cx"> 
</span><span class="cx">                   // ----- Look if the directory is in the filename path
</span><span class="cx">                   if (   (strlen($v_header['stored_filename']) &gt; strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
</span><span class="cx">                       &amp;&amp; (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
</span><del>-                      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The directory is in the file path&quot;);
</del><span class="cx">                       $v_extract = true;
</span><span class="cx">                   }
</span><span class="cx">               }
</span><span class="cx">               // ----- Look for a filename
</span><span class="cx">               elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The file is the right one.&quot;);
</del><span class="cx">                   $v_extract = true;
</span><span class="cx">               }
</span><span class="cx">           }
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for extract by ereg rule
</span><ins>+      // ereg() is deprecated with PHP 5.3
+      /* 
</ins><span class="cx">       else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
</span><span class="cx">                &amp;&amp; ($p_options[PCLZIP_OPT_BY_EREG] != &quot;&quot;)) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extract by ereg '&quot;.$p_options[PCLZIP_OPT_BY_EREG].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">           if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Filename match the regular expression&quot;);
</del><span class="cx">               $v_extract = true;
</span><span class="cx">           }
</span><span class="cx">       }
</span><ins>+      */
</ins><span class="cx"> 
</span><span class="cx">       // ----- Look for extract by preg rule
</span><span class="cx">       else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
</span><span class="cx">                &amp;&amp; ($p_options[PCLZIP_OPT_BY_PREG] != &quot;&quot;)) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extract with rule 'ByEreg'&quot;);
</del><span class="cx"> 
</span><span class="cx">           if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Filename match the regular expression&quot;);
</del><span class="cx">               $v_extract = true;
</span><span class="cx">           }
</span><span class="cx">       }
</span><span class="lines">@@ -3725,23 +3409,18 @@
</span><span class="cx">       // ----- Look for extract by index rule
</span><span class="cx">       else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
</span><span class="cx">                &amp;&amp; ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extract with rule 'ByIndex'&quot;);
-
</del><ins>+          
</ins><span class="cx">           // ----- Look if the index is in the list
</span><span class="cx">           for ($j=$j_start; ($j&lt;sizeof($p_options[PCLZIP_OPT_BY_INDEX])) &amp;&amp; (!$v_extract); $j++) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Look if index '$i' is in [&quot;.$p_options[PCLZIP_OPT_BY_INDEX][$j]['start'].&quot;,&quot;.$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'].&quot;]&quot;);
</del><span class="cx"> 
</span><span class="cx">               if (($i&gt;=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) &amp;&amp; ($i&lt;=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Found as part of an index range&quot;);
</del><span class="cx">                   $v_extract = true;
</span><span class="cx">               }
</span><span class="cx">               if ($i&gt;=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Do not look this index range for next loop&quot;);
</del><span class="cx">                   $j_start = $j+1;
</span><span class="cx">               }
</span><span class="cx"> 
</span><span class="cx">               if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']&gt;$i) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Index range is greater than index, stop loop&quot;);
</del><span class="cx">                   break;
</span><span class="cx">               }
</span><span class="cx">           }
</span><span class="lines">@@ -3749,7 +3428,6 @@
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for no rule, which means extract all the archive
</span><span class="cx">       else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extract with no rule (extract all)&quot;);
</del><span class="cx">           $v_extract = true;
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -3757,35 +3435,30 @@
</span><span class="cx">           if (   ($v_extract)
</span><span class="cx">               &amp;&amp; (   ($v_header['compression'] != 8)
</span><span class="cx">                       &amp;&amp; ($v_header['compression'] != 0))) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Unsupported compression method (&quot;.$v_header['compression'].&quot;)&quot;);
</del><span class="cx">           $v_header['status'] = 'unsupported_compression';
</span><span class="cx"> 
</span><span class="cx">           // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
</span><span class="cx">           if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
</span><span class="cx">                       &amp;&amp; ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped&quot;);
</del><span class="cx"> 
</span><span class="cx">               $this-&gt;privSwapBackMagicQuotes();
</span><del>-
</del><ins>+              
</ins><span class="cx">               PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION,
</span><span class="cx">                                                &quot;Filename '&quot;.$v_header['stored_filename'].&quot;' is &quot;
</span><span class="cx">                                                                    .&quot;compressed by an unsupported compression &quot;
</span><span class="cx">                                                                    .&quot;method (&quot;.$v_header['compression'].&quot;) &quot;);
</span><span class="cx"> 
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">               return PclZip::errorCode();
</span><span class="cx">                   }
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           // ----- Check encrypted files
</span><span class="cx">           if (($v_extract) &amp;&amp; (($v_header['flag'] &amp; 1) == 1)) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Unsupported file encryption&quot;);
</del><span class="cx">           $v_header['status'] = 'unsupported_encryption';
</span><span class="cx"> 
</span><span class="cx">           // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
</span><span class="cx">           if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
</span><span class="cx">                       &amp;&amp; ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped&quot;);
</del><span class="cx"> 
</span><span class="cx">               $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="lines">@@ -3794,35 +3467,29 @@
</span><span class="cx">                                                                    .&quot; filename '&quot;.$v_header['stored_filename']
</span><span class="cx">                                                                    .&quot;'&quot;);
</span><span class="cx"> 
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">               return PclZip::errorCode();
</span><span class="cx">                   }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for real extraction
</span><span class="cx">       if (($v_extract) &amp;&amp; ($v_header['status'] != 'ok')) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;No need for extract&quot;);
</del><span class="cx">           $v_result = $this-&gt;privConvertHeader2FileInfo($v_header,
</span><span class="cx">                                                         $p_file_list[$v_nb_extracted++]);
</span><span class="cx">           if ($v_result != 1) {
</span><span class="cx">               $this-&gt;privCloseFd();
</span><span class="cx">               $this-&gt;privSwapBackMagicQuotes();
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">               return $v_result;
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           $v_extract = false;
</span><span class="cx">       }
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Look for real extraction
</span><span class="cx">       if ($v_extract)
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting file '&quot;.$v_header['filename'].&quot;', index '$i'&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Go to the file position
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position before rewind : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">         @rewind($this-&gt;zip_fd);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position after rewind : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">         if (@fseek($this-&gt;zip_fd, $v_header['offset']))
</span><span class="cx">         {
</span><span class="cx">           // ----- Close the zip file
</span><span class="lines">@@ -3834,20 +3501,19 @@
</span><span class="cx">           PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
</span><span class="cx"> 
</span><span class="cx">           // ----- Return
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">           return PclZip::errorCode();
</span><span class="cx">         }
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position after fseek : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Look for extraction as string
</span><span class="cx">         if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) {
</span><span class="cx"> 
</span><ins>+          $v_string = '';
+
</ins><span class="cx">           // ----- Extracting the file
</span><del>-          $v_result1 = $this-&gt;privExtractFileAsString($v_header, $v_string);
</del><ins>+          $v_result1 = $this-&gt;privExtractFileAsString($v_header, $v_string, $p_options);
</ins><span class="cx">           if ($v_result1 &lt; 1) {
</span><span class="cx">             $this-&gt;privCloseFd();
</span><span class="cx">             $this-&gt;privSwapBackMagicQuotes();
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
</del><span class="cx">             return $v_result1;
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -3858,7 +3524,6 @@
</span><span class="cx">             $this-&gt;privCloseFd();
</span><span class="cx">             $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">             return $v_result;
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -3867,7 +3532,7 @@
</span><span class="cx"> 
</span><span class="cx">           // ----- Next extracted file
</span><span class="cx">           $v_nb_extracted++;
</span><del>-
</del><ins>+          
</ins><span class="cx">           // ----- Look for user callback abort
</span><span class="cx">           if ($v_result1 == 2) {
</span><span class="cx">                   break;
</span><span class="lines">@@ -3881,7 +3546,6 @@
</span><span class="cx">           if ($v_result1 &lt; 1) {
</span><span class="cx">             $this-&gt;privCloseFd();
</span><span class="cx">             $this-&gt;privSwapBackMagicQuotes();
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
</del><span class="cx">             return $v_result1;
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -3889,7 +3553,6 @@
</span><span class="cx">           if (($v_result = $this-&gt;privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) {
</span><span class="cx">             $this-&gt;privCloseFd();
</span><span class="cx">             $this-&gt;privSwapBackMagicQuotes();
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">             return $v_result;
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -3908,7 +3571,6 @@
</span><span class="cx">           if ($v_result1 &lt; 1) {
</span><span class="cx">             $this-&gt;privCloseFd();
</span><span class="cx">             $this-&gt;privSwapBackMagicQuotes();
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
</del><span class="cx">             return $v_result1;
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -3919,7 +3581,6 @@
</span><span class="cx">             $this-&gt;privCloseFd();
</span><span class="cx">             $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">             return $v_result;
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -3936,7 +3597,6 @@
</span><span class="cx">     $this-&gt;privSwapBackMagicQuotes();
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -3952,18 +3612,15 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privExtractFile(&amp;$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFile', &quot;path='$p_path', remove_path='$p_remove_path', remove_all_path='&quot;.($p_remove_all_path?'true':'false').&quot;'&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Read the file header
</span><span class="cx">     if (($v_result = $this-&gt;privReadFileHeader($v_header)) != 1)
</span><span class="cx">     {
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Found file '&quot;.$v_header['filename'].&quot;', size '&quot;.$v_header['size'].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Check that the file header is coherent with $p_entry info
</span><span class="cx">     if ($this-&gt;privCheckFileHeaders($v_header, $p_entry) != 1) {
</span><span class="lines">@@ -3974,15 +3631,12 @@
</span><span class="cx">     if ($p_remove_all_path == true) {
</span><span class="cx">         // ----- Look for folder entry that not need to be extracted
</span><span class="cx">         if (($p_entry['external']&amp;0x00000010)==0x00000010) {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;The entry is a folder : need to be filtered&quot;);
</del><span class="cx"> 
</span><span class="cx">             $p_entry['status'] = &quot;filtered&quot;;
</span><span class="cx"> 
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">             return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;All path is removed&quot;);
</del><span class="cx">         // ----- Get the basename of the path
</span><span class="cx">         $p_entry['filename'] = basename($p_entry['filename']);
</span><span class="cx">     }
</span><span class="lines">@@ -3990,28 +3644,23 @@
</span><span class="cx">     // ----- Look for path to remove
</span><span class="cx">     else if ($p_remove_path != &quot;&quot;)
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Look for some path to remove&quot;);
</del><span class="cx">       if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2)
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;The folder is the same as the removed path '&quot;.$p_entry['filename'].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Change the file status
</span><span class="cx">         $p_entry['status'] = &quot;filtered&quot;;
</span><span class="cx"> 
</span><span class="cx">         // ----- Return
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">         return $v_result;
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="cx">       $p_remove_path_size = strlen($p_remove_path);
</span><span class="cx">       if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path)
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Found path '$p_remove_path' to remove in file '&quot;.$p_entry['filename'].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Remove the path
</span><span class="cx">         $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size);
</span><span class="cx"> 
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Resulting file is '&quot;.$p_entry['filename'].&quot;'&quot;);
</del><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -4019,28 +3668,24 @@
</span><span class="cx">     if ($p_path != '') {
</span><span class="cx">       $p_entry['filename'] = $p_path.&quot;/&quot;.$p_entry['filename'];
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Check a base_dir_restriction
</span><span class="cx">     if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Check the extract directory restriction&quot;);
</del><span class="cx">       $v_inclusion
</span><span class="cx">       = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION],
</span><del>-                                $p_entry['filename']);
</del><ins>+                                $p_entry['filename']); 
</ins><span class="cx">       if ($v_inclusion == 0) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;PCLZIP_OPT_EXTRACT_DIR_RESTRICTION is selected, file is outside restriction&quot;);
</del><span class="cx"> 
</span><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION,
</span><span class="cx">                                              &quot;Filename '&quot;.$p_entry['filename'].&quot;' is &quot;
</span><span class="cx">                                                                  .&quot;outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION&quot;);
</span><span class="cx"> 
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">         return PclZip::errorCode();
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for pre-extract callback
</span><span class="cx">     if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;A pre-callback '&quot;.$p_options[PCLZIP_CB_PRE_EXTRACT].&quot;()') is defined for the extraction&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Generate a local information
</span><span class="cx">       $v_local_header = array();
</span><span class="lines">@@ -4049,16 +3694,15 @@
</span><span class="cx">       // ----- Call the callback
</span><span class="cx">       // Here I do not use call_user_func() because I need to send a reference to the
</span><span class="cx">       // header.
</span><del>-      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
</del><ins>+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
</ins><span class="cx">       if ($v_result == 0) {
</span><span class="cx">         // ----- Change the file status
</span><span class="cx">         $p_entry['status'] = &quot;skipped&quot;;
</span><span class="cx">         $v_result = 1;
</span><span class="cx">       }
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Look for abort result
</span><span class="cx">       if ($v_result == 2) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;User callback abort the extraction&quot;);
</del><span class="cx">         // ----- This status is internal and will be changed in 'skipped'
</span><span class="cx">         $p_entry['status'] = &quot;aborted&quot;;
</span><span class="cx">               $v_result = PCLZIP_ERR_USER_ABORTED;
</span><span class="lines">@@ -4067,10 +3711,8 @@
</span><span class="cx">       // ----- Update the informations
</span><span class="cx">       // Only some fields can be modified
</span><span class="cx">       $p_entry['filename'] = $v_local_header['filename'];
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;New filename is '&quot;.$p_entry['filename'].&quot;'&quot;);
</del><span class="cx">     }
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting file (with path) '&quot;.$p_entry['filename'].&quot;', size '$v_header[size]'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Look if extraction should be done
</span><span class="cx">     if ($p_entry['status'] == 'ok') {
</span><span class="lines">@@ -4078,35 +3720,30 @@
</span><span class="cx">     // ----- Look for specific actions while the file exist
</span><span class="cx">     if (file_exists($p_entry['filename']))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File '&quot;.$p_entry['filename'].&quot;' already exists&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Look if file is a directory
</span><span class="cx">       if (is_dir($p_entry['filename']))
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Existing file '&quot;.$p_entry['filename'].&quot;' is a directory&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Change the file status
</span><span class="cx">         $p_entry['status'] = &quot;already_a_directory&quot;;
</span><del>-
</del><ins>+        
</ins><span class="cx">         // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
</span><span class="cx">         // For historical reason first PclZip implementation does not stop
</span><span class="cx">         // when this kind of error occurs.
</span><span class="cx">         if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
</span><span class="cx">                     &amp;&amp; ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped&quot;);
</del><span class="cx"> 
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY,
</span><span class="cx">                                              &quot;Filename '&quot;.$p_entry['filename'].&quot;' is &quot;
</span><span class="cx">                                                                  .&quot;already used by an existing directory&quot;);
</span><span class="cx"> 
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">                     }
</span><span class="cx">       }
</span><span class="cx">       // ----- Look if file is write protected
</span><span class="cx">       else if (!is_writeable($p_entry['filename']))
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Existing file '&quot;.$p_entry['filename'].&quot;' is write protected&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Change the file status
</span><span class="cx">         $p_entry['status'] = &quot;write_protected&quot;;
</span><span class="lines">@@ -4116,13 +3753,11 @@
</span><span class="cx">         // when this kind of error occurs.
</span><span class="cx">         if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
</span><span class="cx">                     &amp;&amp; ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped&quot;);
</del><span class="cx"> 
</span><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
</span><span class="cx">                                              &quot;Filename '&quot;.$p_entry['filename'].&quot;' exists &quot;
</span><span class="cx">                                                                  .&quot;and is write protected&quot;);
</span><span class="cx"> 
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">                     }
</span><span class="cx">       }
</span><span class="lines">@@ -4130,14 +3765,11 @@
</span><span class="cx">       // ----- Look if the extracted file is older
</span><span class="cx">       else if (filemtime($p_entry['filename']) &gt; $p_entry['mtime'])
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Existing file '&quot;.$p_entry['filename'].&quot;' is newer (&quot;.date(&quot;l dS of F Y h:i:s A&quot;, filemtime($p_entry['filename'])).&quot;) than the extracted file (&quot;.date(&quot;l dS of F Y h:i:s A&quot;, $p_entry['mtime']).&quot;)&quot;);
</del><span class="cx">         // ----- Change the file status
</span><span class="cx">         if (   (isset($p_options[PCLZIP_OPT_REPLACE_NEWER]))
</span><span class="cx">                     &amp;&amp; ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;PCLZIP_OPT_REPLACE_NEWER is selected, file will be replaced&quot;);
</del><span class="cx">                     }
</span><span class="cx">                     else {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File will not be replaced&quot;);
</del><span class="cx">             $p_entry['status'] = &quot;newer_exist&quot;;
</span><span class="cx"> 
</span><span class="cx">             // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
</span><span class="lines">@@ -4145,19 +3777,16 @@
</span><span class="cx">             // when this kind of error occurs.
</span><span class="cx">             if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
</span><span class="cx">                         &amp;&amp; ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
</span><del>-                //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped&quot;);
</del><span class="cx"> 
</span><span class="cx">                 PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
</span><span class="cx">                                      &quot;Newer version of '&quot;.$p_entry['filename'].&quot;' exists &quot;
</span><span class="cx">                                             .&quot;and option PCLZIP_OPT_REPLACE_NEWER is not selected&quot;);
</span><span class="cx"> 
</span><del>-                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">                 return PclZip::errorCode();
</span><span class="cx">                       }
</span><span class="cx">                     }
</span><span class="cx">       }
</span><span class="cx">       else {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Existing file '&quot;.$p_entry['filename'].&quot;' is older than the extrated one - will be replaced by the extracted one (&quot;.date(&quot;l dS of F Y h:i:s A&quot;, filemtime($p_entry['filename'])).&quot;) than the extracted file (&quot;.date(&quot;l dS of F Y h:i:s A&quot;, $p_entry['mtime']).&quot;)&quot;);
</del><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -4171,13 +3800,11 @@
</span><span class="cx">         $v_dir_to_check = dirname($p_entry['filename']);
</span><span class="cx"> 
</span><span class="cx">         if (($v_result = $this-&gt;privDirCheck($v_dir_to_check, (($p_entry['external']&amp;0x00000010)==0x00000010))) != 1) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Unable to create path for '&quot;.$p_entry['filename'].&quot;'&quot;);
-
</del><ins>+  
</ins><span class="cx">           // ----- Change the file status
</span><span class="cx">           $p_entry['status'] = &quot;path_creation_fail&quot;;
</span><del>-
</del><ins>+  
</ins><span class="cx">           // ----- Return
</span><del>-          ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           //return $v_result;
</span><span class="cx">           $v_result = 1;
</span><span class="cx">         }
</span><span class="lines">@@ -4192,35 +3819,30 @@
</span><span class="cx">       {
</span><span class="cx">         // ----- Look for not compressed file
</span><span class="cx">         if ($p_entry['compression'] == 0) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting an un-compressed file&quot;);
</del><span class="cx"> 
</span><span class="cx">                       // ----- Opening destination file
</span><span class="cx">           if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0)
</span><span class="cx">           {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Error while opening '&quot;.$p_entry['filename'].&quot;' in write binary mode&quot;);
</del><span class="cx"> 
</span><span class="cx">             // ----- Change the file status
</span><span class="cx">             $p_entry['status'] = &quot;write_error&quot;;
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">             return $v_result;
</span><span class="cx">           }
</span><span class="cx"> 
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Read '&quot;.$p_entry['size'].&quot;' bytes&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
</span><span class="cx">           $v_size = $p_entry['compressed_size'];
</span><span class="cx">           while ($v_size != 0)
</span><span class="cx">           {
</span><span class="cx">             $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">             $v_buffer = @fread($this-&gt;zip_fd, $v_read_size);
</span><span class="cx">             /* Try to speed up the code
</span><span class="cx">             $v_binary_data = pack('a'.$v_read_size, $v_buffer);
</span><span class="cx">             @fwrite($v_dest_file, $v_binary_data, $v_read_size);
</span><span class="cx">             */
</span><del>-            @fwrite($v_dest_file, $v_buffer, $v_read_size);
</del><ins>+            @fwrite($v_dest_file, $v_buffer, $v_read_size);            
</ins><span class="cx">             $v_size -= $v_read_size;
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="lines">@@ -4229,23 +3851,20 @@
</span><span class="cx"> 
</span><span class="cx">           // ----- Change the file mtime
</span><span class="cx">           touch($p_entry['filename'], $p_entry['mtime']);
</span><ins>+          
</ins><span class="cx"> 
</span><del>-
</del><span class="cx">         }
</span><span class="cx">         else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting a compressed file (Compression method &quot;.$p_entry['compression'].&quot;)&quot;);
</del><span class="cx">           // ----- TBC
</span><span class="cx">           // Need to be finished
</span><span class="cx">           if (($p_entry['flag'] &amp; 1) == 1) {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File is encrypted&quot;);
</del><span class="cx">             PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.');
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">             return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx">           // ----- Look for using temporary file to unzip
</span><del>-          if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF]))
</del><ins>+          if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
</ins><span class="cx">               &amp;&amp; (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
</span><span class="cx">                   || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
</span><span class="cx">                       &amp;&amp; ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] &lt;= $p_entry['size'])) ) ) {
</span><span class="lines">@@ -4254,47 +3873,42 @@
</span><span class="cx">               return $v_result;
</span><span class="cx">             }
</span><span class="cx">           }
</span><del>-
</del><ins>+          
</ins><span class="cx">           // ----- Look for extract in memory
</span><span class="cx">           else {
</span><span class="cx"> 
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Read '&quot;.$p_entry['compressed_size'].&quot;' compressed bytes&quot;);
-
</del><ins>+          
</ins><span class="cx">             // ----- Read the compressed file in a buffer (one shot)
</span><span class="cx">             $v_buffer = @fread($this-&gt;zip_fd, $p_entry['compressed_size']);
</span><del>-
</del><ins>+            
</ins><span class="cx">             // ----- Decompress the file
</span><span class="cx">             $v_file_content = @gzinflate($v_buffer);
</span><span class="cx">             unset($v_buffer);
</span><span class="cx">             if ($v_file_content === FALSE) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Unable to inflate compressed file&quot;);
-
</del><ins>+  
</ins><span class="cx">               // ----- Change the file status
</span><span class="cx">               // TBC
</span><span class="cx">               $p_entry['status'] = &quot;error&quot;;
</span><del>-
-              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><ins>+              
</ins><span class="cx">               return $v_result;
</span><span class="cx">             }
</span><del>-
</del><ins>+            
</ins><span class="cx">             // ----- Opening destination file
</span><span class="cx">             if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Error while opening '&quot;.$p_entry['filename'].&quot;' in write binary mode&quot;);
-
</del><ins>+  
</ins><span class="cx">               // ----- Change the file status
</span><span class="cx">               $p_entry['status'] = &quot;write_error&quot;;
</span><del>-
-              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><ins>+  
</ins><span class="cx">               return $v_result;
</span><span class="cx">             }
</span><del>-
</del><ins>+  
</ins><span class="cx">             // ----- Write the uncompressed data
</span><span class="cx">             @fwrite($v_dest_file, $v_file_content, $p_entry['size']);
</span><span class="cx">             unset($v_file_content);
</span><del>-
</del><ins>+  
</ins><span class="cx">             // ----- Closing the destination file
</span><span class="cx">             @fclose($v_dest_file);
</span><del>-
</del><ins>+            
</ins><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">           // ----- Change the file mtime
</span><span class="lines">@@ -4303,24 +3917,21 @@
</span><span class="cx"> 
</span><span class="cx">         // ----- Look for chmod option
</span><span class="cx">         if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;chmod option activated '&quot;.$p_options[PCLZIP_OPT_SET_CHMOD].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Change the mode of the file
</span><span class="cx">           @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extraction done&quot;);
</del><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-        // ----- Change abort status
-        if ($p_entry['status'] == &quot;aborted&quot;) {
-      $p_entry['status'] = &quot;skipped&quot;;
-        }
-
</del><ins>+          // ----- Change abort status
+          if ($p_entry['status'] == &quot;aborted&quot;) {
+        $p_entry['status'] = &quot;skipped&quot;;
+          }
+        
</ins><span class="cx">     // ----- Look for post-extract callback
</span><span class="cx">     elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;A post-callback '&quot;.$p_options[PCLZIP_CB_POST_EXTRACT].&quot;()') is defined for the extraction&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Generate a local information
</span><span class="cx">       $v_local_header = array();
</span><span class="lines">@@ -4329,17 +3940,15 @@
</span><span class="cx">       // ----- Call the callback
</span><span class="cx">       // Here I do not use call_user_func() because I need to send a reference to the
</span><span class="cx">       // header.
</span><del>-      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
</del><ins>+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
</ins><span class="cx"> 
</span><span class="cx">       // ----- Look for abort result
</span><span class="cx">       if ($v_result == 2) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;User callback abort the extraction&quot;);
</del><span class="cx">               $v_result = PCLZIP_ERR_USER_ABORTED;
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -4352,19 +3961,16 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privExtractFileUsingTempFile(&amp;$p_entry, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileUsingTempFile', &quot;filename='&quot;.$p_entry['filename'].&quot;'&quot;);
</del><span class="cx">     $v_result=1;
</span><del>-
</del><ins>+        
</ins><span class="cx">     // ----- Creates a temporary file
</span><span class="cx">     $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
</span><span class="cx">     if (($v_dest_file = @fopen($v_gzip_temp_name, &quot;wb&quot;)) == 0) {
</span><span class="cx">       fclose($v_file);
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Start extraction of '&quot;.$p_entry['filename'].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Write gz file format header
</span><span class="cx">     $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3));
</span><span class="lines">@@ -4372,11 +3978,9 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
</span><span class="cx">     $v_size = $p_entry['compressed_size'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Compressed Size :&quot;.$v_size.&quot;&quot;);
</del><span class="cx">     while ($v_size != 0)
</span><span class="cx">     {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Read &quot;.$v_read_size.&quot; bytes&quot;);
</del><span class="cx">       $v_buffer = @fread($this-&gt;zip_fd, $v_read_size);
</span><span class="cx">       //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
</span><span class="cx">       @fwrite($v_dest_file, $v_buffer, $v_read_size);
</span><span class="lines">@@ -4392,9 +3996,7 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Opening destination file
</span><span class="cx">     if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Error while opening '&quot;.$p_entry['filename'].&quot;' in write binary mode&quot;);
</del><span class="cx">       $p_entry['status'] = &quot;write_error&quot;;
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -4403,19 +4005,14 @@
</span><span class="cx">       @fclose($v_dest_file);
</span><span class="cx">       $p_entry['status'] = &quot;read_error&quot;;
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File size is '.filesize($v_gzip_temp_name));
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Reading '&quot;.$p_entry['size'].&quot;' bytes&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
</span><span class="cx">     $v_size = $p_entry['size'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Size :&quot;.$v_size.&quot;&quot;);
</del><span class="cx">     while ($v_size != 0) {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Read &quot;.$v_read_size.&quot; bytes&quot;);
</del><span class="cx">       $v_buffer = @gzread($v_src_file, $v_read_size);
</span><span class="cx">       //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
</span><span class="cx">       @fwrite($v_dest_file, $v_buffer, $v_read_size);
</span><span class="lines">@@ -4426,9 +4023,8 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Delete the temporary file
</span><span class="cx">     @unlink($v_gzip_temp_name);
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -4441,16 +4037,13 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privExtractFileInOutput(&amp;$p_entry, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileInOutput', &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Read the file header
</span><span class="cx">     if (($v_result = $this-&gt;privReadFileHeader($v_header)) != 1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Found file '&quot;.$v_header['filename'].&quot;', size '&quot;.$v_header['size'].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Check that the file header is coherent with $p_entry info
</span><span class="cx">     if ($this-&gt;privCheckFileHeaders($v_header, $p_entry) != 1) {
</span><span class="lines">@@ -4459,7 +4052,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for pre-extract callback
</span><span class="cx">     if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;A pre-callback '&quot;.$p_options[PCLZIP_CB_PRE_EXTRACT].&quot;()') is defined for the extraction&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Generate a local information
</span><span class="cx">       $v_local_header = array();
</span><span class="lines">@@ -4468,7 +4060,8 @@
</span><span class="cx">       // ----- Call the callback
</span><span class="cx">       // Here I do not use call_user_func() because I need to send a reference to the
</span><span class="cx">       // header.
</span><del>-      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
</del><ins>+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
</ins><span class="cx">       if ($v_result == 0) {
</span><span class="cx">         // ----- Change the file status
</span><span class="cx">         $p_entry['status'] = &quot;skipped&quot;;
</span><span class="lines">@@ -4477,7 +4070,6 @@
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for abort result
</span><span class="cx">       if ($v_result == 2) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;User callback abort the extraction&quot;);
</del><span class="cx">         // ----- This status is internal and will be changed in 'skipped'
</span><span class="cx">         $p_entry['status'] = &quot;aborted&quot;;
</span><span class="cx">               $v_result = PCLZIP_ERR_USER_ABORTED;
</span><span class="lines">@@ -4486,11 +4078,9 @@
</span><span class="cx">       // ----- Update the informations
</span><span class="cx">       // Only some fields can be modified
</span><span class="cx">       $p_entry['filename'] = $v_local_header['filename'];
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;New filename is '&quot;.$p_entry['filename'].&quot;'&quot;);
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Trace
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting file (with path) '&quot;.$p_entry['filename'].&quot;', size '$v_header[size]'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Look if extraction should be done
</span><span class="cx">     if ($p_entry['status'] == 'ok') {
</span><span class="lines">@@ -4499,8 +4089,6 @@
</span><span class="cx">       if (!(($p_entry['external']&amp;0x00000010)==0x00000010)) {
</span><span class="cx">         // ----- Look for not compressed file
</span><span class="cx">         if ($p_entry['compressed_size'] == $p_entry['size']) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting an un-compressed file&quot;);
-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Reading '&quot;.$p_entry['size'].&quot;' bytes&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Read the file in a buffer (one shot)
</span><span class="cx">           $v_buffer = @fread($this-&gt;zip_fd, $p_entry['compressed_size']);
</span><span class="lines">@@ -4510,12 +4098,10 @@
</span><span class="cx">           unset($v_buffer);
</span><span class="cx">         }
</span><span class="cx">         else {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting a compressed file&quot;);
-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Reading '&quot;.$p_entry['size'].&quot;' bytes&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Read the compressed file in a buffer (one shot)
</span><span class="cx">           $v_buffer = @fread($this-&gt;zip_fd, $p_entry['compressed_size']);
</span><del>-
</del><ins>+          
</ins><span class="cx">           // ----- Decompress the file
</span><span class="cx">           $v_file_content = gzinflate($v_buffer);
</span><span class="cx">           unset($v_buffer);
</span><span class="lines">@@ -4524,7 +4110,6 @@
</span><span class="cx">           echo $v_file_content;
</span><span class="cx">           unset($v_file_content);
</span><span class="cx">         }
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extraction done&quot;);
</del><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -4535,7 +4120,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for post-extract callback
</span><span class="cx">     elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;A post-callback '&quot;.$p_options[PCLZIP_CB_POST_EXTRACT].&quot;()') is defined for the extraction&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Generate a local information
</span><span class="cx">       $v_local_header = array();
</span><span class="lines">@@ -4544,16 +4128,14 @@
</span><span class="cx">       // ----- Call the callback
</span><span class="cx">       // Here I do not use call_user_func() because I need to send a reference to the
</span><span class="cx">       // header.
</span><del>-      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
</del><ins>+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
</ins><span class="cx"> 
</span><span class="cx">       // ----- Look for abort result
</span><span class="cx">       if ($v_result == 2) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;User callback abort the extraction&quot;);
</del><span class="cx">               $v_result = PCLZIP_ERR_USER_ABORTED;
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -4564,9 +4146,8 @@
</span><span class="cx">   // Parameters :
</span><span class="cx">   // Return Values :
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><del>-  function privExtractFileAsString(&amp;$p_entry, &amp;$p_string)
</del><ins>+  function privExtractFileAsString(&amp;$p_entry, &amp;$p_string, &amp;$p_options)
</ins><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileAsString', &quot;p_entry['filename']='&quot;.$p_entry['filename'].&quot;'&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Read the file header
</span><span class="lines">@@ -4574,52 +4155,108 @@
</span><span class="cx">     if (($v_result = $this-&gt;privReadFileHeader($v_header)) != 1)
</span><span class="cx">     {
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Found file '&quot;.$v_header['filename'].&quot;', size '&quot;.$v_header['size'].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Check that the file header is coherent with $p_entry info
</span><span class="cx">     if ($this-&gt;privCheckFileHeaders($v_header, $p_entry) != 1) {
</span><span class="cx">         // TBC
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting file in string (with path) '&quot;.$p_entry['filename'].&quot;', size '$v_header[size]'&quot;);
</del><ins>+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
</ins><span class="cx"> 
</span><del>-    // ----- Do the extraction (if not a folder)
-    if (!(($p_entry['external']&amp;0x00000010)==0x00000010))
-    {
-      // ----- Look for not compressed file
-//      if ($p_entry['compressed_size'] == $p_entry['size'])
-      if ($p_entry['compression'] == 0) {
-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting an un-compressed file&quot;);
-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Reading '&quot;.$p_entry['size'].&quot;' bytes&quot;);
</del><ins>+      // ----- Generate a local information
+      $v_local_header = array();
+      $this-&gt;privConvertHeader2FileInfo($p_entry, $v_local_header);
</ins><span class="cx"> 
</span><del>-        // ----- Reading the file
-        $p_string = @fread($this-&gt;zip_fd, $p_entry['compressed_size']);
</del><ins>+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = &quot;skipped&quot;;
+        $v_result = 1;
</ins><span class="cx">       }
</span><del>-      else {
-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extracting a compressed file (compression method '&quot;.$p_entry['compression'].&quot;')&quot;);
</del><ins>+      
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = &quot;aborted&quot;;
+              $v_result = PCLZIP_ERR_USER_ABORTED;
+      }
</ins><span class="cx"> 
</span><del>-        // ----- Reading the file
-        $v_data = @fread($this-&gt;zip_fd, $p_entry['compressed_size']);
</del><ins>+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+    }
</ins><span class="cx"> 
</span><del>-        // ----- Decompress the file
-        if (($p_string = @gzinflate($v_data)) === FALSE) {
-            // TBC
</del><ins>+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&amp;0x00000010)==0x00000010)) {
+        // ----- Look for not compressed file
+  //      if ($p_entry['compressed_size'] == $p_entry['size'])
+        if ($p_entry['compression'] == 0) {
+  
+          // ----- Reading the file
+          $p_string = @fread($this-&gt;zip_fd, $p_entry['compressed_size']);
</ins><span class="cx">         }
</span><ins>+        else {
+  
+          // ----- Reading the file
+          $v_data = @fread($this-&gt;zip_fd, $p_entry['compressed_size']);
+          
+          // ----- Decompress the file
+          if (($p_string = @gzinflate($v_data)) === FALSE) {
+              // TBC
+          }
+        }
+  
+        // ----- Trace
</ins><span class="cx">       }
</span><ins>+      else {
+          // TBC : error : can not extract a folder in a string
+      }
+      
+    }
</ins><span class="cx"> 
</span><del>-      // ----- Trace
-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Extraction done&quot;);
</del><ins>+          // ----- Change abort status
+          if ($p_entry['status'] == &quot;aborted&quot;) {
+        $p_entry['status'] = &quot;skipped&quot;;
+          }
+        
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this-&gt;privConvertHeader2FileInfo($p_entry, $v_local_header);
+      
+      // ----- Swap the content to header
+      $v_local_header['content'] = $p_string;
+      $p_string = '';
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
+
+      // ----- Swap back the content to header
+      $p_string = $v_local_header['content'];
+      unset($v_local_header['content']);
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+              $v_result = PCLZIP_ERR_USER_ABORTED;
+      }
</ins><span class="cx">     }
</span><del>-    else {
-        // TBC : error : can not extract a folder in a string
-    }
</del><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -4632,25 +4269,20 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privReadFileHeader(&amp;$p_header)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privReadFileHeader&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Read the 4 bytes signature
</span><span class="cx">     $v_binary_data = @fread($this-&gt;zip_fd, 4);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Binary data is : '&quot;.sprintf(&quot;%08x&quot;, $v_binary_data).&quot;'&quot;);
</del><span class="cx">     $v_data = unpack('Vid', $v_binary_data);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Binary signature is : '&quot;.sprintf(&quot;0x%08x&quot;, $v_data['id']).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Check signature
</span><span class="cx">     if ($v_data['id'] != 0x04034b50)
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Invalid File header&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -4662,53 +4294,36 @@
</span><span class="cx">     {
</span><span class="cx">       $p_header['filename'] = &quot;&quot;;
</span><span class="cx">       $p_header['status'] = &quot;invalid_header&quot;;
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Invalid block size : &quot;.strlen($v_binary_data));
</del><span class="cx"> 
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, &quot;Invalid block size : &quot;.strlen($v_binary_data));
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Extract the values
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Header : '&quot;.$v_binary_data.&quot;'&quot;);
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Header (Hex) : '&quot;.bin2hex($v_binary_data).&quot;'&quot;);
</del><span class="cx">     $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data);
</span><span class="cx"> 
</span><span class="cx">     // ----- Get filename
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;File name length : &quot;.$v_data['filename_len']);
</del><span class="cx">     $p_header['filename'] = fread($this-&gt;zip_fd, $v_data['filename_len']);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename : \''.$p_header['filename'].'\'');
</del><span class="cx"> 
</span><span class="cx">     // ----- Get extra_fields
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extra field length : &quot;.$v_data['extra_len']);
</del><span class="cx">     if ($v_data['extra_len'] != 0) {
</span><span class="cx">       $p_header['extra'] = fread($this-&gt;zip_fd, $v_data['extra_len']);
</span><span class="cx">     }
</span><span class="cx">     else {
</span><span class="cx">       $p_header['extra'] = '';
</span><span class="cx">     }
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Extra field : \''.bin2hex($p_header['extra']).'\'');
</del><span class="cx"> 
</span><span class="cx">     // ----- Extract properties
</span><span class="cx">     $p_header['version_extracted'] = $v_data['version'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : ('.$p_header['version_extracted'].') \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\'');
</del><span class="cx">     $p_header['compression'] = $v_data['compression'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compression method : \''.$p_header['compression'].'\'');
</del><span class="cx">     $p_header['size'] = $v_data['size'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_header['size'].'\'');
</del><span class="cx">     $p_header['compressed_size'] = $v_data['compressed_size'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_header['compressed_size'].'\'');
</del><span class="cx">     $p_header['crc'] = $v_data['crc'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf(&quot;0x%X&quot;, $p_header['crc']).'\'');
</del><span class="cx">     $p_header['flag'] = $v_data['flag'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag : \''.$p_header['flag'].'\'');
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag bit 11 (from right) : \''.($p_header['flag']&amp;0x0400).'\'');
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag bit 11 (from left) : \''.($p_header['flag']&amp;0x0020).'\'');
</del><span class="cx">     $p_header['filename_len'] = $v_data['filename_len'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename_len : \''.$p_header['filename_len'].'\'');
</del><span class="cx"> 
</span><span class="cx">     // ----- Recuperate date in UNIX format
</span><span class="cx">     $p_header['mdate'] = $v_data['mdate'];
</span><span class="lines">@@ -4728,17 +4343,14 @@
</span><span class="cx">       // ----- Get UNIX date format
</span><span class="cx">       $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
</span><span class="cx"> 
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date(&quot;d/m/y H:i:s&quot;, $p_header['mtime']).'\'');
</del><span class="cx">     }
</span><span class="cx">     else
</span><span class="cx">     {
</span><span class="cx">       $p_header['mtime'] = time();
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date is actual : \''.date(&quot;d/m/y H:i:s&quot;, $p_header['mtime']).'\'');
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // TBC
</span><span class="cx">     //for(reset($v_data); $key = key($v_data); next($v_data)) {
</span><del>-    //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Attribut[$key] = &quot;.$v_data[$key]);
</del><span class="cx">     //}
</span><span class="cx"> 
</span><span class="cx">     // ----- Set the stored filename
</span><span class="lines">@@ -4748,7 +4360,6 @@
</span><span class="cx">     $p_header['status'] = &quot;ok&quot;;
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -4761,25 +4372,20 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privReadCentralFileHeader(&amp;$p_header)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privReadCentralFileHeader&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Read the 4 bytes signature
</span><span class="cx">     $v_binary_data = @fread($this-&gt;zip_fd, 4);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Binary data is : '&quot;.sprintf(&quot;%08x&quot;, $v_binary_data).&quot;'&quot;);
</del><span class="cx">     $v_data = unpack('Vid', $v_binary_data);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Binary signature is : '&quot;.sprintf(&quot;0x%08x&quot;, $v_data['id']).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Check signature
</span><span class="cx">     if ($v_data['id'] != 0x02014b50)
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Invalid Central Dir File signature&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -4791,53 +4397,36 @@
</span><span class="cx">     {
</span><span class="cx">       $p_header['filename'] = &quot;&quot;;
</span><span class="cx">       $p_header['status'] = &quot;invalid_header&quot;;
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Invalid block size : &quot;.strlen($v_binary_data));
</del><span class="cx"> 
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, &quot;Invalid block size : &quot;.strlen($v_binary_data));
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Extract the values
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Header : '&quot;.$v_binary_data.&quot;'&quot;);
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Header (Hex) : '&quot;.bin2hex($v_binary_data).&quot;'&quot;);
</del><span class="cx">     $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);
</span><span class="cx"> 
</span><span class="cx">     // ----- Get filename
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;File name length : &quot;.$p_header['filename_len']);
</del><span class="cx">     if ($p_header['filename_len'] != 0)
</span><span class="cx">       $p_header['filename'] = fread($this-&gt;zip_fd, $p_header['filename_len']);
</span><span class="cx">     else
</span><span class="cx">       $p_header['filename'] = '';
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Filename : \''.$p_header['filename'].'\'');
</del><span class="cx"> 
</span><span class="cx">     // ----- Get extra
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Extra length : &quot;.$p_header['extra_len']);
</del><span class="cx">     if ($p_header['extra_len'] != 0)
</span><span class="cx">       $p_header['extra'] = fread($this-&gt;zip_fd, $p_header['extra_len']);
</span><span class="cx">     else
</span><span class="cx">       $p_header['extra'] = '';
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Extra : \''.$p_header['extra'].'\'');
</del><span class="cx"> 
</span><span class="cx">     // ----- Get comment
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Comment length : &quot;.$p_header['comment_len']);
</del><span class="cx">     if ($p_header['comment_len'] != 0)
</span><span class="cx">       $p_header['comment'] = fread($this-&gt;zip_fd, $p_header['comment_len']);
</span><span class="cx">     else
</span><span class="cx">       $p_header['comment'] = '';
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Comment : \''.$p_header['comment'].'\'');
</del><span class="cx"> 
</span><span class="cx">     // ----- Extract properties
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version : \''.($p_header['version']/10).'.'.($p_header['version']%10).'\'');
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\'');
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Size : \''.$p_header['size'].'\'');
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Compressed Size : \''.$p_header['compressed_size'].'\'');
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'CRC : \''.sprintf(&quot;0x%X&quot;, $p_header['crc']).'\'');
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Flag : \''.$p_header['flag'].'\'');
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Offset : \''.$p_header['offset'].'\'');
</del><span class="cx"> 
</span><span class="cx">     // ----- Recuperate date in UNIX format
</span><span class="cx">     //if ($p_header['mdate'] &amp;&amp; $p_header['mtime'])
</span><span class="lines">@@ -4857,12 +4446,10 @@
</span><span class="cx">       // ----- Get UNIX date format
</span><span class="cx">       $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
</span><span class="cx"> 
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date(&quot;d/m/y H:i:s&quot;, $p_header['mtime']).'\'');
</del><span class="cx">     }
</span><span class="cx">     else
</span><span class="cx">     {
</span><span class="cx">       $p_header['mtime'] = time();
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date is actual : \''.date(&quot;d/m/y H:i:s&quot;, $p_header['mtime']).'\'');
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Set the stored filename
</span><span class="lines">@@ -4872,18 +4459,13 @@
</span><span class="cx">     $p_header['status'] = 'ok';
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if it is a directory
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Internal (Hex) : '&quot;.sprintf(&quot;Ox%04X&quot;, $p_header['internal']).&quot;'&quot;);
-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;External (Hex) : '&quot;.sprintf(&quot;Ox%04X&quot;, $p_header['external']).&quot;' (&quot;.(($p_header['external']&amp;0x00000010)==0x00000010?'is a folder':'is a file').')');
</del><span class="cx">     if (substr($p_header['filename'], -1) == '/') {
</span><span class="cx">       //$p_header['external'] = 0x41FF0010;
</span><span class="cx">       $p_header['external'] = 0x00000010;
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Force folder external : \''.sprintf(&quot;Ox%04X&quot;, $p_header['external']).'\'');
</del><span class="cx">     }
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Header of filename : \''.$p_header['filename'].'\'');
</del><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -4898,44 +4480,31 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privCheckFileHeaders(&amp;$p_local_header, &amp;$p_central_header)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privCheckFileHeaders&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">           // ----- Check the static values
</span><span class="cx">           // TBC
</span><span class="cx">           if ($p_local_header['filename'] != $p_central_header['filename']) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check &quot;filename&quot; : TBC To Be Completed');
</del><span class="cx">           }
</span><span class="cx">           if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check &quot;version_extracted&quot; : TBC To Be Completed');
</del><span class="cx">           }
</span><span class="cx">           if ($p_local_header['flag'] != $p_central_header['flag']) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check &quot;flag&quot; : TBC To Be Completed');
</del><span class="cx">           }
</span><span class="cx">           if ($p_local_header['compression'] != $p_central_header['compression']) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check &quot;compression&quot; : TBC To Be Completed');
</del><span class="cx">           }
</span><span class="cx">           if ($p_local_header['mtime'] != $p_central_header['mtime']) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check &quot;mtime&quot; : TBC To Be Completed');
</del><span class="cx">           }
</span><span class="cx">           if ($p_local_header['filename_len'] != $p_central_header['filename_len']) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check &quot;filename_len&quot; : TBC To Be Completed');
</del><span class="cx">           }
</span><del>-
</del><ins>+  
</ins><span class="cx">           // ----- Look for flag bit 3
</span><span class="cx">           if (($p_local_header['flag'] &amp; 8) == 8) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Purpose bit flag bit 3 set !');
-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'File size, compression size and crc found in central header');
</del><span class="cx">           $p_local_header['size'] = $p_central_header['size'];
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_local_header['size'].'\'');
</del><span class="cx">           $p_local_header['compressed_size'] = $p_central_header['compressed_size'];
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_local_header['compressed_size'].'\'');
</del><span class="cx">           $p_local_header['crc'] = $p_central_header['crc'];
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf(&quot;0x%X&quot;, $p_local_header['crc']).'\'');
</del><span class="cx">           }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -4948,21 +4517,17 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privReadEndCentralDir(&amp;$p_central_dir)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privReadEndCentralDir&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Go to the end of the zip file
</span><span class="cx">     $v_size = filesize($this-&gt;zipname);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Size of the file :$v_size&quot;);
</del><span class="cx">     @fseek($this-&gt;zip_fd, $v_size);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position at end of zip file : \''.ftell($this-&gt;zip_fd).'\'');
</del><span class="cx">     if (@ftell($this-&gt;zip_fd) != $v_size)
</span><span class="cx">     {
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this-&gt;zipname.'\'');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -4970,28 +4535,22 @@
</span><span class="cx">     // in this case the end of central dir is at 22 bytes of the file end
</span><span class="cx">     $v_found = 0;
</span><span class="cx">     if ($v_size &gt; 26) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Look for central dir with no comment');
</del><span class="cx">       @fseek($this-&gt;zip_fd, $v_size-22);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after min central position : \''.ftell($this-&gt;zip_fd).'\'');
</del><span class="cx">       if (($v_pos = @ftell($this-&gt;zip_fd)) != ($v_size-22))
</span><span class="cx">       {
</span><span class="cx">         // ----- Error log
</span><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this-&gt;zipname.'\'');
</span><span class="cx"> 
</span><span class="cx">         // ----- Return
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">         return PclZip::errorCode();
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="cx">       // ----- Read for bytes
</span><span class="cx">       $v_binary_data = @fread($this-&gt;zip_fd, 4);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Binary data is : '&quot;.sprintf(&quot;%08x&quot;, $v_binary_data).&quot;'&quot;);
</del><span class="cx">       $v_data = @unpack('Vid', $v_binary_data);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Binary signature is : '&quot;.sprintf(&quot;0x%08x&quot;, $v_data['id']).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Check signature
</span><span class="cx">       if ($v_data['id'] == 0x06054b50) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Found central dir at the default position.&quot;);
</del><span class="cx">         $v_found = 1;
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -5000,7 +4559,6 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Go back to the maximum possible size of the Central Dir End Record
</span><span class="cx">     if (!$v_found) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Start extended search of end central dir');
</del><span class="cx">       $v_maximum_size = 65557; // 0xFFFF + 22;
</span><span class="cx">       if ($v_maximum_size &gt; $v_size)
</span><span class="cx">         $v_maximum_size = $v_size;
</span><span class="lines">@@ -5011,10 +4569,8 @@
</span><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this-&gt;zipname.'\'');
</span><span class="cx"> 
</span><span class="cx">         // ----- Return
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">         return PclZip::errorCode();
</span><span class="cx">       }
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after max central position : \''.ftell($this-&gt;zip_fd).'\'');
</del><span class="cx"> 
</span><span class="cx">       // ----- Read byte per byte in order to find the signature
</span><span class="cx">       $v_pos = ftell($this-&gt;zip_fd);
</span><span class="lines">@@ -5025,15 +4581,14 @@
</span><span class="cx">         $v_byte = @fread($this-&gt;zip_fd, 1);
</span><span class="cx"> 
</span><span class="cx">         // -----  Add the byte
</span><del>-        // $v_bytes = ($v_bytes &lt;&lt; 8) | Ord($v_byte);
-        // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number
-        // Otherwise on systems where we have 64bit integers the check below for the magic number will fail.
-        $v_bytes = ( ($v_bytes &amp; 0xFFFFFF) &lt;&lt; 8) | Ord($v_byte);
</del><ins>+        //$v_bytes = ($v_bytes &lt;&lt; 8) | Ord($v_byte);
+        // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number 
+        // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. 
+        $v_bytes = ( ($v_bytes &amp; 0xFFFFFF) &lt;&lt; 8) | Ord($v_byte); 
</ins><span class="cx"> 
</span><span class="cx">         // ----- Compare the bytes
</span><span class="cx">         if ($v_bytes == 0x504b0506)
</span><span class="cx">         {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Found End Central Dir signature at position : \''.ftell($this-&gt;zip_fd).'\'');
</del><span class="cx">           $v_pos++;
</span><span class="cx">           break;
</span><span class="cx">         }
</span><span class="lines">@@ -5044,13 +4599,11 @@
</span><span class="cx">       // ----- Look if not found end of central dir
</span><span class="cx">       if ($v_pos == $v_size)
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Unable to find End of Central Dir Record signature&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Error log
</span><span class="cx">         PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, &quot;Unable to find End of Central Dir Record signature&quot;);
</span><span class="cx"> 
</span><span class="cx">         // ----- Return
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">         return PclZip::errorCode();
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="lines">@@ -5061,25 +4614,19 @@
</span><span class="cx">     // ----- Look for invalid block size
</span><span class="cx">     if (strlen($v_binary_data) != 18)
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;Invalid End of Central Dir Record size : &quot;.strlen($v_binary_data));
</del><span class="cx"> 
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, &quot;Invalid End of Central Dir Record size : &quot;.strlen($v_binary_data));
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Extract the values
</span><del>-    ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Central Dir Record : '&quot;.$v_binary_data.&quot;'&quot;);
-    ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Central Dir Record (Hex) : '&quot;.bin2hex($v_binary_data).&quot;'&quot;);
</del><span class="cx">     $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data);
</span><span class="cx"> 
</span><span class="cx">     // ----- Check the global size
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Comment length : &quot;.$v_data['comment_size']);
</del><span class="cx">     if (($v_pos + $v_data['comment_size'] + 18) != $v_size) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;The central dir is not at the end of the archive. Some trailing bytes exists after the archive.&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Removed in release 2.2 see readme file
</span><span class="cx">           // The check of the file size is a little too strict.
</span><span class="lines">@@ -5092,40 +4639,29 @@
</span><span class="cx">                                                    .' Some trailing bytes exists after the archive.');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">           }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Get comment
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$v_data['comment_size'].'\'');
</del><span class="cx">     if ($v_data['comment_size'] != 0) {
</span><span class="cx">       $p_central_dir['comment'] = fread($this-&gt;zip_fd, $v_data['comment_size']);
</span><span class="cx">     }
</span><span class="cx">     else
</span><span class="cx">       $p_central_dir['comment'] = '';
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\'');
</del><span class="cx"> 
</span><span class="cx">     $p_central_dir['entries'] = $v_data['entries'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries : \''.$p_central_dir['entries'].'\'');
</del><span class="cx">     $p_central_dir['disk_entries'] = $v_data['disk_entries'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries for this disk : \''.$p_central_dir['disk_entries'].'\'');
</del><span class="cx">     $p_central_dir['offset'] = $v_data['offset'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Offset of Central Dir : \''.$p_central_dir['offset'].'\'');
</del><span class="cx">     $p_central_dir['size'] = $v_data['size'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size of Central Dir : \''.$p_central_dir['size'].'\'');
</del><span class="cx">     $p_central_dir['disk'] = $v_data['disk'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Disk number : \''.$p_central_dir['disk'].'\'');
</del><span class="cx">     $p_central_dir['disk_start'] = $v_data['disk_start'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Start disk number : \''.$p_central_dir['disk_start'].'\'');
</del><span class="cx"> 
</span><span class="cx">     // TBC
</span><span class="cx">     //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) {
</span><del>-    //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;central_dir[$key] = &quot;.$p_central_dir[$key]);
</del><span class="cx">     //}
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -5138,16 +4674,13 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privDeleteByRule(&amp;$p_result_list, &amp;$p_options)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privDeleteByRule&quot;, &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx">     $v_list_detail = array();
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the zip file
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">     if (($v_result=$this-&gt;privOpenFd('rb')) != 1)
</span><span class="cx">     {
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -5156,21 +4689,16 @@
</span><span class="cx">     if (($v_result = $this-&gt;privReadEndCentralDir($v_central_dir)) != 1)
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privCloseFd();
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Go to beginning of File
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position in file : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">     @rewind($this-&gt;zip_fd);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position in file : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Scan all the files
</span><span class="cx">     // ----- Start at beginning of Central Dir
</span><span class="cx">     $v_pos_entry = $v_central_dir['offset'];
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position before rewind : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">     @rewind($this-&gt;zip_fd);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position after rewind : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">     if (@fseek($this-&gt;zip_fd, $v_pos_entry))
</span><span class="cx">     {
</span><span class="cx">       // ----- Close the zip file
</span><span class="lines">@@ -5180,17 +4708,14 @@
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position after fseek : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Read each entry
</span><span class="cx">     $v_header_list = array();
</span><span class="cx">     $j_start = 0;
</span><span class="cx">     for ($i=0, $v_nb_extracted=0; $i&lt;$v_central_dir['entries']; $i++)
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Read next file header entry (index '$i')&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Read the file header
</span><span class="cx">       $v_header_list[$v_nb_extracted] = array();
</span><span class="lines">@@ -5199,11 +4724,9 @@
</span><span class="cx">         // ----- Close the zip file
</span><span class="cx">         $this-&gt;privCloseFd();
</span><span class="cx"> 
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">         return $v_result;
</span><span class="cx">       }
</span><span class="cx"> 
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Filename (index '$i') : '&quot;.$v_header_list[$v_nb_extracted]['stored_filename'].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Store the index
</span><span class="cx">       $v_header_list[$v_nb_extracted]['index'] = $i;
</span><span class="lines">@@ -5214,54 +4737,47 @@
</span><span class="cx">       // ----- Look for extract by name rule
</span><span class="cx">       if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
</span><span class="cx">           &amp;&amp; ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extract with rule 'ByName'&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Look if the filename is in the list
</span><span class="cx">           for ($j=0; ($j&lt;sizeof($p_options[PCLZIP_OPT_BY_NAME])) &amp;&amp; (!$v_found); $j++) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Compare with file '&quot;.$p_options[PCLZIP_OPT_BY_NAME][$j].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">               // ----- Look for a directory
</span><span class="cx">               if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == &quot;/&quot;) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The searched item is a directory&quot;);
</del><span class="cx"> 
</span><span class="cx">                   // ----- Look if the directory is in the filename path
</span><span class="cx">                   if (   (strlen($v_header_list[$v_nb_extracted]['stored_filename']) &gt; strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
</span><span class="cx">                       &amp;&amp; (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])) {
</span><del>-                      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The directory is in the file path&quot;);
</del><span class="cx">                       $v_found = true;
</span><span class="cx">                   }
</span><span class="cx">                   elseif (   (($v_header_list[$v_nb_extracted]['external']&amp;0x00000010)==0x00000010) /* Indicates a folder */
</span><span class="cx">                           &amp;&amp; ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
</span><del>-                      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The entry is the searched directory&quot;);
</del><span class="cx">                       $v_found = true;
</span><span class="cx">                   }
</span><span class="cx">               }
</span><span class="cx">               // ----- Look for a filename
</span><span class="cx">               elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;The file is the right one.&quot;);
</del><span class="cx">                   $v_found = true;
</span><span class="cx">               }
</span><span class="cx">           }
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for extract by ereg rule
</span><ins>+      // ereg() is deprecated with PHP 5.3
+      /*
</ins><span class="cx">       else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
</span><span class="cx">                &amp;&amp; ($p_options[PCLZIP_OPT_BY_EREG] != &quot;&quot;)) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extract by ereg '&quot;.$p_options[PCLZIP_OPT_BY_EREG].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">           if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Filename match the regular expression&quot;);
</del><span class="cx">               $v_found = true;
</span><span class="cx">           }
</span><span class="cx">       }
</span><ins>+      */
</ins><span class="cx"> 
</span><span class="cx">       // ----- Look for extract by preg rule
</span><span class="cx">       else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
</span><span class="cx">                &amp;&amp; ($p_options[PCLZIP_OPT_BY_PREG] != &quot;&quot;)) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extract with rule 'ByEreg'&quot;);
</del><span class="cx"> 
</span><span class="cx">           if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Filename match the regular expression&quot;);
</del><span class="cx">               $v_found = true;
</span><span class="cx">           }
</span><span class="cx">       }
</span><span class="lines">@@ -5269,41 +4785,33 @@
</span><span class="cx">       // ----- Look for extract by index rule
</span><span class="cx">       else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
</span><span class="cx">                &amp;&amp; ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Extract with rule 'ByIndex'&quot;);
</del><span class="cx"> 
</span><span class="cx">           // ----- Look if the index is in the list
</span><span class="cx">           for ($j=$j_start; ($j&lt;sizeof($p_options[PCLZIP_OPT_BY_INDEX])) &amp;&amp; (!$v_found); $j++) {
</span><del>-              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Look if index '$i' is in [&quot;.$p_options[PCLZIP_OPT_BY_INDEX][$j]['start'].&quot;,&quot;.$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'].&quot;]&quot;);
</del><span class="cx"> 
</span><span class="cx">               if (($i&gt;=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) &amp;&amp; ($i&lt;=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Found as part of an index range&quot;);
</del><span class="cx">                   $v_found = true;
</span><span class="cx">               }
</span><span class="cx">               if ($i&gt;=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Do not look this index range for next loop&quot;);
</del><span class="cx">                   $j_start = $j+1;
</span><span class="cx">               }
</span><span class="cx"> 
</span><span class="cx">               if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']&gt;$i) {
</span><del>-                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Index range is greater than index, stop loop&quot;);
</del><span class="cx">                   break;
</span><span class="cx">               }
</span><span class="cx">           }
</span><span class="cx">       }
</span><span class="cx">       else {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;No argument mean remove all file&quot;);
</del><span class="cx">               $v_found = true;
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="cx">       // ----- Look for deletion
</span><span class="cx">       if ($v_found)
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File '&quot;.$v_header_list[$v_nb_extracted]['stored_filename'].&quot;', index '$i' need to be deleted&quot;);
</del><span class="cx">         unset($v_header_list[$v_nb_extracted]);
</span><span class="cx">       }
</span><span class="cx">       else
</span><span class="cx">       {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, &quot;File '&quot;.$v_header_list[$v_nb_extracted]['stored_filename'].&quot;', index '$i' will not be deleted&quot;);
</del><span class="cx">         $v_nb_extracted++;
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="lines">@@ -5318,24 +4826,18 @@
</span><span class="cx">         $v_temp_zip = new PclZip($v_zip_temp_name);
</span><span class="cx"> 
</span><span class="cx">         // ----- Open the temporary zip file in write mode
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary write mode&quot;);
</del><span class="cx">         if (($v_result = $v_temp_zip-&gt;privOpenFd('wb')) != 1) {
</span><span class="cx">             $this-&gt;privCloseFd();
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">             return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // ----- Look which file need to be kept
</span><span class="cx">         for ($i=0; $i&lt;sizeof($v_header_list); $i++) {
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Keep entry index '$i' : '&quot;.$v_header_list[$i]['filename'].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">             // ----- Calculate the position of the header
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Offset='&quot;. $v_header_list[$i]['offset'].&quot;'&quot;);
-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position before rewind : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">             @rewind($this-&gt;zip_fd);
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position after rewind : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">             if (@fseek($this-&gt;zip_fd,  $v_header_list[$i]['offset'])) {
</span><span class="cx">                 // ----- Close the zip file
</span><span class="cx">                 $this-&gt;privCloseFd();
</span><span class="lines">@@ -5346,10 +4848,8 @@
</span><span class="cx">                 PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
</span><span class="cx"> 
</span><span class="cx">                 // ----- Return
</span><del>-                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">                 return PclZip::errorCode();
</span><span class="cx">             }
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position after fseek : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">             // ----- Read the file header
</span><span class="cx">             $v_local_header = array();
</span><span class="lines">@@ -5360,10 +4860,9 @@
</span><span class="cx">                 @unlink($v_zip_temp_name);
</span><span class="cx"> 
</span><span class="cx">                 // ----- Return
</span><del>-                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">                 return $v_result;
</span><span class="cx">             }
</span><del>-
</del><ins>+            
</ins><span class="cx">             // ----- Check that local file header is same as central file header
</span><span class="cx">             if ($this-&gt;privCheckFileHeaders($v_local_header,
</span><span class="cx">                                                         $v_header_list[$i]) != 1) {
</span><span class="lines">@@ -5379,10 +4878,8 @@
</span><span class="cx">                 @unlink($v_zip_temp_name);
</span><span class="cx"> 
</span><span class="cx">                 // ----- Return
</span><del>-                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">                 return $v_result;
</span><span class="cx">             }
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Offset for this file is '&quot;.$v_header_list[$i]['offset'].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">             // ----- Read/write the data block
</span><span class="cx">             if (($v_result = PclZipUtilCopyBlock($this-&gt;zip_fd, $v_temp_zip-&gt;zip_fd, $v_header_list[$i]['compressed_size'])) != 1) {
</span><span class="lines">@@ -5392,27 +4889,22 @@
</span><span class="cx">                 @unlink($v_zip_temp_name);
</span><span class="cx"> 
</span><span class="cx">                 // ----- Return
</span><del>-                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">                 return $v_result;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // ----- Store the offset of the central dir
</span><span class="cx">         $v_offset = @ftell($v_temp_zip-&gt;zip_fd);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;New offset of central dir : $v_offset&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Re-Create the Central Dir files header
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Creates the new central directory&quot;);
</del><span class="cx">         for ($i=0; $i&lt;sizeof($v_header_list); $i++) {
</span><span class="cx">             // ----- Create the file header
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Offset of file : &quot;.$v_header_list[$i]['offset']);
</del><span class="cx">             if (($v_result = $v_temp_zip-&gt;privWriteCentralFileHeader($v_header_list[$i])) != 1) {
</span><span class="cx">                 $v_temp_zip-&gt;privCloseFd();
</span><span class="cx">                 $this-&gt;privCloseFd();
</span><span class="cx">                 @unlink($v_zip_temp_name);
</span><span class="cx"> 
</span><span class="cx">                 // ----- Return
</span><del>-                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">                 return $v_result;
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="lines">@@ -5420,7 +4912,6 @@
</span><span class="cx">             $v_temp_zip-&gt;privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Creates the central directory footer&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Zip file comment
</span><span class="cx">         $v_comment = '';
</span><span class="lines">@@ -5440,7 +4931,6 @@
</span><span class="cx">             @unlink($v_zip_temp_name);
</span><span class="cx"> 
</span><span class="cx">             // ----- Return
</span><del>-            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">             return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -5456,22 +4946,20 @@
</span><span class="cx">         // TBC : I should test the result ...
</span><span class="cx">         //@rename($v_zip_temp_name, $this-&gt;zipname);
</span><span class="cx">         PclZipUtilRename($v_zip_temp_name, $this-&gt;zipname);
</span><del>-
</del><ins>+    
</ins><span class="cx">         // ----- Destroy the temporary archive
</span><span class="cx">         unset($v_temp_zip);
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Remove every files : reset the file
</span><span class="cx">     else if ($v_central_dir['entries'] != 0) {
</span><span class="cx">         $this-&gt;privCloseFd();
</span><span class="cx"> 
</span><span class="cx">         if (($v_result = $this-&gt;privOpenFd('wb')) != 1) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (($v_result = $this-&gt;privWriteCentralHeader(0, 0, 0, '')) != 1) {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -5479,7 +4967,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -5499,25 +4986,21 @@
</span><span class="cx">   {
</span><span class="cx">     $v_result = 1;
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privDirCheck&quot;, &quot;entry='$p_dir', is_dir='&quot;.($p_is_dir?&quot;true&quot;:&quot;false&quot;).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Remove the final '/'
</span><span class="cx">     if (($p_is_dir) &amp;&amp; (substr($p_dir, -1)=='/'))
</span><span class="cx">     {
</span><span class="cx">       $p_dir = substr($p_dir, 0, strlen($p_dir)-1);
</span><span class="cx">     }
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Looking for entry '$p_dir'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Check the directory availability
</span><span class="cx">     if ((is_dir($p_dir)) || ($p_dir == &quot;&quot;))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, &quot;'$p_dir' is a directory&quot;);
</del><span class="cx">       return 1;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Extract parent directory
</span><span class="cx">     $p_parent_dir = dirname($p_dir);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Parent directory is '$p_parent_dir'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Just a check
</span><span class="cx">     if ($p_parent_dir != $p_dir)
</span><span class="lines">@@ -5527,26 +5010,22 @@
</span><span class="cx">       {
</span><span class="cx">         if (($v_result = $this-&gt;privDirCheck($p_parent_dir)) != 1)
</span><span class="cx">         {
</span><del>-          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">           return $v_result;
</span><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Create the directory
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Create directory '$p_dir'&quot;);
</del><span class="cx">     if (!@mkdir($p_dir, 0777))
</span><span class="cx">     {
</span><span class="cx">       // ----- Error log
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, &quot;Unable to create directory '$p_dir'&quot;);
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result, &quot;Directory '$p_dir' created&quot;);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -5560,41 +5039,34 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privMerge(&amp;$p_archive_to_add)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privMerge&quot;, &quot;archive='&quot;.$p_archive_to_add-&gt;zipname.&quot;'&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if the archive_to_add exists
</span><span class="cx">     if (!is_file($p_archive_to_add-&gt;zipname))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Archive to add does not exist. End of merge.&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Nothing to merge, so merge is a success
</span><span class="cx">       $v_result = 1;
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if the archive exists
</span><span class="cx">     if (!is_file($this-&gt;zipname))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Archive does not exist, duplicate the archive_to_add.&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Do a duplicate
</span><span class="cx">       $v_result = $this-&gt;privDuplicate($p_archive_to_add-&gt;zipname);
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the zip file
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">     if (($v_result=$this-&gt;privOpenFd('rb')) != 1)
</span><span class="cx">     {
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -5603,23 +5075,18 @@
</span><span class="cx">     if (($v_result = $this-&gt;privReadEndCentralDir($v_central_dir)) != 1)
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privCloseFd();
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Go to beginning of File
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position in zip : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">     @rewind($this-&gt;zip_fd);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position in zip : &quot;.ftell($this-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Open the archive_to_add file
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open archive_to_add in binary read mode&quot;);
</del><span class="cx">     if (($v_result=$p_archive_to_add-&gt;privOpenFd('rb')) != 1)
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privCloseFd();
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -5630,20 +5097,16 @@
</span><span class="cx">       $this-&gt;privCloseFd();
</span><span class="cx">       $p_archive_to_add-&gt;privCloseFd();
</span><span class="cx"> 
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Go to beginning of File
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position in archive_to_add : &quot;.ftell($p_archive_to_add-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx">     @rewind($p_archive_to_add-&gt;zip_fd);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Position in archive_to_add : &quot;.ftell($p_archive_to_add-&gt;zip_fd).&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Creates a temporay file
</span><span class="cx">     $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the temporary file in write mode
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">     if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privCloseFd();
</span><span class="lines">@@ -5652,7 +5115,6 @@
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -5662,7 +5124,6 @@
</span><span class="cx">     while ($v_size != 0)
</span><span class="cx">     {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">       $v_buffer = fread($this-&gt;zip_fd, $v_read_size);
</span><span class="cx">       @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
</span><span class="cx">       $v_size -= $v_read_size;
</span><span class="lines">@@ -5673,7 +5134,6 @@
</span><span class="cx">     while ($v_size != 0)
</span><span class="cx">     {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">       $v_buffer = fread($p_archive_to_add-&gt;zip_fd, $v_read_size);
</span><span class="cx">       @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
</span><span class="cx">       $v_size -= $v_read_size;
</span><span class="lines">@@ -5681,14 +5141,12 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Store the offset of the central dir
</span><span class="cx">     $v_offset = @ftell($v_zip_temp_fd);
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;New offset of central dir : $v_offset&quot;);
</del><span class="cx"> 
</span><span class="cx">     // ----- Copy the block of file headers from the old archive
</span><span class="cx">     $v_size = $v_central_dir['size'];
</span><span class="cx">     while ($v_size != 0)
</span><span class="cx">     {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">       $v_buffer = @fread($this-&gt;zip_fd, $v_read_size);
</span><span class="cx">       @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
</span><span class="cx">       $v_size -= $v_read_size;
</span><span class="lines">@@ -5699,7 +5157,6 @@
</span><span class="cx">     while ($v_size != 0)
</span><span class="cx">     {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">       $v_buffer = @fread($p_archive_to_add-&gt;zip_fd, $v_read_size);
</span><span class="cx">       @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
</span><span class="cx">       $v_size -= $v_read_size;
</span><span class="lines">@@ -5730,7 +5187,6 @@
</span><span class="cx">       unset($v_header_list);
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -5756,7 +5212,6 @@
</span><span class="cx">     PclZipUtilRename($v_zip_temp_name, $this-&gt;zipname);
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -5769,33 +5224,27 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privDuplicate($p_archive_filename)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZip::privDuplicate&quot;, &quot;archive_filename='$p_archive_filename'&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if the $p_archive_filename exists
</span><span class="cx">     if (!is_file($p_archive_filename))
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Archive to duplicate does not exist. End of duplicate.&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Nothing to duplicate, so duplicate is a success.
</span><span class="cx">       $v_result = 1;
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the zip file
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">     if (($v_result=$this-&gt;privOpenFd('wb')) != 1)
</span><span class="cx">     {
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Open the temporary file in write mode
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Open file in binary read mode&quot;);
</del><span class="cx">     if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0)
</span><span class="cx">     {
</span><span class="cx">       $this-&gt;privCloseFd();
</span><span class="lines">@@ -5803,7 +5252,6 @@
</span><span class="cx">       PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode');
</span><span class="cx"> 
</span><span class="cx">       // ----- Return
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
</del><span class="cx">       return PclZip::errorCode();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -5813,7 +5261,6 @@
</span><span class="cx">     while ($v_size != 0)
</span><span class="cx">     {
</span><span class="cx">       $v_read_size = ($v_size &lt; PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">       $v_buffer = fread($v_zip_temp_fd, $v_read_size);
</span><span class="cx">       @fwrite($this-&gt;zip_fd, $v_buffer, $v_read_size);
</span><span class="cx">       $v_size -= $v_read_size;
</span><span class="lines">@@ -5826,7 +5273,6 @@
</span><span class="cx">     @fclose($v_zip_temp_fd);
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -5873,36 +5319,28 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privDisableMagicQuotes()
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privDisableMagicQuotes', &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if function exists
</span><span class="cx">     if (   (!function_exists(&quot;get_magic_quotes_runtime&quot;))
</span><span class="cx">             || (!function_exists(&quot;set_magic_quotes_runtime&quot;))) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Functions *et_magic_quotes_runtime are not supported&quot;);
-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if already done
</span><span class="cx">     if ($this-&gt;magic_quotes_status != -1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;magic_quote already disabled&quot;);
-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // ----- Get and memorize the magic_quote value
</span><span class="cx">         $this-&gt;magic_quotes_status = @get_magic_quotes_runtime();
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Current magic_quotes_runtime status is '&quot;.($this-&gt;magic_quotes_status==0?'disable':'enable').&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">         // ----- Disable magic_quotes
</span><span class="cx">         if ($this-&gt;magic_quotes_status == 1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Disable magic_quotes&quot;);
</del><span class="cx">           @set_magic_quotes_runtime(0);
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -5915,32 +5353,25 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function privSwapBackMagicQuotes()
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privSwapBackMagicQuotes', &quot;&quot;);
</del><span class="cx">     $v_result=1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if function exists
</span><span class="cx">     if (   (!function_exists(&quot;get_magic_quotes_runtime&quot;))
</span><span class="cx">             || (!function_exists(&quot;set_magic_quotes_runtime&quot;))) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Functions *et_magic_quotes_runtime are not supported&quot;);
-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if something to do
</span><span class="cx">     if ($this-&gt;magic_quotes_status != -1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;magic_quote not modified&quot;);
-      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">       return $v_result;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // ----- Swap back magic_quotes
</span><span class="cx">         if ($this-&gt;magic_quotes_status == 1) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Enable back magic_quotes&quot;);
</del><span class="cx">             @set_magic_quotes_runtime($this-&gt;magic_quotes_status);
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -5957,7 +5388,6 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function PclZipUtilPathReduction($p_dir)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZipUtilPathReduction&quot;, &quot;dir='$p_dir'&quot;);
</del><span class="cx">     $v_result = &quot;&quot;;
</span><span class="cx"> 
</span><span class="cx">     // ----- Look for not empty path
</span><span class="lines">@@ -5984,7 +5414,6 @@
</span><span class="cx">                         // ----- It is an invalid path, so the path is not modified
</span><span class="cx">                         // TBC
</span><span class="cx">                         $v_result = $p_dir;
</span><del>-                //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, &quot;Invalid path is unchanged&quot;);
</del><span class="cx">                 $v_skip = 0;
</span><span class="cx">                     }
</span><span class="cx">                   }
</span><span class="lines">@@ -6008,7 +5437,7 @@
</span><span class="cx">                   }
</span><span class="cx">         }
</span><span class="cx">       }
</span><del>-
</del><ins>+      
</ins><span class="cx">       // ----- Look for skip
</span><span class="cx">       if ($v_skip &gt; 0) {
</span><span class="cx">         while ($v_skip &gt; 0) {
</span><span class="lines">@@ -6019,7 +5448,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -6041,19 +5469,16 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function PclZipUtilPathInclusion($p_dir, $p_path)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZipUtilPathInclusion&quot;, &quot;dir='$p_dir', path='$p_path'&quot;);
</del><span class="cx">     $v_result = 1;
</span><del>-
</del><ins>+    
</ins><span class="cx">     // ----- Look for path beginning by ./
</span><span class="cx">     if (   ($p_dir == '.')
</span><span class="cx">         || ((strlen($p_dir) &gt;=2) &amp;&amp; (substr($p_dir, 0, 2) == './'))) {
</span><span class="cx">       $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Replacing ./ by full path in p_dir '&quot;.$p_dir.&quot;'&quot;);
</del><span class="cx">     }
</span><span class="cx">     if (   ($p_path == '.')
</span><span class="cx">         || ((strlen($p_path) &gt;=2) &amp;&amp; (substr($p_path, 0, 2) == './'))) {
</span><span class="cx">       $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1);
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Replacing ./ by full path in p_path '&quot;.$p_path.&quot;'&quot;);
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Explode dir and path by directory separator
</span><span class="lines">@@ -6066,7 +5491,6 @@
</span><span class="cx">     $i = 0;
</span><span class="cx">     $j = 0;
</span><span class="cx">     while (($i &lt; $v_list_dir_size) &amp;&amp; ($j &lt; $v_list_path_size) &amp;&amp; ($v_result)) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Working on dir($i)='&quot;.$v_list_dir[$i].&quot;' and path($j)='&quot;.$v_list_path[$j].&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Look for empty dir (path reduction)
</span><span class="cx">       if ($v_list_dir[$i] == '') {
</span><span class="lines">@@ -6080,7 +5504,6 @@
</span><span class="cx"> 
</span><span class="cx">       // ----- Compare the items
</span><span class="cx">       if (($v_list_dir[$i] != $v_list_path[$j]) &amp;&amp; ($v_list_dir[$i] != '') &amp;&amp; ( $v_list_path[$j] != ''))  {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Items ($i,$j) are different&quot;);
</del><span class="cx">         $v_result = 0;
</span><span class="cx">       }
</span><span class="cx"> 
</span><span class="lines">@@ -6091,11 +5514,9 @@
</span><span class="cx"> 
</span><span class="cx">     // ----- Look if everything seems to be the same
</span><span class="cx">     if ($v_result) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Look for tie break&quot;);
</del><span class="cx">       // ----- Skip all the empty items
</span><span class="cx">       while (($j &lt; $v_list_path_size) &amp;&amp; ($v_list_path[$j] == '')) $j++;
</span><span class="cx">       while (($i &lt; $v_list_dir_size) &amp;&amp; ($v_list_dir[$i] == '')) $i++;
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Looking on dir($i)='&quot;.($i &lt; $v_list_dir_size?$v_list_dir[$i]:'').&quot;' and path($j)='&quot;.($j &lt; $v_list_path_size?$v_list_path[$j]:'').&quot;'&quot;);
</del><span class="cx"> 
</span><span class="cx">       if (($i &gt;= $v_list_dir_size) &amp;&amp; ($j &gt;= $v_list_path_size)) {
</span><span class="cx">         // ----- There are exactly the same
</span><span class="lines">@@ -6108,7 +5529,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -6126,30 +5546,23 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZipUtilCopyBlock&quot;, &quot;size=$p_size, mode=$p_mode&quot;);
</del><span class="cx">     $v_result = 1;
</span><span class="cx"> 
</span><span class="cx">     if ($p_mode==0)
</span><span class="cx">     {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Src offset before read :&quot;.(@ftell($p_src)));
-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Dest offset before write :&quot;.(@ftell($p_dest)));
</del><span class="cx">       while ($p_size != 0)
</span><span class="cx">       {
</span><span class="cx">         $v_read_size = ($p_size &lt; PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">         $v_buffer = @fread($p_src, $v_read_size);
</span><span class="cx">         @fwrite($p_dest, $v_buffer, $v_read_size);
</span><span class="cx">         $p_size -= $v_read_size;
</span><span class="cx">       }
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Src offset after read :&quot;.(@ftell($p_src)));
-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Dest offset after write :&quot;.(@ftell($p_dest)));
</del><span class="cx">     }
</span><span class="cx">     else if ($p_mode==1)
</span><span class="cx">     {
</span><span class="cx">       while ($p_size != 0)
</span><span class="cx">       {
</span><span class="cx">         $v_read_size = ($p_size &lt; PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">         $v_buffer = @gzread($p_src, $v_read_size);
</span><span class="cx">         @fwrite($p_dest, $v_buffer, $v_read_size);
</span><span class="cx">         $p_size -= $v_read_size;
</span><span class="lines">@@ -6160,7 +5573,6 @@
</span><span class="cx">       while ($p_size != 0)
</span><span class="cx">       {
</span><span class="cx">         $v_read_size = ($p_size &lt; PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">         $v_buffer = @fread($p_src, $v_read_size);
</span><span class="cx">         @gzwrite($p_dest, $v_buffer, $v_read_size);
</span><span class="cx">         $p_size -= $v_read_size;
</span><span class="lines">@@ -6171,7 +5583,6 @@
</span><span class="cx">       while ($p_size != 0)
</span><span class="cx">       {
</span><span class="cx">         $v_read_size = ($p_size &lt; PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, &quot;Read $v_read_size bytes&quot;);
</del><span class="cx">         $v_buffer = @gzread($p_src, $v_read_size);
</span><span class="cx">         @gzwrite($p_dest, $v_buffer, $v_read_size);
</span><span class="cx">         $p_size -= $v_read_size;
</span><span class="lines">@@ -6179,7 +5590,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -6198,26 +5608,21 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function PclZipUtilRename($p_src, $p_dest)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZipUtilRename&quot;, &quot;source=$p_src, destination=$p_dest&quot;);
</del><span class="cx">     $v_result = 1;
</span><span class="cx"> 
</span><span class="cx">     // ----- Try to rename the files
</span><span class="cx">     if (!@rename($p_src, $p_dest)) {
</span><del>-      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Fail to rename file, try copy+unlink&quot;);
</del><span class="cx"> 
</span><span class="cx">       // ----- Try to copy &amp; unlink the src
</span><span class="cx">       if (!@copy($p_src, $p_dest)) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Fail to copy file&quot;);
</del><span class="cx">         $v_result = 0;
</span><span class="cx">       }
</span><span class="cx">       else if (!@unlink($p_src)) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, &quot;Fail to unlink old filename&quot;);
</del><span class="cx">         $v_result = 0;
</span><span class="cx">       }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // ----- Return
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="lines">@@ -6233,8 +5638,7 @@
</span><span class="cx">   // --------------------------------------------------------------------------------
</span><span class="cx">   function PclZipUtilOptionText($p_option)
</span><span class="cx">   {
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, &quot;PclZipUtilOptionText&quot;, &quot;option='&quot;.$p_option.&quot;'&quot;);
-
</del><ins>+    
</ins><span class="cx">     $v_list = get_defined_constants();
</span><span class="cx">     for (reset($v_list); $v_key = key($v_list); next($v_list)) {
</span><span class="cx">             $v_prefix = substr($v_key, 0, 10);
</span><span class="lines">@@ -6242,14 +5646,12 @@
</span><span class="cx">            || ($v_prefix == 'PCLZIP_CB_')
</span><span class="cx">            || ($v_prefix == 'PCLZIP_ATT'))
</span><span class="cx">                 &amp;&amp; ($v_list[$v_key] == $p_option)) {
</span><del>-        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_key);
</del><span class="cx">         return $v_key;
</span><span class="cx">             }
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     $v_result = 'Unknown';
</span><span class="cx"> 
</span><del>-    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
</del><span class="cx">     return $v_result;
</span><span class="cx">   }
</span><span class="cx">   // --------------------------------------------------------------------------------
</span></span></pre>
</div>
</div>

</body>
</html>