Changeset 95130 in spip-zone


Ignore:
Timestamp:
Feb 14, 2016, 10:32:07 AM (4 years ago)
Author:
marcimat@…
Message:

Report de r95126 et r95127 sur la vieille lib PCLTar relatifs à PHP7 et aux notices PHP.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _core_/branches/spip-3.1/plugins/svp/inc/pcltar.php

    r93656 r95130  
    295295        //  Exemple : $v_list = PclTarList("my.tar");
    296296        //            for ($i=0; $i<sizeof($v_list); $i++)
    297         //              echo "Filename :'".$v_list[$i][filename]."'<br>";
     297        //              echo "Filename :'".$v_list[$i]['filename']."'<br>";
    298298        // --------------------------------------------------------------------------------
    299299        function PclTarList($p_tarname, $p_mode = "") {
     
    367367
    368368                // ----- Call the extracting fct
    369                 if (($v_result = PclTarHandleExtract($p_tarname, 0, $p_list, "complete", $p_path, $v_tar_mode,
     369                if (($v_result = PclTarHandleExtract($p_tarname, 0, $p_list, "complete", $p_path, $p_mode,
    370370                                $p_remove_path)) != 1
    371371                ) {
     
    431431                if (is_array($p_filelist)) {
    432432                        // ----- Call the extracting fct
    433                         if (($v_result = PclTarHandleExtract($p_tarname, $p_filelist, $p_list, "partial", $p_path, $v_tar_mode,
     433                        if (($v_result = PclTarHandleExtract($p_tarname, $p_filelist, $p_list, "partial", $p_path, $p_mode,
    434434                                        $p_remove_path)) != 1
    435435                        ) {
     
    445445
    446446                                // ----- Call the extracting fct
    447                                 if (($v_result = PclTarHandleExtract($p_tarname, $v_list, $p_list, "partial", $p_path, $v_tar_mode,
     447                                if (($v_result = PclTarHandleExtract($p_tarname, $v_list, $p_list, "partial", $p_path, $p_mode,
    448448                                                $p_remove_path)) != 1
    449449                                ) {
     
    522522                        // ----- Call the extracting fct
    523523                        if (($v_result = PclTarHandleExtractByIndexList($p_tarname, "$p_index", $p_list, $p_path, $p_remove_path,
    524                                         $v_tar_mode)) != 1
     524                                        $p_mode)) != 1
    525525                        ) {
    526526                                TrFctEnd(__FILE__, __LINE__, 0, PclErrorString());
     
    533533                                // ----- Call the extracting fct
    534534                                if (($v_result = PclTarHandleExtractByIndexList($p_tarname, $p_index, $p_list, $p_path, $p_remove_path,
    535                                                 $v_tar_mode)) != 1
     535                                                $p_mode)) != 1
    536536                                ) {
    537537                                        TrFctEnd(__FILE__, __LINE__, 0, PclErrorString());
     
    17121712
    17131713                // ----- Set the properties in the header "structure"
    1714                 $p_header[filename] = $v_reduce_filename;
    1715                 $p_header[mode] = $v_perms;
    1716                 $p_header[uid] = $v_uid;
    1717                 $p_header[gid] = $v_gid;
    1718                 $p_header[size] = $v_size;
    1719                 $p_header[mtime] = $v_mtime;
    1720                 $p_header[typeflag] = $v_typeflag;
    1721                 $p_header[status] = "added";
     1714                $p_header['filename'] = $v_reduce_filename;
     1715                $p_header['mode'] = $v_perms;
     1716                $p_header['uid'] = $v_uid;
     1717                $p_header['gid'] = $v_gid;
     1718                $p_header['size'] = $v_size;
     1719                $p_header['mtime'] = $v_mtime;
     1720                $p_header['typeflag'] = $v_typeflag;
     1721                $p_header['status'] = "added";
    17221722
    17231723                // ----- Return
     
    18831883
    18841884                        // ----- Look for empty blocks to skip
    1885                         if ($v_header[filename] == "") {
     1885                        if ($v_header['filename'] == "") {
    18861886                                TrFctMessage(__FILE__, __LINE__, 2, "Empty block found. End of archive ?");
    18871887                                continue;
     
    19071907
    19081908                                                // ----- Look if the directory is in the filename path
    1909                                                 if ((strlen($v_header[filename]) > strlen($p_file_list[$i])) && (substr($v_header[filename], 0,
     1909                                                if ((strlen($v_header['filename']) > strlen($p_file_list[$i])) && (substr($v_header['filename'], 0,
    19101910                                                                        strlen($p_file_list[$i])) == $p_file_list[$i])
    19111911                                                ) {
     
    19201920                                        } // ----- It is a file, so compare the file names
    19211921                                        else {
    1922                                                 if ($p_file_list[$i] == $v_header[filename]) {
     1922                                                if ($p_file_list[$i] == $v_header['filename']) {
    19231923                                                        // ----- File found
    19241924                                                        TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' should be extracted");
     
    19441944                                // ----- Look for path to remove
    19451945                                if (($p_remove_path != "")
    1946                                         && (substr($v_header[filename], 0, $p_remove_path_size) == $p_remove_path)
     1946                                        && (substr($v_header['filename'], 0, $p_remove_path_size) == $p_remove_path)
    19471947                                ) {
    19481948                                        TrFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '$v_header[filename]'");
    19491949                                        // ----- Remove the path
    1950                                         $v_header[filename] = substr($v_header[filename], $p_remove_path_size);
     1950                                        $v_header['filename'] = substr($v_header['filename'], $p_remove_path_size);
    19511951                                        TrFctMessage(__FILE__, __LINE__, 3, "Reslting file is '$v_header[filename]'");
    19521952                                }
     
    19621962
    19631963                                        // ----- Add the path
    1964                                         if (substr($v_header[filename], 0, 1) == "/") {
    1965                                                 $v_header[filename] = $p_path . $v_header[filename];
     1964                                        if (substr($v_header['filename'], 0, 1) == "/") {
     1965                                                $v_header['filename'] = $p_path . $v_header['filename'];
    19661966                                        } else {
    1967                                                 $v_header[filename] = $p_path . "/" . $v_header[filename];
     1967                                                $v_header['filename'] = $p_path . "/" . $v_header['filename'];
    19681968                                        }
    19691969                                }
     
    19741974
    19751975                                // ----- Check that the file does not exists
    1976                                 if (file_exists($v_header[filename])) {
     1976                                if (file_exists($v_header['filename'])) {
    19771977                                        TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' already exists");
    19781978
    19791979                                        // ----- Look if file is a directory
    1980                                         if (is_dir($v_header[filename])) {
     1980                                        if (is_dir($v_header['filename'])) {
    19811981                                                TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is a directory");
    19821982
    19831983                                                // ----- Change the file status
    1984                                                 $v_header[status] = "already_a_directory";
     1984                                                $v_header['status'] = "already_a_directory";
    19851985
    19861986                                                // ----- Skip the extract
     
    19891989                                        } // ----- Look if file is write protected
    19901990                                        else {
    1991                                                 if (!is_writeable($v_header[filename])) {
     1991                                                if (!is_writeable($v_header['filename'])) {
    19921992                                                        TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is write protected");
    19931993
    19941994                                                        // ----- Change the file status
    1995                                                         $v_header[status] = "write_protected";
     1995                                                        $v_header['status'] = "write_protected";
    19961996
    19971997                                                        // ----- Skip the extract
     
    20002000                                                } // ----- Look if the extracted file is older
    20012001                                                else {
    2002                                                         if (filemtime($v_header[filename]) > $v_header[mtime]) {
     2002                                                        if (filemtime($v_header['filename']) > $v_header['mtime']) {
    20032003                                                                TrFctMessage(__FILE__, __LINE__, 2,
    20042004                                                                        "Existing file '$v_header[filename]' is newer (" . date("l dS of F Y h:i:s A",
    2005                                                                                 filemtime($v_header[filename])) . ") than the extracted file (" . date("l dS of F Y h:i:s A",
    2006                                                                                 $v_header[mtime]) . ")");
     2005                                                                                filemtime($v_header['filename'])) . ") than the extracted file (" . date("l dS of F Y h:i:s A",
     2006                                                                                $v_header['mtime']) . ")");
    20072007
    20082008                                                                // ----- Change the file status
    2009                                                                 $v_header[status] = "newer_exist";
     2009                                                                $v_header['status'] = "newer_exist";
    20102010
    20112011                                                                // ----- Skip the extract
     
    20172017                                } // ----- Check the directory availability and create it if necessary
    20182018                                else {
    2019                                         if ($v_header[typeflag] == "5") {
    2020                                                 $v_dir_to_check = $v_header[filename];
     2019                                        if ($v_header['typeflag'] == "5") {
     2020                                                $v_dir_to_check = $v_header['filename'];
    20212021                                        } else {
    2022                                                 if (!strstr($v_header[filename], "/")) {
     2022                                                if (!strstr($v_header['filename'], "/")) {
    20232023                                                        $v_dir_to_check = "";
    20242024                                                } else {
    2025                                                         $v_dir_to_check = dirname($v_header[filename]);
     2025                                                        $v_dir_to_check = dirname($v_header['filename']);
    20262026                                                }
    20272027                                        }
     
    20312031
    20322032                                                // ----- Change the file status
    2033                                                 $v_header[status] = "path_creation_fail";
     2033                                                $v_header['status'] = "path_creation_fail";
    20342034
    20352035                                                // ----- Skip the extract
     
    20402040
    20412041                                // ----- Do the extraction
    2042                                 if (($v_extract_file) && ($v_header[typeflag] != "5")) {
     2042                                if (($v_extract_file) && ($v_header['typeflag'] != "5")) {
    20432043                                        // ----- Open the destination file in write mode
    2044                                         if (($v_dest_file = @fopen($v_header[filename], "wb")) == 0) {
     2044                                        if (($v_dest_file = @fopen($v_header['filename'], "wb")) == 0) {
    20452045                                                TrFctMessage(__FILE__, __LINE__, 2, "Error while opening '$v_header[filename]' in write binary mode");
    20462046
    20472047                                                // ----- Change the file status
    2048                                                 $v_header[status] = "write_error";
     2048                                                $v_header['status'] = "write_error";
    20492049
    20502050                                                // ----- Jump to next file
    20512051                                                TrFctMessage(__FILE__, __LINE__, 2, "Jump to next file");
    20522052                                                if ($p_tar_mode == "tar") {
    2053                                                         fseek($v_tar, ftell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2053                                                        fseek($v_tar, ftell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    20542054                                                } else {
    2055                                                         gzseek($v_tar, gztell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2055                                                        gzseek($v_tar, gztell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    20562056                                                }
    20572057                                        } else {
     
    20592059
    20602060                                                // ----- Read data
    2061                                                 $n = floor($v_header[size] / 512);
     2061                                                $n = floor($v_header['size'] / 512);
    20622062                                                for ($i = 0; $i < $n; $i++) {
    20632063                                                        TrFctMessage(__FILE__, __LINE__, 3, "Read complete 512 bytes block number " . ($i + 1));
     
    20692069                                                        fwrite($v_dest_file, $v_content, 512);
    20702070                                                }
    2071                                                 if (($v_header[size] % 512) != 0) {
    2072                                                         TrFctMessage(__FILE__, __LINE__, 3, "Read last " . ($v_header[size] % 512) . " bytes in a 512 block");
     2071                                                if (($v_header['size'] % 512) != 0) {
     2072                                                        TrFctMessage(__FILE__, __LINE__, 3, "Read last " . ($v_header['size'] % 512) . " bytes in a 512 block");
    20732073                                                        if ($p_tar_mode == "tar") {
    20742074                                                                $v_content = fread($v_tar, 512);
     
    20762076                                                                $v_content = gzread($v_tar, 512);
    20772077                                                        }
    2078                                                         fwrite($v_dest_file, $v_content, ($v_header[size] % 512));
     2078                                                        fwrite($v_dest_file, $v_content, ($v_header['size'] % 512));
    20792079                                                }
    20802080
     
    20832083
    20842084                                                // ----- Change the file mode, mtime
    2085                                                 touch($v_header[filename], $v_header[mtime]);
    2086                                                 //chmod($v_header[filename], DecOct($v_header[mode]));
     2085                                                touch($v_header['filename'], $v_header['mtime']);
     2086                                                //chmod($v_header['filename'], DecOct($v_header['mode']));
    20872087                                        }
    20882088
    20892089                                        // ----- Check the file size
    20902090                                        clearstatcache();
    2091                                         if (filesize($v_header[filename]) != $v_header[size]) {
     2091                                        if (filesize($v_header['filename']) != $v_header['size']) {
    20922092                                                // ----- Close the archive file
    20932093                                                if ($p_tar_mode == "tar") {
     
    21152115                                        TrFctMessage(__FILE__, __LINE__, 2, "Jump to next file");
    21162116                                        if ($p_tar_mode == "tar") {
    2117                                                 fseek($v_tar, ftell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2117                                                fseek($v_tar, ftell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    21182118                                        } else {
    2119                                                 gzseek($v_tar, gztell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2119                                                gzseek($v_tar, gztell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    21202120                                        }
    21212121                                }
     
    21292129                                // ----- Jump to next file
    21302130                                if ($p_tar_mode == "tar") {
    2131                                         fseek($v_tar, ($p_tar_mode == "tar" ? ftell($v_tar) : gztell($v_tar)) + (ceil(($v_header[size] / 512)) * 512));
     2131                                        fseek($v_tar, ($p_tar_mode == "tar" ? ftell($v_tar) : gztell($v_tar)) + (ceil(($v_header['size'] / 512)) * 512));
    21322132                                } else {
    2133                                         gzseek($v_tar, gztell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2133                                        gzseek($v_tar, gztell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    21342134                                }
    21352135
     
    21492149
    21502150                                // ----- Log extracted files
    2151                                 if (($v_file_dir = dirname($v_header[filename])) == $v_header[filename]) {
     2151                                if (($v_file_dir = dirname($v_header['filename'])) == $v_header['filename']) {
    21522152                                        $v_file_dir = "";
    21532153                                }
    2154                                 if ((substr($v_header[filename], 0, 1) == "/") && ($v_file_dir == "")) {
     2154                                if ((substr($v_header['filename'], 0, 1) == "/") && ($v_file_dir == "")) {
    21552155                                        $v_file_dir = "/";
    21562156                                }
     
    23442344
    23452345                        // ----- Look for empty blocks to skip
    2346                         if ($v_header[filename] == "") {
     2346                        if ($v_header['filename'] == "") {
    23472347                                TrFctMessage(__FILE__, __LINE__, 2, "Empty block found. End of archive ?");
    23482348                                continue;
     
    23772377                                // ----- Jump to next file
    23782378                                if ($p_tar_mode == "tar") {
    2379                                         fseek($v_tar, ($p_tar_mode == "tar" ? ftell($v_tar) : gztell($v_tar)) + (ceil(($v_header[size] / 512)) * 512));
     2379                                        fseek($v_tar, ($p_tar_mode == "tar" ? ftell($v_tar) : gztell($v_tar)) + (ceil(($v_header['size'] / 512)) * 512));
    23802380                                } else {
    2381                                         gzseek($v_tar, gztell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2381                                        gzseek($v_tar, gztell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    23822382                                }
    23832383
     
    23972397
    23982398                                // ----- Log extracted files
    2399                                 if (($v_file_dir = dirname($v_header[filename])) == $v_header[filename]) {
     2399                                if (($v_file_dir = dirname($v_header['filename'])) == $v_header['filename']) {
    24002400                                        $v_file_dir = "";
    24012401                                }
    2402                                 if ((substr($v_header[filename], 0, 1) == "/") && ($v_file_dir == "")) {
     2402                                if ((substr($v_header['filename'], 0, 1) == "/") && ($v_file_dir == "")) {
    24032403                                        $v_file_dir = "/";
    24042404                                }
     
    24422442                // ----- Look for path to remove
    24432443                if (($p_remove_path != "")
    2444                         && (substr($v_header[filename], 0, $p_remove_path_size) == $p_remove_path)
     2444                        && (substr($v_header['filename'], 0, $p_remove_path_size) == $p_remove_path)
    24452445                ) {
    24462446                        TrFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '$v_header[filename]'");
    24472447                        // ----- Remove the path
    2448                         $v_header[filename] = substr($v_header[filename], $p_remove_path_size);
     2448                        $v_header['filename'] = substr($v_header['filename'], $p_remove_path_size);
    24492449                        TrFctMessage(__FILE__, __LINE__, 3, "Resulting file is '$v_header[filename]'");
    24502450                }
     
    24602460
    24612461                        // ----- Add the path
    2462                         if (substr($v_header[filename], 0, 1) == "/") {
    2463                                 $v_header[filename] = $p_path . $v_header[filename];
     2462                        if (substr($v_header['filename'], 0, 1) == "/") {
     2463                                $v_header['filename'] = $p_path . $v_header['filename'];
    24642464                        } else {
    2465                                 $v_header[filename] = $p_path . "/" . $v_header[filename];
     2465                                $v_header['filename'] = $p_path . "/" . $v_header['filename'];
    24662466                        }
    24672467                }
     
    24712471
    24722472                // ----- Check that the file does not exists
    2473                 if (file_exists($v_header[filename])) {
     2473                if (file_exists($v_header['filename'])) {
    24742474                        TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' already exists");
    24752475
    24762476                        // ----- Look if file is a directory
    2477                         if (is_dir($v_header[filename])) {
     2477                        if (is_dir($v_header['filename'])) {
    24782478                                TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is a directory");
    24792479
    24802480                                // ----- Change the file status
    2481                                 $v_header[status] = "already_a_directory";
     2481                                $v_header['status'] = "already_a_directory";
    24822482
    24832483                                // ----- Skip the extract
     
    24862486                        } // ----- Look if file is write protected
    24872487                        else {
    2488                                 if (!is_writeable($v_header[filename])) {
     2488                                if (!is_writeable($v_header['filename'])) {
    24892489                                        TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is write protected");
    24902490
    24912491                                        // ----- Change the file status
    2492                                         $v_header[status] = "write_protected";
     2492                                        $v_header['status'] = "write_protected";
    24932493
    24942494                                        // ----- Skip the extract
     
    24972497                                } // ----- Look if the extracted file is older
    24982498                                else {
    2499                                         if (filemtime($v_header[filename]) > $v_header[mtime]) {
     2499                                        if (filemtime($v_header['filename']) > $v_header['mtime']) {
    25002500                                                TrFctMessage(__FILE__, __LINE__, 2,
    25012501                                                        "Existing file '$v_header[filename]' is newer (" . date("l dS of F Y h:i:s A",
    2502                                                                 filemtime($v_header[filename])) . ") than the extracted file (" . date("l dS of F Y h:i:s A",
    2503                                                                 $v_header[mtime]) . ")");
     2502                                                                filemtime($v_header['filename'])) . ") than the extracted file (" . date("l dS of F Y h:i:s A",
     2503                                                                $v_header['mtime']) . ")");
    25042504
    25052505                                                // ----- Change the file status
    2506                                                 $v_header[status] = "newer_exist";
     2506                                                $v_header['status'] = "newer_exist";
    25072507
    25082508                                                // ----- Skip the extract
     
    25142514                } // ----- Check the directory availability and create it if necessary
    25152515                else {
    2516                         if ($v_header[typeflag] == "5") {
    2517                                 $v_dir_to_check = $v_header[filename];
     2516                        if ($v_header['typeflag'] == "5") {
     2517                                $v_dir_to_check = $v_header['filename'];
    25182518                        } else {
    2519                                 if (!strstr($v_header[filename], "/")) {
     2519                                if (!strstr($v_header['filename'], "/")) {
    25202520                                        $v_dir_to_check = "";
    25212521                                } else {
    2522                                         $v_dir_to_check = dirname($v_header[filename]);
     2522                                        $v_dir_to_check = dirname($v_header['filename']);
    25232523                                }
    25242524                        }
     
    25282528
    25292529                                // ----- Change the file status
    2530                                 $v_header[status] = "path_creation_fail";
     2530                                $v_header['status'] = "path_creation_fail";
    25312531
    25322532                                // ----- Skip the extract
     
    25372537
    25382538                // ----- Do the real bytes extraction (if not a directory)
    2539                 if (($v_extract_file) && ($v_header[typeflag] != "5")) {
     2539                if (($v_extract_file) && ($v_header['typeflag'] != "5")) {
    25402540                        // ----- Open the destination file in write mode
    2541                         if (($v_dest_file = @fopen($v_header[filename], "wb")) == 0) {
     2541                        if (($v_dest_file = @fopen($v_header['filename'], "wb")) == 0) {
    25422542                                TrFctMessage(__FILE__, __LINE__, 2, "Error while opening '$v_header[filename]' in write binary mode");
    25432543
    25442544                                // ----- Change the file status
    2545                                 $v_header[status] = "write_error";
     2545                                $v_header['status'] = "write_error";
    25462546
    25472547                                // ----- Jump to next file
    25482548                                TrFctMessage(__FILE__, __LINE__, 2, "Jump to next file");
    25492549                                if ($p_tar_mode == "tar") {
    2550                                         fseek($v_tar, ftell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2550                                        fseek($v_tar, ftell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    25512551                                } else {
    2552                                         gzseek($v_tar, gztell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2552                                        gzseek($v_tar, gztell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    25532553                                }
    25542554                        } else {
     
    25562556
    25572557                                // ----- Read data
    2558                                 $n = floor($v_header[size] / 512);
     2558                                $n = floor($v_header['size'] / 512);
    25592559                                for ($i = 0; $i < $n; $i++) {
    25602560                                        TrFctMessage(__FILE__, __LINE__, 3, "Read complete 512 bytes block number " . ($i + 1));
     
    25662566                                        fwrite($v_dest_file, $v_content, 512);
    25672567                                }
    2568                                 if (($v_header[size] % 512) != 0) {
    2569                                         TrFctMessage(__FILE__, __LINE__, 3, "Read last " . ($v_header[size] % 512) . " bytes in a 512 block");
     2568                                if (($v_header['size'] % 512) != 0) {
     2569                                        TrFctMessage(__FILE__, __LINE__, 3, "Read last " . ($v_header['size'] % 512) . " bytes in a 512 block");
    25702570                                        if ($p_tar_mode == "tar") {
    25712571                                                $v_content = fread($v_tar, 512);
     
    25732573                                                $v_content = gzread($v_tar, 512);
    25742574                                        }
    2575                                         fwrite($v_dest_file, $v_content, ($v_header[size] % 512));
     2575                                        fwrite($v_dest_file, $v_content, ($v_header['size'] % 512));
    25762576                                }
    25772577
     
    25802580
    25812581                                // ----- Change the file mode, mtime
    2582                                 touch($v_header[filename], $v_header[mtime]);
    2583                                 //chmod($v_header[filename], DecOct($v_header[mode]));
     2582                                touch($v_header['filename'], $v_header['mtime']);
     2583                                //chmod($v_header['filename'], DecOct($v_header['mode']));
    25842584                        }
    25852585
    25862586                        // ----- Check the file size
    25872587                        clearstatcache();
    2588                         if (filesize($v_header[filename]) != $v_header[size]) {
     2588                        if (filesize($v_header['filename']) != $v_header['size']) {
    25892589                                // ----- Error log
    25902590                                PclErrorLog(-7,
     
    26052605                        TrFctMessage(__FILE__, __LINE__, 2, "Jump to next file");
    26062606                        if ($p_tar_mode == "tar") {
    2607                                 fseek($v_tar, ftell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2607                                fseek($v_tar, ftell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    26082608                        } else {
    2609                                 gzseek($v_tar, gztell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2609                                gzseek($v_tar, gztell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    26102610                        }
    26112611                }
     
    27262726
    27272727                        // ----- Look for empty blocks to skip
    2728                         if ($v_header[filename] == "") {
     2728                        if ($v_header['filename'] == "") {
    27292729                                TrFctMessage(__FILE__, __LINE__, 2, "Empty block found. End of archive ?");
    27302730                                continue;
     
    27362736                        for ($i = 0, $v_delete_file = false; ($i < sizeof($p_file_list)) && (!$v_delete_file); $i++) {
    27372737                                // ----- Compare the file names
    2738 //        if ($p_file_list[$i] == $v_header[filename])
    2739                                 if (($v_len = strcmp($p_file_list[$i], $v_header[filename])) <= 0) {
     2738//        if ($p_file_list[$i] == $v_header['filename'])
     2739                                if (($v_len = strcmp($p_file_list[$i], $v_header['filename'])) <= 0) {
    27402740                                        if ($v_len == 0) {
    27412741                                                TrFctMessage(__FILE__, __LINE__, 3, "Found that '$v_header[filename]' need to be deleted");
     
    27432743                                        } else {
    27442744                                                TrFctMessage(__FILE__, __LINE__, 3, "Look if '$v_header[filename]' is a file in $p_file_list[$i]");
    2745                                                 if (substr($v_header[filename], strlen($p_file_list[$i]), 1) == "/") {
     2745                                                if (substr($v_header['filename'], strlen($p_file_list[$i]), 1) == "/") {
    27462746                                                        TrFctMessage(__FILE__, __LINE__, 3, "'$v_header[filename]' is a file in $p_file_list[$i]");
    27472747                                                        $v_delete_file = true;
     
    27632763
    27642764                                // ----- Write the file data
    2765                                 $n = ceil($v_header[size] / 512);
     2765                                $n = ceil($v_header['size'] / 512);
    27662766                                for ($i = 0; $i < $n; $i++) {
    27672767                                        TrFctMessage(__FILE__, __LINE__, 3, "Read complete 512 bytes block number " . ($i + 1));
     
    27802780                                // ----- Add the array describing the file into the list
    27812781                                $p_list_detail[$v_nb] = $v_header;
    2782                                 $p_list_detail[$v_nb][status] = "ok";
     2782                                $p_list_detail[$v_nb]['status'] = "ok";
    27832783
    27842784                                // ----- Increment
     
    27932793                                // ----- Jump to next file
    27942794                                if ($p_tar_mode == "tar") {
    2795                                         fseek($v_tar, ftell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2795                                        fseek($v_tar, ftell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    27962796                                } else {
    2797                                         gzseek($v_tar, gztell($v_tar) + (ceil(($v_header[size] / 512)) * 512));
     2797                                        gzseek($v_tar, gztell($v_tar) + (ceil(($v_header['size'] / 512)) * 512));
    27982798                                }
    27992799
     
    29932993
    29942994                        // ----- Look for empty blocks to skip
    2995                         if ($v_header[filename] == "") {
     2995                        if ($v_header['filename'] == "") {
    29962996                                TrFctMessage(__FILE__, __LINE__, 2, "Empty block found. End of archive ?");
    29972997                                continue;
     
    30053005
    30063006                                // ----- Compare the file names
    3007                                 if ($v_stored_list[$i] == $v_header[filename]) {
     3007                                if ($v_stored_list[$i] == $v_header['filename']) {
    30083008                                        TrFctMessage(__FILE__, __LINE__, 3, "File '$v_stored_list[$i]' is present in archive");
    30093009                                        TrFctMessage(__FILE__, __LINE__, 3,
     
    30113011                                                        filemtime($p_file_list[$i])));
    30123012                                        TrFctMessage(__FILE__, __LINE__, 3,
    3013                                                 "Archived mtime=" . $v_header[mtime] . " " . date("l dS of F Y h:i:s A", $v_header[mtime]));
     3013                                                "Archived mtime=" . $v_header['mtime'] . " " . date("l dS of F Y h:i:s A", $v_header['mtime']));
    30143014
    30153015                                        // ----- Store found informations
     
    30183018
    30193019                                        // ----- Look if the file need to be updated
    3020                                         if (filemtime($p_file_list[$i]) > $v_header[mtime]) {
     3020                                        if (filemtime($p_file_list[$i]) > $v_header['mtime']) {
    30213021                                                TrFctMessage(__FILE__, __LINE__, 3, "File '$p_file_list[$i]' need to be updated");
    30223022                                                $v_update_file = true;
     
    30453045
    30463046                                // ----- Write the file data
    3047                                 $n = ceil($v_header[size] / 512);
     3047                                $n = ceil($v_header['size'] / 512);
    30483048                                for ($j = 0; $j < $n; $j++) {
    30493049                                        TrFctMessage(__FILE__, __LINE__, 3, "Read complete 512 bytes block number " . ($j + 1));
     
    30623062                                // ----- Add the array describing the file into the list
    30633063                                $p_list_detail[$v_nb] = $v_header;
    3064                                 $p_list_detail[$v_nb][status] = ($v_found_file ? "not_updated" : "ok");
     3064                                $p_list_detail[$v_nb]['status'] = ($v_found_file ? "not_updated" : "ok");
    30653065
    30663066                                // ----- Increment
     
    30723072
    30733073                                // ----- Store the old file size
    3074                                 $v_old_size = $v_header[size];
     3074                                $v_old_size = $v_header['size'];
    30753075
    30763076                                // ----- Add the file
     
    31063106                                // ----- Add the array describing the file into the list
    31073107                                $p_list_detail[$v_nb] = $v_header;
    3108                                 $p_list_detail[$v_nb][status] = "updated";
     3108                                $p_list_detail[$v_nb]['status'] = "updated";
    31093109
    31103110                                // ----- Increment
     
    31483148                                // ----- Add the array describing the file into the list
    31493149                                $p_list_detail[$v_nb] = $v_header;
    3150                                 $p_list_detail[$v_nb][status] = "added";
     3150                                $p_list_detail[$v_nb]['status'] = "added";
    31513151
    31523152                                // ----- Increment
     
    32153215                // ----- Look for no more block
    32163216                if (strlen($v_binary_data) == 0) {
    3217                         $v_header[filename] = "";
    3218                         $v_header[status] = "empty";
     3217                        $v_header['filename'] = "";
     3218                        $v_header['status'] = "empty";
    32193219
    32203220                        // ----- Return
     
    32263226                // ----- Look for invalid block size
    32273227                if (strlen($v_binary_data) != 512) {
    3228                         $v_header[filename] = "";
    3229                         $v_header[status] = "invalid_header";
     3228                        $v_header['filename'] = "";
     3229                        $v_header['status'] = "invalid_header";
    32303230                        TrFctMessage(__FILE__, __LINE__, 2, "Invalid block size : " . strlen($v_binary_data));
    32313231
     
    32613261
    32623262                // ----- Extract the checksum for check
    3263                 $v_header[checksum] = OctDec(trim($v_data[checksum]));
     3263                $v_header['checksum'] = OctDec(trim($v_data['checksum']));
    32643264                TrFctMessage(__FILE__, __LINE__, 3, "File checksum : $v_header[checksum]");
    3265                 if ($v_header[checksum] != $v_checksum) {
     3265                if ($v_header['checksum'] != $v_checksum) {
    32663266                        TrFctMessage(__FILE__, __LINE__, 2,
    32673267                                "File checksum is invalid : $v_checksum calculated, $v_header[checksum] expected");
    32683268
    3269                         $v_header[filename] = "";
    3270                         $v_header[status] = "invalid_header";
     3269                        $v_header['filename'] = "";
     3270                        $v_header['status'] = "invalid_header";
    32713271
    32723272                        // ----- Look for last block (empty block)
    3273                         if (($v_checksum == 256) && ($v_header[checksum] == 0)) {
    3274                                 $v_header[status] = "empty";
     3273                        if (($v_checksum == 256) && ($v_header['checksum'] == 0)) {
     3274                                $v_header['status'] = "empty";
    32753275                                // ----- Return
    32763276                                TrFctEnd(__FILE__, __LINE__, $v_result, "End of archive found");
     
    32903290
    32913291                // ----- Extract the properties
    3292                 $v_header[filename] = trim($v_data[filename]);
     3292                $v_header['filename'] = trim($v_data['filename']);
    32933293                TrFctMessage(__FILE__, __LINE__, 2, "Name : '$v_header[filename]'");
    3294                 $v_header[mode] = OctDec(trim($v_data[mode]));
    3295                 TrFctMessage(__FILE__, __LINE__, 2, "Mode : '" . DecOct($v_header[mode]) . "'");
    3296                 $v_header[uid] = OctDec(trim($v_data[uid]));
     3294                $v_header['mode'] = OctDec(trim($v_data['mode']));
     3295                TrFctMessage(__FILE__, __LINE__, 2, "Mode : '" . DecOct($v_header['mode']) . "'");
     3296                $v_header['uid'] = OctDec(trim($v_data['uid']));
    32973297                TrFctMessage(__FILE__, __LINE__, 2, "Uid : '$v_header[uid]'");
    3298                 $v_header[gid] = OctDec(trim($v_data[gid]));
     3298                $v_header['gid'] = OctDec(trim($v_data['gid']));
    32993299                TrFctMessage(__FILE__, __LINE__, 2, "Gid : '$v_header[gid]'");
    3300                 $v_header[size] = OctDec(trim($v_data[size]));
     3300                $v_header['size'] = OctDec(trim($v_data['size']));
    33013301                TrFctMessage(__FILE__, __LINE__, 2, "Size : '$v_header[size]'");
    3302                 $v_header[mtime] = OctDec(trim($v_data[mtime]));
    3303                 TrFctMessage(__FILE__, __LINE__, 2, "Date : " . date("l dS of F Y h:i:s A", $v_header[mtime]));
    3304                 if (($v_header[typeflag] = $v_data[typeflag]) == "5") {
    3305                         $v_header[size] = 0;
     3302                $v_header['mtime'] = OctDec(trim($v_data['mtime']));
     3303                TrFctMessage(__FILE__, __LINE__, 2, "Date : " . date("l dS of F Y h:i:s A", $v_header['mtime']));
     3304                if (($v_header['typeflag'] = $v_data['typeflag']) == "5") {
     3305                        $v_header['size'] = 0;
    33063306                        TrFctMessage(__FILE__, __LINE__, 2, "Size (folder) : '$v_header[size]'");
    33073307                }
     
    33253325
    33263326                // ----- Set the status field
    3327                 $v_header[status] = "ok";
     3327                $v_header['status'] = "ok";
    33283328
    33293329                // ----- Return
     
    34153415                if ((substr($p_tarname, -7) == ".tar.gz") || (substr($p_tarname, -4) == ".tgz")) {
    34163416                        TrFctMessage(__FILE__, __LINE__, 2, "Archive is a gzip tar");
    3417                         $v_tar_mode = "tgz";
     3417                        $p_mode = "tgz";
    34183418                } else {
    34193419                        if (substr($p_tarname, -4) == ".tar") {
    34203420                                TrFctMessage(__FILE__, __LINE__, 2, "Archive is a tar");
    3421                                 $v_tar_mode = "tar";
     3421                                $p_mode = "tar";
    34223422                        } else {
    34233423                                // ----- Error log
     
    34263426                                TrFctMessage(__FILE__, __LINE__, PclErrorCode(), PclErrorString());
    34273427
    3428                                 $v_tar_mode = "";
     3428                                $p_mode = "";
    34293429                        }
    34303430                }
    34313431
    34323432                // ----- Return
    3433                 TrFctEnd(__FILE__, __LINE__, $v_tar_mode);
    3434 
    3435                 return $v_tar_mode;
     3433                TrFctEnd(__FILE__, __LINE__, $p_mode);
     3434
     3435                return $p_mode;
    34363436        }
    34373437
Note: See TracChangeset for help on using the changeset viewer.