OSDN Git Service

mv tarfile.inc.php dump.inc.php; # to abstraction of dump and restore
authorhenoheno <henoheno>
Sat, 25 Sep 2004 10:29:23 +0000 (19:29 +0900)
committerhenoheno <henoheno>
Sat, 25 Sep 2004 10:29:23 +0000 (19:29 +0900)
plugin/dump.inc.php
plugin/tarfile.inc.php [deleted file]

index 9177479..f6ee6d7 100644 (file)
 
 /////////////////////////////////////////////////
 // ¥Õ¥¡¥¤¥ë̾¤ò¥Ú¡¼¥¸Ì¾¤Ë¤¹¤ëºÝ¤ÎÆüËܸì¤Îʸ»ú¥³¡¼¥É
-define('PLUGIN_TARFILE_FILENAME_ENCORDING','SJIS');
+define('PLUGIN_DUMP_FILENAME_ENCORDING','SJIS');
 
 // ºÇÂ祢¥Ã¥×¥í¡¼¥É¥µ¥¤¥º
-define('PLUGIN_TARFILE_MAX_FILESIZE',1024);    // Kbyte
+define('PLUGIN_DUMP_MAX_FILESIZE',1024);       // Kbyte
 
 /////////////////////////////////////////////////
 // ³ÈÄ¥»Ò
-define('PLUGIN_TARFILE_SFX_TAR' , '.tar');
-define('PLUGIN_TARFILE_SFX_GZIP', '.tar.gz');
+define('PLUGIN_DUMP_SFX_TAR' , '.tar');
+define('PLUGIN_DUMP_SFX_GZIP', '.tar.gz');
 
 // TAR¥Õ¥¡¥¤¥ëÍÑÄêµÁ
 define('TAR_HDR_LEN',           512);  // ¥Ø¥Ã¥À¤ÎÂ礭¤µ
@@ -65,8 +65,8 @@ define('ARCFILE_GZIP', 0);
 define('ARCFILE_TAR',  1);
 
 // actionÄêµÁ
-define('PLUGIN_TARFILE_CREATE', 'act_download');       // Create & download
-define('PLUGIN_TARFILE_RESTORE',   'act_upload');      // Upload & restore
+define('PLUGIN_DUMP_CREATE', 'act_download');  // Create & download
+define('PLUGIN_DUMP_RESTORE',   'act_upload'); // Upload & restore
 
 
 /////////////////////////////////////////////////
