Mercurial > hg > cmmr2012-drupal-site
diff vendor/pear/archive_tar/scripts/phptar.in @ 5:12f9dff5fda9 tip
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:34:47 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/pear/archive_tar/scripts/phptar.in Thu May 09 15:34:47 2019 +0100 @@ -0,0 +1,236 @@ +#!@prefix@/bin/php -Cq +<?php // -*- PHP -*- + +// {{{ setup + +define('S_IFDIR', 0040000); // Directory +define('S_IFCHR', 0020000); // Character device +define('S_IFBLK', 0060000); // Block device +define('S_IFREG', 0100000); // Regular file +define('S_IFIFO', 0010000); // FIFO +define('S_IFLNK', 0120000); // Symbolic link +define('S_IFSOCK', 0140000); // Socket + +require_once "PEAR.php"; +require_once "Archive/Tar.php"; +require_once "Console/Getopt.php"; + +// }}} +// {{{ options + +$verbose = false; +$op_create = false; +$op_list = false; +$op_extract = false; +$use_gzip = false; +$file = ''; + +$progname = basename(array_shift($argv)); + +$options = Console_Getopt::getopt($argv, "h?ctxvzf:"); +if (PEAR::isError($options)) { + usage($options); +} + +$opts = $options[0]; +foreach ($opts as $opt) { + switch ($opt[0]) { + case 'v': { + $verbose = true; + break; + } + case 'c': { + $op_create = true; + break; + } + case 't': { + $op_list = true; + break; + } + case 'x': { + $op_extract = true; + break; + } + case 'z': { + $use_gzip = true; + break; + } + case 'f': { + $file = $opt[1]; + break; + } + case 'h': + case '?': { + usage(); + break; + } + } +} + +if ($op_create + $op_list + $op_extract > 1) { + usage("Only one of -c, -t and -x can be specified at once!"); +} + +if ($op_create + $op_list + $op_extract == 0) { + usage("Please specify either -c, -t or -x!"); +} + +if (empty($file)) { + if ($op_create) { + $file = "php://stdout"; + } else { + $file = "php://stdin"; + } +} + +// }}} + +$tar = new Archive_Tar($file, $use_gzip); +$tar->setErrorHandling(PEAR_ERROR_DIE, "$progname error: %s\n"); + +if ($op_create) { + do_create($tar, $options[1]); + $tar->create($options[1]); +} elseif ($op_list) { + do_list($tar, $verbose); +} elseif ($op_extract) { + do_extract($tar); +} + +// {{{ getrwx() + +function getrwx($bits) { + $str = ''; + $str .= ($bits & 4) ? 'r' : '-'; + $str .= ($bits & 2) ? 'w' : '-'; + $str .= ($bits & 1) ? 'x' : '-'; + return $str; +} + +// }}} +// {{{ getfiletype() + +function getfiletype($bits) { + static $map = array( + '-' => S_IFREG, + 'd' => S_IFDIR, + 'l' => S_IFLNK, + 'c' => S_IFCHR, + 'b' => S_IFBLK, + 'p' => S_IFIFO, + 's' => S_IFSOCK, + ); + foreach ($map as $char => $mask) { + if ($bits & $mask) { + return $char; + } + } +} + +// }}} +// {{{ getuser() + +function getuser($uid) { + static $cache = array(); + if (isset($cache[$uid])) { + return $cache[$uid]; + } + if (function_exists("posix_getpwuid")) { + if (is_array($user = @posix_getpwuid($uid))) { + $cache[$uid] = $user['name']; + return $user['name']; + } + } + $cache[$uid] = $uid; + return $uid; +} + +// }}} +// {{{ getgroup() + +function getgroup($gid) { + static $cache = array(); + if (isset($cache[$gid])) { + return $cache[$gid]; + } + if (function_exists("posix_getgrgid")) { + if (is_array($group = @posix_getgrgid($gid))) { + $cache[$gid] = $group['name']; + return $group['name']; + } + } + $cache[$gid] = $gid; + return $gid; +} + +// }}} +// {{{ do_create() + +function do_create(&$tar, &$files) +{ + $tar->create($files); +} + +// }}} +// {{{ do_list() + +function do_list(&$tar, $verbose) +{ + static $rwx = array(4 => 'r', 2 => 'w', 1 => 'x'); + $files = $tar->listContent(); + if (is_array($files) && sizeof($files) > 0) { + foreach ($files as $file) { + if ($verbose) { + $fm = (int)$file['mode']; + $mode = sprintf('%s%s%s%s', getfiletype($fm), + getrwx(($fm >> 6) & 7), getrwx(($fm >> 3) & 7), + getrwx($fm & 7)); + $owner = getuser($file['uid']) . '/' . getgroup($file['gid']); + printf("%10s %-11s %7d %s %s\n", $mode, $owner, $file['size'], + date('Y-m-d H:i:s', $file['mtime']), $file['filename']); + } else { + printf("%s\n", $file['filename']); + } + } + } +} + +// }}} +// {{{ do_extract() + +function do_extract(&$tar, $destdir = ".") +{ + $tar->extract($destdir); +} + +// }}} +// {{{ usage() + +function usage($errormsg = '') +{ + global $progname; + $fp = fopen("php://stderr", "w"); + if ($errormsg) { + if (PEAR::isError($errormsg)) { + fwrite($fp, $errormsg->getMessage() . "\n"); + } else { + fwrite($fp, "$errormsg\n"); + } + } + fwrite($fp, "$progname [-h|-?] {-c|-t|-x} [-z] [-v] [-f file] [file(s)...] +Options: + -h, -? Show this screen + -c Create archive + -t List archive + -x Extract archive + -z Run input/output through gzip + -f file Use <file> as input or output (default is stdin/stdout) + +"); + fclose($fp); + exit; +} + +// }}} + +?>