OSDN Git Service

Small update to iUnTAR. (untar function)
authorKazuki Przyborowski <kazuki.przyborowski@gmail.com>
Tue, 18 Jan 2011 02:01:44 +0000 (02:01 +0000)
committerKazuki Przyborowski <kazuki.przyborowski@gmail.com>
Tue, 18 Jan 2011 02:01:44 +0000 (02:01 +0000)
git-svn-id: svn://svn.code.sf.net/p/intdb/svn/trunk@616 2b68903e-0b30-0410-9a39-a2e4f3c5be39

inc/misc/iuntar.php
inc/versioninfo.php

index 3d3c055..4915b93 100644 (file)
     Copyright 2004-2011 iDB Support - http://idb.berlios.de/\r
     Copyright 2004-2011 Game Maker 2k - http://gamemaker2k.org/\r
 \r
-    $FileInfo: iuntar.php - Last Update: 01/01/2010 SVN 608 - Author: cooldude2k $\r
+    $FileInfo: iuntar.php - Last Update: 01/17/2011 SVN 616 - Author: cooldude2k $\r
 */\r
 $File3Name = basename($_SERVER['SCRIPT_NAME']);\r
 if ($File3Name=="iuntar.php"||$File3Name=="/iuntar.php") {\r
        require('index.php');\r
        exit(); }\r
-// PHP iUnTAR Version 4.5\r
+// PHP iUnTAR Version 4.6\r
 // license: Revised BSD license\r
 function untar($tarfile,$outdir="./",$chmod=null,$extract=true,$lsonly=false,$findfile=null) {\r
 $TarSize = filesize($tarfile);\r
@@ -34,9 +34,13 @@ $thandle = fopen($tarfile, "r");
 if($extract===false) {\r
        $FileArray = null; $i = 0; }\r
 $outdir = preg_replace('{/$}', '', $outdir)."/";\r
+if(isset($findfile)) {\r
+$qfindfile = preg_quote($findfile,"/"); }\r
+if(!isset($findfile)) {\r
+$qfindfile = null; }\r
 while (ftell($thandle)<$TarSizeEnd) {\r
        $FileName = $outdir.trim(fread($thandle,100));\r
-       if($findfile!==null&&$findfile!=$FileName) {\r
+       if($findfile!==null&&!preg_match("/".$qfindfile."/",$FileName)) {\r
                fseek($thandle,8,SEEK_CUR);\r
                fseek($thandle,8,SEEK_CUR);\r
                fseek($thandle,8,SEEK_CUR);\r
@@ -48,7 +52,7 @@ while (ftell($thandle)<$TarSizeEnd) {
                fseek($thandle,255,SEEK_CUR); \r
                if($FileType=="0"||$FileType=="7") {\r
                        fseek($thandle,$FileSize,SEEK_CUR); } }\r
-       if($findfile===null||$findfile==$FileName) {\r
+       if($findfile===null||preg_match("/".$qfindfile."/",$FileName)) {\r
        $FileMode = trim(fread($thandle,8));\r
        if($chmod===null) {\r
                $FileCHMOD = octdec("0".substr($FileMode,-3)); }\r
@@ -62,7 +66,7 @@ while (ftell($thandle)<$TarSizeEnd) {
                $FileType = trim(fread($thandle,1));\r
                $LinkedFile = trim(fread($thandle,100));\r
                fseek($thandle,255,SEEK_CUR); }\r
-               if($findfile===null||$findfile==$FileName) {\r
+               if($findfile===null||preg_match("/".$qfindfile."/",$FileName)) {\r
                if($FileType=="0"||$FileType=="7") {\r
                        if($lsonly===true) {\r
                        fseek($thandle,$FileSize,SEEK_CUR); }\r
@@ -104,6 +108,7 @@ while (ftell($thandle)<$TarSizeEnd) {
                                $FileArray[$i]['FileContent'] = $FileContent; } } } }\r
                //touch($FileName,$LastEdit);\r
                if($extract===false&&$findfile===null) { ++$i; }\r
+               if($findfile!==null&&preg_match("/".$qfindfile."/",$FileName)) { ++$i; }\r
                if($FileType=="0"||$FileType=="7") {\r
                        $CheckSize = 512;\r
                        while ($CheckSize<$FileSize) {\r
@@ -116,4 +121,6 @@ while (ftell($thandle)<$TarSizeEnd) {
                        return true; }\r
                if($extract===false) {\r
                        return $FileArray; } }\r
+function iuntar($tarfile,$outdir="./",$chmod=null,$extract=true,$lsonly=false,$findfile=null) {\r
+       return untar($tarfile,$outdir,$chmod,$extract,$lsonly,$findfile); }\r
 ?>
\ No newline at end of file
index ec0b793..2946f56 100644 (file)
@@ -11,7 +11,7 @@
     Copyright 2004-2011 iDB Support - http://idb.berlios.de/
     Copyright 2004-2011 Game Maker 2k - http://gamemaker2k.org/
 
-    $FileInfo: versioninfo.php - Last Update: 01/16/2011 SVN 615 - Author: cooldude2k $
+    $FileInfo: versioninfo.php - Last Update: 01/17/2011 SVN 616 - Author: cooldude2k $
 */
 $File3Name = basename($_SERVER['SCRIPT_NAME']);
 if ($File3Name=="versioninfo.php"||$File3Name=="/versioninfo.php") {
@@ -27,8 +27,8 @@ function version_info($proname,$subver,$ver,$supver,$reltype,$svnver,$showsvn) {
        return $return_var; }
 // Version number and date stuff. :P
 $VER1[0] = 0; $VER1[1] = 4; $VER1[2] = 2; $VERFull[1] = $VER1[0].".".$VER1[1].".".$VER1[2];
-$VER2[0] = "Alpha"; $VER2[1] = "Al"; $VER2[2] = "SVN"; $SubVerN = 615; $RName = "iDB"; $SFName = "IntDB";
-$SVNDay[0] = 01; $SVNDay[1] = 16; $SVNDay[2] = 2011; $SVNDay[3] = $SVNDay[0]."/".$SVNDay[1]."/".$SVNDay[2];
+$VER2[0] = "Alpha"; $VER2[1] = "Al"; $VER2[2] = "SVN"; $SubVerN = 616; $RName = "iDB"; $SFName = "IntDB";
+$SVNDay[0] = 01; $SVNDay[1] = 17; $SVNDay[2] = 2011; $SVNDay[3] = $SVNDay[0]."/".$SVNDay[1]."/".$SVNDay[2];
 $VerInfo['iDB_Ver'] = version_info($RName,$VER1[0],$VER1[1],$VER1[2],$VER2[1],$SubVerN,false);
 $VerInfo['iDB_Ver_SVN'] = version_info($RName,$VER1[0],$VER1[1],$VER1[2],$VER2[1],$SubVerN,true);
 $VerInfo['iDB_Full_Ver'] = version_info($RName,$VER1[0],$VER1[1],$VER1[2],$VER2[0],$SubVerN,false);