@@ -85,10 +85,10 @@ function plugin_tarfile_action()
        if ($pass !== NULL) {
                if((md5($pass) == $adminpass) && ($act !== NULL) ) {
                        switch($act){
-                       case PLUGIN_TARFILE_CREATE:
+                       case PLUGIN_DUMP_CREATE:
                                $body = plugin_tarfile_download();
                                break;
-                       case PLUGIN_TARFILE_RESTORE:
+                       case PLUGIN_DUMP_RESTORE:
                                $retcode = plugin_tarfile_upload();
                                $body .= $retcode['msg'];
                                if($retcode['code'] == true) {
@@ -224,9 +224,9 @@ function download_tarfile($name, $arc_kind)
        $filename = strftime("tar%Y%m%d", time()) . $file_ext;
 
        if($arc_kind == ARCFILE_GZIP) {
-               $filename .= PLUGIN_TARFILE_SFX_GZIP;
+               $filename .= PLUGIN_DUMP_SFX_GZIP;
        } else {
-               $filename .= PLUGIN_TARFILE_SFX_TAR;
+               $filename .= PLUGIN_DUMP_SFX_TAR;
        }
 
        $size = filesize($name);
@@ -244,10 +244,10 @@ function plugin_tarfile_disp_form()
 {
        global $script, $defaultpage;
 
-       $act_down  = PLUGIN_TARFILE_CREATE;
-       $act_up    = PLUGIN_TARFILE_RESTORE;
-       $maxsize   = PLUGIN_TARFILE_MAX_FILESIZE * 1024;
-       $maxsizekb = PLUGIN_TARFILE_MAX_FILESIZE;
+       $act_down  = PLUGIN_DUMP_CREATE;
+       $act_up    = PLUGIN_DUMP_RESTORE;
+       $maxsize   = PLUGIN_DUMP_MAX_FILESIZE * 1024;
+       $maxsizekb = PLUGIN_DUMP_MAX_FILESIZE;
 
        $data = <<<EOD
 <span class="small">
@@ -588,7 +588,7 @@ class compact_tarlib
                                $filename = $dirname . $filename;
                                if(function_exists('mb_convert_encoding')) {
                                        // ¥Õ¥¡¥¤¥ë̾¤Îʸ»ú¥³¡¼¥É¤òÊÑ´¹
-                                       $filename = mb_convert_encoding($filename, PLUGIN_TARFILE_FILENAME_ENCORDING);
+                                       $filename = mb_convert_encoding($filename, PLUGIN_DUMP_FILENAME_ENCORDING);
                                }
                        }
                        else
diff --git a/plugin/tarfile.inc.php b/plugin/tarfile.inc.php
deleted file mode 100644 (file)
index 9177479..0000000
+++ /dev/null
@@ -1,729 +0,0 @@
-<?php
-/////////////////////////////////////////////////
-// tarfile.inc.php
-//       by teanan / Interfair Laboratory 2004.
-
-// [¹¹¿·ÍúÎò]
-// 2004-09-21 version 0.0 [»ÃÄêÈÇ]
-// ¡¦¤È¤ê¤¢¤¨¤º wiki ¥Ç¥£¥ì¥¯¥È¥ê¤¬tar.gz¤Ç¼è¤ê½Ð¤»¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
-// 2004-09-22 version 0.1 [»ÃÄêÈÇ]
-// ¡¦¡Átar.gz/¡Á.tar¤ÎÁªÂò¤ËÂбþ
-// ¡¦attach,backup¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤ËÂбþ
-// ¡¦¥Õ¥¡¥¤¥ë̾¤ò¥Ú¡¼¥¸Ì¾¤ËÊÑ´¹¤¹¤ëµ¡Ç½¤òÄɲÃ(wiki/attach/backup)
-// ¡¦¥Õ¥¡¥¤¥ë°ìÍ÷¤Î¼èÆÀÊýË¡¤òÊѹ¹(glob¢ªopendir)
-// 2004-09-22 version 0.2
-// ¡¦¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É(¥ê¥¹¥È¥¢)¤ËÂбþ(tar/tar.gz)
-//   (ÂоݤϠwiki,attach¥Ç¥£¥ì¥¯¥È¥ê¤Î¤ß)
-// 2004-09-22 version 1.0
-// ¡¦LongLink(100¥Ð¥¤¥È¤òĶ¤¨¤¿¥Õ¥¡¥¤¥ë̾)¤ËÂбþ
-// ¡¦¥ê¥¹¥È¥¢»þ¥Õ¥¡¥¤¥ë¤Î¹¹¿·»þ¹ï¤ò¸µ¤ËÌ᤹¤è¤¦¤Ë½¤Àµ
-
-/////////////////////////////////////////////////
-// ¥Õ¥¡¥¤¥ë̾¤ò¥Ú¡¼¥¸Ì¾¤Ë¤¹¤ëºÝ¤ÎÆüËܸì¤Îʸ»ú¥³¡¼¥É
-define('PLUGIN_TARFILE_FILENAME_ENCORDING','SJIS');
-
-// ºÇÂ祢¥Ã¥×¥í¡¼¥É¥µ¥¤¥º
-define('PLUGIN_TARFILE_MAX_FILESIZE',1024);    // Kbyte
-
-/////////////////////////////////////////////////
-// ³ÈÄ¥»Ò
-define('PLUGIN_TARFILE_SFX_TAR' , '.tar');
-define('PLUGIN_TARFILE_SFX_GZIP', '.tar.gz');
-
-// TAR¥Õ¥¡¥¤¥ëÍÑÄêµÁ
-define('TAR_HDR_LEN',           512);  // ¥Ø¥Ã¥À¤ÎÂ礭¤µ
-define('TAR_BLK_LEN',           512);  // Ã±°Ì¥Ö¥í¥Ã¥¯Ä¹¤µ
-define('TAR_HDR_NAME_OFFSET',     0);  // ¥Õ¥¡¥¤¥ë̾¤Î¥ª¥Õ¥»¥Ã¥È
-define('TAR_HDR_NAME_LEN',      100);  // ¥Õ¥¡¥¤¥ë̾¤ÎºÇÂ獵
-define('TAR_HDR_MODE_OFFSET',   100);  // mode¤Ø¤Î¥ª¥Õ¥»¥Ã¥È
-define('TAR_HDR_UID_OFFSET',    108);  // uid¤Ø¤Î¥ª¥Õ¥»¥Ã¥È
-define('TAR_HDR_GID_OFFSET',    116);  // gid¤Ø¤Î¥ª¥Õ¥»¥Ã¥È
-define('TAR_HDR_SIZE_OFFSET',   124);  // ¥µ¥¤¥º¤Ø¤Î¥ª¥Õ¥»¥Ã¥È
-define('TAR_HDR_SIZE_LEN',       12);  // ¥µ¥¤¥º¤ÎŤµ
-define('TAR_HDR_MTIME_OFFSET',  136);  // ºÇ½ª¹¹¿·»þ¹ï¤Î¥ª¥Õ¥»¥Ã¥È
-define('TAR_HDR_MTIME_LEN',      12);  // ºÇ½ª¹¹¿·»þ¹ï¤ÎŤµ
-define('TAR_HDR_CHKSUM_OFFSET', 148);  // ¥Á¥§¥Ã¥¯¥µ¥à¤Î¥ª¥Õ¥»¥Ã¥È
-define('TAR_HDR_CHKSUM_LEN',      8);  // ¥Á¥§¥Ã¥¯¥µ¥à¤ÎŤµ
-define('TAR_HDR_TYPE_OFFSET',   156);  // ¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤Ø¤Î¥ª¥Õ¥»¥Ã¥È
-
-// ¾õÂÖÄêµÁ
-define('TAR_STATS_INIT',    0);                // ½é´ü¾õÂÖ
-define('TAR_STATS_OPEN',   10);                // Æɤ߼è¤ê
-define('TAR_STATS_CREATE', 20);                // ½ñ¤­¹þ¤ß
-
-define('TAR_DATA_MODE',      '100666 ');       // ¥Õ¥¡¥¤¥ë¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó
-define('TAR_DATA_UGID',      '000000 ');       // uid / gid
-define('TAR_DATA_CHKBLANKS', '        ');
-
-// GNU³ÈÄ¥»ÅÍÍ(¥í¥ó¥°¥Õ¥¡¥¤¥ë̾Âбþ)
-define('TAR_DATA_LONGLINK', '././@LongLink');
-define('TAR_HDR_FILE', '0');
-define('TAR_HDR_LINK', 'L');
-
-// ¥¢¡¼¥«¥¤¥Ö¤Î¼ïÎà
-define('ARCFILE_GZIP', 0);
-define('ARCFILE_TAR',  1);
-
-// actionÄêµÁ
-define('PLUGIN_TARFILE_CREATE', 'act_download');       // Create & download
-define('PLUGIN_TARFILE_RESTORE',   'act_upload');      // Upload & restore
-
-
-/////////////////////////////////////////////////
-// ¥×¥é¥°¥¤¥óËÜÂÎ
-function plugin_tarfile_action()
-{
-       global $adminpass;
-       global $vars, $post;
-
-       $pass = isset($post['pass']) ? $post['pass'] : NULL;
-       $act  = isset($post['act'])  ? $post['act']  : NULL;
-
-       $body = '';
-
-//     if (pkwk_login($pass))  // for pukiwiki-1.4.4
-       if ($pass !== NULL) {
-               if((md5($pass) == $adminpass) && ($act !== NULL) ) {
-                       switch($act){
-                       case PLUGIN_TARFILE_CREATE:
-                               $body = plugin_tarfile_download();
-                               break;
-                       case PLUGIN_TARFILE_RESTORE:
-                               $retcode = plugin_tarfile_upload();
-                               $body .= $retcode['msg'];
-                               if($retcode['code'] == true) {
-                                       // Àµ¾ï½ªÎ»
-                                       $msg = '¥¢¥Ã¥×¥í¡¼¥É¤¬´°Î»¤·¤Þ¤·¤¿';
-                                       return array('msg' => $msg, 'body' => $body);
-                               }
-                               break;
-                       }
-               } else {
-                       $body = ($pass === NULL) ? '' : "<p><strong>¥Ñ¥¹¥ï¡¼¥É¤¬°ã¤¤¤Þ¤¹¡£</strong></p>\n";
-               }
-       }
-
-       // ÆþÎÏ¥Õ¥©¡¼¥à¤òɽ¼¨
-       $body .= plugin_tarfile_disp_form();
-       
-       return array('msg' => 'tarfile', 'body' => $body);
-}
-
-/////////////////////////////////////////////////
-// ¥Õ¥¡¥¤¥ë¤Î¥À¥¦¥ó¥í¡¼¥É
-function plugin_tarfile_download()
-{
-       global $post;
-
-       // ¥¢¡¼¥«¥¤¥Ö¤Î¼ïÎà
-       $arc_kind = ($post['pcmd'] == 'tar') ? ARCFILE_TAR : ARCFILE_GZIP;
-
-       // ¥Ú¡¼¥¸Ì¾¤ËÊÑ´¹¤¹¤ë
-       $namedecode = isset($post['namedecode']) ? true : false;
-
-       // ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê
-       $bk_wiki   = isset($post['bk_wiki'])   ? true : false;
-       $bk_attach = isset($post['bk_attach']) ? true : false;
-       $bk_backup = isset($post['bk_backup']) ? true : false;
-
-       $tar = new compact_tarlib();
-
-       // ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë
-       if($tar->create(CACHE_DIR, $arc_kind))
-       {
-               $filecount = 0;         // ¥Õ¥¡¥¤¥ë¿ô
-               if ($bk_wiki)   $filecount .= $tar->add(DATA_DIR,   '^[0-9A-F]+\.txt', $namedecode);
-               if ($bk_attach) $filecount .= $tar->add(UPLOAD_DIR, '^[0-9A-F_]+',     $namedecode);
-               if ($bk_backup) $filecount .= $tar->add(BACKUP_DIR, '^[0-9A-F]+\.gz',  $namedecode);
-               $tar->close();
-
-               if($filecount > 0) {
-                       // ¥À¥¦¥ó¥í¡¼¥É
-                       download_tarfile($tar->filename, $arc_kind);
-                       @unlink($tar->filename);
-                       exit;   // Àµ¾ï½ªÎ»
-               } else {
-                       @unlink($tar->filename);
-                       return '<p><strong>¥Õ¥¡¥¤¥ë¤¬¤ß¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£</strong></p>';
-               }
-       }
-       else
-       {
-               die_message('¥Æ¥ó¥Ý¥é¥ê¥Õ¥¡¥¤¥ë¤ÎÀ¸À®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£');
-       }
-}
-
-/////////////////////////////////////////////////
-// ¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É
-function plugin_tarfile_upload()
-{
-       global $post;
-
-       $code = false;
-       $msg  = '';
-
-       // ¥¢¡¼¥«¥¤¥Ö¤Î¼ïÎà
-       $arc_kind = ($post['pcmd'] == 'tar') ? ARCFILE_TAR : ARCFILE_GZIP;
-
-       $filename = $_FILES['upload_file']['name'];
-
-
-       // ¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë
-       $uploadfile = tempnam(CACHE_DIR, 'upload' );
-       if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $uploadfile))
-       {
-               // tar¥Õ¥¡¥¤¥ë¤òŸ³«¤¹¤ë
-               $tar = new compact_tarlib();
-               if($tar->open($uploadfile, $arc_kind))
-               {
-                       // DATA_DIR (wiki/*.txt)
-                       $quote_wiki  = preg_quote(DATA_DIR, '/');
-                       $quote_wiki .= '((?:[0-9A-F])+)(\.txt){0,1}';
-
-                       // UPLOAD_DIR (attach/*)
-                       $quote_attach  = preg_quote(UPLOAD_DIR,'/');
-                       $quote_attach .= '((?:[0-9A-F]{2})+)_((?:[0-9A-F])+)';
-
-                       $pattern = "((^$quote_wiki)|(^$quote_attach))";
-       
-                       $files = $tar->extract($pattern);
-                       if(! empty($files)) {
-                               $msg  = '<p><strong>Ÿ³«¤·¤¿¥Õ¥¡¥¤¥ë°ìÍ÷</strong><ul>';
-                               foreach($files as $name) {
-                                       $msg .= "<li>$name</li>\n";
-                               }
-                               $msg .= '</ul></p>';
-                               $code = true;
-                       } else {
-                               $msg = '<p>Ÿ³«¤Ç¤­¤ë¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£</p>';
-                               $code = false;
-                       }
-                       $tar->close();
-               }
-               else
-               {
-                       $msg = '<p>¥Õ¥¡¥¤¥ë¤¬¤ß¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£</p>';
-                       $code = false;
-               }
-               // ½èÍý¤¬½ªÎ»¤·¤¿¤é¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Ïºï½ü¤¹¤ë
-               @unlink($uploadfile);
-       }
-       else
-       {
-               die_message('¥Õ¥¡¥¤¥ë¤¬¤ß¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£');
-       }
-
-       return array('code' => $code , 'msg' => $msg);
-}
-
-/////////////////////////////////////////////////
-// tar¥Õ¥¡¥¤¥ë¤Î¥À¥¦¥ó¥í¡¼¥É
-function download_tarfile($name, $arc_kind)
-{
-       // ¥Õ¥¡¥¤¥ë̾
-       $filename = strftime("tar%Y%m%d", time()) . $file_ext;
-
-       if($arc_kind == ARCFILE_GZIP) {
-               $filename .= PLUGIN_TARFILE_SFX_GZIP;
-       } else {
-               $filename .= PLUGIN_TARFILE_SFX_TAR;
-       }
-
-       $size = filesize($name);
-
-       header('Content-Disposition: attachment; filename="' . $filename . '"');
-       header('Content-Length: ' . $size);
-       header('Content-Type: application/octet-stream');
-       header('Pragma: no-cache');
-       @readfile($name);
-}
-
-/////////////////////////////////////////////////
-// ÆþÎÏ¥Õ¥©¡¼¥à¤òɽ¼¨
-function plugin_tarfile_disp_form()
-{
-       global $script, $defaultpage;
-
-       $act_down  = PLUGIN_TARFILE_CREATE;
-       $act_up    = PLUGIN_TARFILE_RESTORE;
-       $maxsize   = PLUGIN_TARFILE_MAX_FILESIZE * 1024;
-       $maxsizekb = PLUGIN_TARFILE_MAX_FILESIZE;
-
-       $data = <<<EOD
-<span class="small">
-TAR¥Õ¥¡¥¤¥ë¥Ð¥Ã¥¯¥¢¥Ã¥× / ¥ê¥¹¥È¥¢¥×¥é¥°¥¤¥ó
-</span>
-<br /><br />
-<h3>Tar¥Õ¥¡¥¤¥ë¤Î¥À¥¦¥ó¥í¡¼¥É</h3>
-<form action="$script" method="post">
- <div>
-  <input type="hidden" name="cmd"  value="tarfile" />
-  <input type="hidden" name="page" value="$defaultpage" />
-  <input type="hidden" name="act"  value="$act_down" />
-
-<p><strong>¥¢¡¼¥«¥¤¥Ö¤Î·Á¼°</strong>
-<br />
-  <input type="radio" name="pcmd" value="tgz" checked="checked" /> ¡Á.tar.gz ·Á¼°<br />
-  <input type="radio" name="pcmd" value="tar" /> ¡Á.tar ·Á¼°
-</p>
-<p><strong>¥Ð¥Ã¥¯¥¢¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê</strong>
-<br />
-  <input type="checkbox" name="bk_wiki" checked="checked" /> wiki<br />
-  <input type="checkbox" name="bk_attach" /> attach<br />
-  <input type="checkbox" name="bk_backup" /> backup
-</p>
-<p><strong>¥ª¥×¥·¥ç¥ó</strong>
-<br />
-  <input type="checkbox" name="namedecode" /> ¥Õ¥¡¥¤¥ë̾¤ò¥Ú¡¼¥¸Ì¾¤ËÊÑ´¹ (¢¨¥ê¥¹¥È¥¢¤Ë»È¤¦¤³¤È¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹)<br />
-</p>
-<p><strong>´ÉÍý¼Ô¥Ñ¥¹¥ï¡¼¥É</strong>
-  <input type="password" name="pass" size="12" />
-  <input type="submit"   name="ok"   value="OK" />
-</p>
- </div>
-</form>
-
-<h3>¥Ç¡¼¥¿¤Î¥ê¥¹¥È¥¢</h3>
-<form enctype="multipart/form-data" action="$script" method="post">
- <div>
-  <input type="hidden" name="cmd"  value="tarfile" />
-  <input type="hidden" name="page" value="$defaultpage" />
-  <input type="hidden" name="act"  value="$act_up" />
-  <input type="hidden" name="max_file_size" value="$maxsize" />
-<p><strong>[½ÅÍ×] Æ±¤¸Ì¾Á°¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Ï¾å½ñ¤­¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢½½Ê¬¤´Ãí°Õ¤¯¤À¤µ¤¤¡£</strong></p>
-<p><span class="small">
-¥¢¥Ã¥×¥í¡¼¥É²Äǽ¤ÊºÇÂç¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤Ï¡¢$maxsizekb KByte ¤Þ¤Ç¤Ç¤¹¡£<br />
-</span>
-  ¥Õ¥¡¥¤¥ë: <input type="file" name="upload_file" size="40" />
-</p>
-<p><strong>¥¢¡¼¥«¥¤¥Ö¤Î·Á¼°</strong>
-<br />
-  <input type="radio" name="pcmd" value="tgz" checked="checked" /> ¡Á.tar.gz ·Á¼°<br />
-  <input type="radio" name="pcmd" value="tar" /> ¡Á.tar ·Á¼°
-</p>
-<p><strong>´ÉÍý¼Ô¥Ñ¥¹¥ï¡¼¥É</strong>
-  <input type="password" name="pass" size="12" />
-  <input type="submit"   name="ok"   value="OK" />
-</p>
- </div>
-</form>
-EOD;
-
-       return $data;
-}
-
-/////////////////////////////////////////////////
-// tar¥Ç¡¼¥¿¤ÎºîÀ®/Ÿ³«¥é¥¤¥Ö¥é¥ê
-
-class compact_tarlib
-{
-       var $filename;
-       var $fp;
-       var $status;
-       var $dummydata;
-       var $arc_kind;
-
-       // ¥³¥ó¥¹¥È¥é¥¯¥¿
-       function compact_tarlib( $name = '' ) {
-               $this->fp       = false;
-               $this->filename = $name;
-               $this->status   = TAR_STATS_INIT;
-               $arc_kind       = ARCFILE_GZIP;
-       }
-       
-       ////////////////////////////////////////////////////////////
-       //
-       // ´Ø¿ô  : tar¥Õ¥¡¥¤¥ë¤ò³«¤¯
-       // °ú¿ô  : tar¥Õ¥¡¥¤¥ë̾
-       // ÊÖ¤êÃÍ: ture .. À®¸ù , false .. ¼ºÇÔ
-       //
-       ////////////////////////////////////////////////////////////
-       function open( $name = '', $kind = ARCFILE_GZIP )
-       {
-               if( $name != '' ) $this->filename = $name;
-
-               if($kind == ARCFILE_GZIP) {
-                       $this->arc_kind = ARCFILE_GZIP;
-                       $this->fp = gzopen( $this->filename, 'rb');
-               } else {
-                       $this->arc_kind = ARCFILE_TAR;
-                       $this->fp =  fopen( $this->filename, 'rb');
-               }
-
-               if( $this->fp == false ) return false;  // »ØÄê¥Õ¥¡¥¤¥ë¤Ê¤·
-
-               $this->status = TAR_STATS_OPEN;
-               rewind($this->fp);
-
-               return true;
-       }
-
-       ////////////////////////////////////////////////////////////
-       //
-       // ´Ø¿ô  : tar¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë
-       // °ú¿ô  : tar¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¥Ñ¥¹
-       // ÊÖ¤êÃÍ: ture .. À®¸ù , false .. ¼ºÇÔ
-       //
-       ////////////////////////////////////////////////////////////
-       function create( $odir, $kind = ARCFILE_GZIP )
-       {
-               $tname = tempnam( $odir, 'tar' );
-
-               if($kind == ARCFILE_GZIP) {
-                       $this->arc_kind = ARCFILE_GZIP;
-                       $this->fp = gzopen($tname, 'wb');
-               } else {
-                       $this->arc_kind = ARCFILE_TAR;
-                       $this->fp = @fopen($tname, 'wb');
-               }
-               if( $this->fp==false ) return false;    // ºîÀ®¼ºÇÔ
-
-               // ºîÀ®¤ËÀ®¸ù¤·¤¿¤é¥Õ¥¡¥¤¥ë̾¤òµ­²±¤·¤Æ¤ª¤¯
-               $this->filename = $tname;
-               $this->status   = TAR_STATS_CREATE;
-               
-               // ¥À¥ß¡¼¥Ç¡¼¥¿
-               $this->dummydata = join('', array_fill(0, TAR_BLK_LEN, "\0"));
-               rewind($this->fp);
-
-               return true;
-       }
-
-       ////////////////////////////////////////////////////////////
-       //
-       // ´Ø¿ô  : tar¥Õ¥¡¥¤¥ë¤òÊĤ¸¤ë
-       // °ú¿ô  : ¤Ê¤·
-       // ÊÖ¤êÃÍ: ¤Ê¤·
-       //
-       ////////////////////////////////////////////////////////////
-       function close()
-       {
-               if($this->status = TAR_STATS_CREATE)
-               {
-                       // ¥Ð¥¤¥Ê¥ê¡¼¥¼¥í¤ò1024¥Ð¥¤¥È½ÐÎÏ
-                       flock($this->fp, LOCK_EX);
-                       fwrite($this->fp, $this->dummydata, TAR_HDR_LEN);
-                       fwrite($this->fp, $this->dummydata, TAR_HDR_LEN);
-                       flock($this->fp, LOCK_UN);
-
-                       // ¥Õ¥¡¥¤¥ë¤òÊĤ¸¤ë
-                       if($this->arc_kind == ARCFILE_GZIP) {
-                               gzclose($this->fp);
-                       } else {
-                                fclose($this->fp);
-                       }
-               }
-               else if($this->status = TAR_STATS_OPEN)
-               {
-                       if($this->arc_kind == ARCFILE_GZIP) {
-                               gzclose($this->fp);
-                       } else {
-                                fclose($this->fp);
-                       }
-               }
-
-               $this->status = TAR_STATS_INIT;
-       }
-
-       ////////////////////////////////////////////////////////////
-       //
-       // ´Ø¿ô  : »ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Ëtar¥Õ¥¡¥¤¥ë¤òŸ³«¤¹¤ë
-       // °ú¿ô  : Å¸³«¤¹¤ë¥Õ¥¡¥¤¥ë¥Ñ¥¿¡¼¥ó(Àµµ¬É½¸½)
-       // ÊÖ¤êÃÍ: Å¸³«¤·¤¿¥Õ¥¡¥¤¥ë̾¤Î°ìÍ÷
-       // Êä­  : ARAI¤µ¤ó¤Îattach¥×¥é¥°¥¤¥ó¥Ñ¥Ã¥Á¤ò»²¹Í¤Ë¤·¤Þ¤·¤¿
-       //
-       ////////////////////////////////////////////////////////////
-       function extract( $pattern )
-       {
-               if($this->status != TAR_STATS_OPEN)
-                       return ''; // open¤µ¤ì¤Æ¤¤¤Ê¤¤
-               
-               $files = array();
-               $longname = '';
-
-               while(1) {
-                       $buff = fread($this->fp,TAR_HDR_LEN);
-                       if(strlen($buff) != TAR_HDR_LEN ) break;
-
-                       // ¥Õ¥¡¥¤¥ë̾
-                       if($longname != '') {
-                               $name     = $longname;  // LongLinkÂбþ
-                               $longname = '';
-                       } else {
-                               $name = '';
-                               for ($i = 0; $i < TAR_HDR_NAME_LEN; $i++ ) {
-                                       if($buff{$i + TAR_HDR_NAME_OFFSET} != '\0') {
-                                               $name .= $buff{$i + TAR_HDR_NAME_OFFSET};
-                                       } else {
-                                               break;
-                                       }
-                               }
-                       }
-
-                       $name = trim($name);
-                       if($name == '') break;  // Å¸³«½ªÎ»
-
-                       // ¥Á¥§¥Ã¥¯¥µ¥à¤ò¼èÆÀ¤·¤Ä¤Ä¡¢¥Ö¥é¥ó¥¯¤ËÃÖ´¹¤·¤Æ¤¤¤¯
-                       $checksum = '';
-                       $chkblanks = TAR_DATA_CHKBLANKS;
-                       for ($i = 0; $i < TAR_HDR_CHKSUM_LEN; $i++ )
-                       {
-                               $checksum .= $buff{$i + TAR_HDR_CHKSUM_OFFSET};
-                               $buff{$i + TAR_HDR_CHKSUM_OFFSET} = $chkblanks{$i};
-                       }
-                       list($checksum) = sscanf('0' . trim($checksum), "%i");
-
-                       // ¥Á¥§¥Ã¥¯¥µ¥à¤Î·×»»
-                       $sum = 0;
-                       for($i = 0; $i < TAR_BLK_LEN; $i++ ) {
-                               $sum += 0xff & ord($buff{$i});
-                       }
-
-                       if($sum != $checksum) break;    // ¥Á¥§¥Ã¥¯¥µ¥à¥¨¥é¡¼
-                               
-                       // ¥µ¥¤¥º
-                       $size = '';
-                       for ($i = 0; $i < TAR_HDR_SIZE_LEN; $i++ ) {
-                               $size .= $buff{$i + TAR_HDR_SIZE_OFFSET};
-                       }
-
-                       list($size) = sscanf('0' . trim($size), "%i");
-
-                       // ceil
-                       // ¥Ç¡¼¥¿¥Ö¥í¥Ã¥¯¤Ï512byte¤Ç¥Ñ¥Ç¥£¥ó¥°¤µ¤ì¤Æ¤¤¤ë
-                       $pdsz = ceil($size / TAR_BLK_LEN) * TAR_BLK_LEN;
-
-                       // ºÇ½ª¹¹¿·»þ¹ï
-                       $strmtime = '';
-                       for ($i = 0; $i < TAR_HDR_MTIME_LEN; $i++ ) {
-                               $strmtime .= $buff{$i + TAR_HDR_MTIME_OFFSET};
-                       }
-                       list($mtime) = sscanf('0' . trim($strmtime), "%i");
-
-                       // ¥¿¥¤¥×¥Õ¥é¥°
-                       $type = $buff{TAR_HDR_TYPE_OFFSET};
-
-                       if($name == TAR_DATA_LONGLINK)
-                       {
-                               // LongLink
-                               $buff = fread( $this->fp, $pdsz );
-                               $longname = substr($buff, 0, $size);
-                       }
-                       else if (preg_match("/$pattern/", $name) )
-//                     if ($type == 0 && preg_match("/$pattern/", $name) )
-                       {
-                               $buff = fread($this->fp, $pdsz);
-
-                               // ´û¤ËƱ¤¸¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¾ì¹ç¤Ï¾å½ñ¤­¤µ¤ì¤ë
-                               if($fpw = @fopen($name, 'wb')) {
-                                       fwrite($fpw, $buff, $size);
-                                       fclose($fpw);
-                                       chmod($name, 0666); // Ç°¤Î¤¿¤á¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤òÀßÄꤷ¤Æ¤ª¤¯
-                                       touch($name, $mtime); // ºÇ½ª¹¹¿·»þ¹ï¤Î½¤Àµ
-                                       $files[] = $name;
-                               }
-                       }
-                       else
-                       {
-                               // ¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤ò¿Ê¤á¤ë
-                               @fseek($this->fp, $pdsz, SEEK_CUR);
-                       }
-               }
-               return $files;
-       }
-
-       ////////////////////////////////////////////////////////////
-       //
-       // ´Ø¿ô  : tar¥Õ¥¡¥¤¥ë¤ËÄɲ乤ë
-       // °ú¿ô  : $dir    .. ¥Ç¥£¥ì¥¯¥È¥ê̾
-       //         $mask   .. Äɲ乤ë¥Õ¥¡¥¤¥ë(Àµµ¬É½¸½)
-       //         $decode .. ¥Ú¡¼¥¸Ì¾¤ÎÊÑ´¹¤ò¤¹¤ë¤«
-       // ÊÖ¤êÃÍ: ºîÀ®¤·¤¿¥Õ¥¡¥¤¥ë¿ô
-       //
-       ////////////////////////////////////////////////////////////
-       function add($dir, $mask, $decode = false)
-       {
-               $retvalue = 0;
-               
-               if ($this->status != TAR_STATS_CREATE)
-                       return ''; // ¥Õ¥¡¥¤¥ë¤¬ºîÀ®¤µ¤ì¤Æ¤¤¤Ê¤¤
-
-               unset($files);
-
-               //  »ØÄꤵ¤ì¤¿¥Ñ¥¹¤Î¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
-               $dp = @opendir($dir) or
-                       die_message($dir . ' is not found or not readable.');
-               while ($filename = readdir($dp)) {
-                       if(preg_match("/$mask/", $filename)) {
-                               $files[] = $dir . $filename;
-                       }
-               }
-               closedir($dp);
-               
-               sort($files);
-
-               foreach($files as $name)
-               {
-                       // Tar¤Ë³ÊǼ¤¹¤ë¥Õ¥¡¥¤¥ë̾
-                       if($decode == true )
-                       {
-                               // ¥Õ¥¡¥¤¥ë̾¤ò¥Ú¡¼¥¸Ì¾¤ËÊÑ´¹¤¹¤ë½èÍý
-                               $dirname  = dirname(trim($name)) . '/';
-                               $filename = basename(trim($name));
-                               if(preg_match("/^((?:[0-9A-F]{2})+)_((?:[0-9A-F]{2})+)/", $filename, $matches))
-                               {
-                                       // attach¥Õ¥¡¥¤¥ë̾
-                                       $filename = decode($matches[1]).'/'.decode($matches[2]);
-                               }
-                               else
-                               {
-                                       $pattern = '^((?:[0-9A-F]{2})+)((\.txt|\.gz)*)$';
-                                       if (preg_match("/$pattern/", $filename, $matches)) {
-                                               $filename = decode($matches[1]).$matches[2];
-                                               // ´í¤Ê¤¤¥³¡¼¥É¤ÏÃÖ´¹¤·¤Æ¤ª¤¯
-                                               $filename = str_replace(':','_',$filename);
-                                               $filename = str_replace('\\','_',$filename);
-                                       }
-                               }
-                               $filename = $dirname . $filename;
-                               if(function_exists('mb_convert_encoding')) {
-                                       // ¥Õ¥¡¥¤¥ë̾¤Îʸ»ú¥³¡¼¥É¤òÊÑ´¹
-                                       $filename = mb_convert_encoding($filename, PLUGIN_TARFILE_FILENAME_ENCORDING);
-                               }
-                       }
-                       else
-                       {
-                               $filename = $name;
-                       }
-
-                       // ºÇ½ª¹¹¿·»þ¹ï
-                       $mtime = filemtime( $name );
-
-                       // ¥Õ¥¡¥¤¥ë̾Ĺ¤Î¥Á¥§¥Ã¥¯
-                       if(strlen($filename) > TAR_HDR_NAME_LEN) {
-                               // LongLinkÂбþ
-                               $size = strlen($filename);
-                               // LonkLink¥Ø¥Ã¥ÀÀ¸À®
-                               $tar_data = $this->make_header(TAR_DATA_LONGLINK, $size, $mtime, TAR_HDR_LINK);
-                               // ¥Õ¥¡¥¤¥ë½ÐÎÏ
-                               $this->write_data(join('', $tar_data), $filename, $size);
-                       }
-
-                       // ¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤ò¼èÆÀ
-                       $size = filesize( $name );
-                       if ($size == FALSE) {
-                               die_message($name . ' is not found or not readable.');
-                               continue;       // ¥Õ¥¡¥¤¥ë¤¬¤Ê¤¤
-                       }
-
-                       // ¥Ø¥Ã¥ÀÀ¸À®
-                       $tar_data = $this->make_header($filename, $size, $mtime, TAR_HDR_FILE);
-
-                       // ¥Õ¥¡¥¤¥ë¥Ç¡¼¥¿¤Î¼èÆÀ
-                       $fpr = @fopen($name , 'rb');
-                       $data = fread($fpr, $size);
-                       fclose( $fpr );
-
-                       // ¥Õ¥¡¥¤¥ë½ÐÎÏ
-                       $this->write_data(join('', $tar_data), $data, $size);
-                       ++$retvalue;
-               }
-               return $retvalue;
-       }
-       
-       ////////////////////////////////////////////////////////////
-       //
-       // ´Ø¿ô  : tar¤Î¥Ø¥Ã¥À¾ðÊó¤òÀ¸À®¤¹¤ë
-       // °ú¿ô  : $filename .. ¥Õ¥¡¥¤¥ë̾
-       //         $size     .. ¥Ç¡¼¥¿¥µ¥¤¥º
-       //         $mtime    .. ºÇ½ª¹¹¿·Æü
-       //         $typeflag .. TypeFlag (file/link)
-       // Ìá¤êÃÍ: tar¥Ø¥Ã¥À¾ðÊó
-       //
-       ////////////////////////////////////////////////////////////
-       function make_header($filename, $size, $mtime, $typeflag)
-       {
-               $tar_data = array_fill(0, TAR_HDR_LEN, "\0");
-               
-               // ¥Õ¥¡¥¤¥ë̾¤òÊݸ
-               for($i = 0; $i < strlen($filename); $i++ )
-               {
-                       if ($i < TAR_HDR_NAME_LEN) {
-                               $tar_data[$i + TAR_HDR_NAME_OFFSET] = $filename{$i};
-                       } else {
-                               break;  // ¥Õ¥¡¥¤¥ë̾¤¬Ä¹¤¹¤®
-                       }
-               }
-
-               // mode
-               $modeid = TAR_DATA_MODE;
-               for($i = 0; $i < strlen($modeid); $i++ ) {
-                       $tar_data[$i + TAR_HDR_MODE_OFFSET] = $modeid{$i};
-               }
-
-               // uid / gid
-               $ugid = TAR_DATA_UGID;
-               for($i = 0; $i < strlen($ugid); $i++ ) {
-                       $tar_data[$i + TAR_HDR_UID_OFFSET] = $ugid{$i};
-                       $tar_data[$i + TAR_HDR_GID_OFFSET] = $ugid{$i};
-               }
-
-               // ¥µ¥¤¥º
-               $strsize = sprintf('%11o', $size);
-               for($i = 0; $i < strlen($strsize); $i++ ) {
-                       $tar_data[$i + TAR_HDR_SIZE_OFFSET] = $strsize{$i};
-               }
-
-               // ºÇ½ª¹¹¿·»þ¹ï
-               $strmtime = sprintf('%o', $mtime);
-               for($i = 0; $i < strlen($strmtime); $i++ ) {
-                       $tar_data[$i + TAR_HDR_MTIME_OFFSET] = $strmtime{$i};
-               }
-
-               // ¥Á¥§¥Ã¥¯¥µ¥à·×»»ÍѤΥ֥é¥ó¥¯¤òÀßÄê
-               $chkblanks = TAR_DATA_CHKBLANKS;
-               for($i = 0; $i < strlen($chkblanks); $i++ ) {
-                       $tar_data[$i + TAR_HDR_CHKSUM_OFFSET] = $chkblanks{$i};
-               }
-
-               // ¥¿¥¤¥×¥Õ¥é¥°
-               $tar_data[TAR_HDR_TYPE_OFFSET] = $typeflag;
-
-               // ¥Á¥§¥Ã¥¯¥µ¥à¤Î·×»»
-               $sum = 0;
-               for($i = 0; $i < TAR_BLK_LEN; $i++ ) {
-                       $sum += 0xff & ord($tar_data[$i]);
-               }
-               $strchksum = sprintf('%7o',$sum);
-               for($i = 0; $i < strlen($strchksum); $i++ ) {
-                       $tar_data[$i + TAR_HDR_CHKSUM_OFFSET] = $strchksum{$i};
-               }
-               return $tar_data;
-       }
-       
-       ////////////////////////////////////////////////////////////
-       //
-       // ´Ø¿ô  : tar¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë½ÐÎÏ
-       // °ú¿ô  : $header .. tar¥Ø¥Ã¥À¾ðÊó
-       //         $body   .. tar¥Ç¡¼¥¿
-       //         $size   .. ¥Ç¡¼¥¿¥µ¥¤¥º
-       // Ìá¤êÃÍ: ¤Ê¤·
-       //
-       ////////////////////////////////////////////////////////////
-       function write_data($header, $body, $size)
-       {
-               // ¥Õ¥£¥ë¤¹¤ë¥µ¥¤¥º¤ò·×»»¤·¤Æ¤ª¤¯
-               $fixsize = ceil($size / TAR_BLK_LEN) * TAR_BLK_LEN;
-               $fixsize -= $size;
-
-               flock($this->fp, LOCK_EX);
-               fwrite($this->fp, $header, TAR_HDR_LEN); // ¥Ø¥Ã¥À½ÐÎÏ
-               fwrite($this->fp, $body, $size); // ¥Ç¡¼¥¿½ÐÎÏ
-
-               // ¥µ¥¤¥ºÄ´À°(¤¢¤Þ¤Ã¤¿Éôʬ¤ò0¤Ç¥Õ¥£¥ë)
-               fwrite($this->fp, $this->dummydata, $fixsize); // Padding
-
-               flock($this->fp, LOCK_UN);
-       }
-}
-?>