From: Kazuki Przyborowski Date: Tue, 18 Jan 2011 02:01:44 +0000 (+0000) Subject: Small update to iUnTAR. (untar function) X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d108be4582b33caa44e619111c5b91cfbdb9e840;p=idb%2FiDB.git.git Small update to iUnTAR. (untar function) git-svn-id: svn://svn.code.sf.net/p/intdb/svn/trunk@616 2b68903e-0b30-0410-9a39-a2e4f3c5be39 --- diff --git a/inc/misc/iuntar.php b/inc/misc/iuntar.php index 3d3c055..4915b93 100644 --- a/inc/misc/iuntar.php +++ b/inc/misc/iuntar.php @@ -11,13 +11,13 @@ Copyright 2004-2011 iDB Support - http://idb.berlios.de/ Copyright 2004-2011 Game Maker 2k - http://gamemaker2k.org/ - $FileInfo: iuntar.php - Last Update: 01/01/2010 SVN 608 - Author: cooldude2k $ + $FileInfo: iuntar.php - Last Update: 01/17/2011 SVN 616 - Author: cooldude2k $ */ $File3Name = basename($_SERVER['SCRIPT_NAME']); if ($File3Name=="iuntar.php"||$File3Name=="/iuntar.php") { require('index.php'); exit(); } -// PHP iUnTAR Version 4.5 +// PHP iUnTAR Version 4.6 // license: Revised BSD license function untar($tarfile,$outdir="./",$chmod=null,$extract=true,$lsonly=false,$findfile=null) { $TarSize = filesize($tarfile); @@ -34,9 +34,13 @@ $thandle = fopen($tarfile, "r"); if($extract===false) { $FileArray = null; $i = 0; } $outdir = preg_replace('{/$}', '', $outdir)."/"; +if(isset($findfile)) { +$qfindfile = preg_quote($findfile,"/"); } +if(!isset($findfile)) { +$qfindfile = null; } while (ftell($thandle)<$TarSizeEnd) { $FileName = $outdir.trim(fread($thandle,100)); - if($findfile!==null&&$findfile!=$FileName) { + if($findfile!==null&&!preg_match("/".$qfindfile."/",$FileName)) { fseek($thandle,8,SEEK_CUR); fseek($thandle,8,SEEK_CUR); fseek($thandle,8,SEEK_CUR); @@ -48,7 +52,7 @@ while (ftell($thandle)<$TarSizeEnd) { fseek($thandle,255,SEEK_CUR); if($FileType=="0"||$FileType=="7") { fseek($thandle,$FileSize,SEEK_CUR); } } - if($findfile===null||$findfile==$FileName) { + if($findfile===null||preg_match("/".$qfindfile."/",$FileName)) { $FileMode = trim(fread($thandle,8)); if($chmod===null) { $FileCHMOD = octdec("0".substr($FileMode,-3)); } @@ -62,7 +66,7 @@ while (ftell($thandle)<$TarSizeEnd) { $FileType = trim(fread($thandle,1)); $LinkedFile = trim(fread($thandle,100)); fseek($thandle,255,SEEK_CUR); } - if($findfile===null||$findfile==$FileName) { + if($findfile===null||preg_match("/".$qfindfile."/",$FileName)) { if($FileType=="0"||$FileType=="7") { if($lsonly===true) { fseek($thandle,$FileSize,SEEK_CUR); } @@ -104,6 +108,7 @@ while (ftell($thandle)<$TarSizeEnd) { $FileArray[$i]['FileContent'] = $FileContent; } } } } //touch($FileName,$LastEdit); if($extract===false&&$findfile===null) { ++$i; } + if($findfile!==null&&preg_match("/".$qfindfile."/",$FileName)) { ++$i; } if($FileType=="0"||$FileType=="7") { $CheckSize = 512; while ($CheckSize<$FileSize) { @@ -116,4 +121,6 @@ while (ftell($thandle)<$TarSizeEnd) { return true; } if($extract===false) { return $FileArray; } } +function iuntar($tarfile,$outdir="./",$chmod=null,$extract=true,$lsonly=false,$findfile=null) { + return untar($tarfile,$outdir,$chmod,$extract,$lsonly,$findfile); } ?> \ No newline at end of file diff --git a/inc/versioninfo.php b/inc/versioninfo.php index ec0b793..2946f56 100644 --- a/inc/versioninfo.php +++ b/inc/versioninfo.php @@ -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);