foreach ($opts as $opt) {
switch ($opt[0]) {
case 'v': {
- $verbose = true;
+ $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 '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;
- }
+ usage();
+ break;
+ }
}
}
if ($op_create + $op_list + $op_extract > 1) {
- usage("Only one of -c, -t and -x can be specified at once!");
+ 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!");
+ usage("Please specify either -c, -t or -x!");
}
if (empty($file)) {
- if ($op_create) {
- $file = "php://stdout";
- } else {
- $file = "php://stdin";
- }
+ if ($op_create) {
+ $file = "php://stdout";
+ } else {
+ $file = "php://stdin";
+ }
}
// }}}
$tar->setErrorHandling(PEAR_ERROR_DIE, "$progname error: %s\n");
if ($op_create) {
- do_create($tar, $options[1]);
- $tar->create($options[1]);
+ do_create($tar, $options[1]);
+ $tar->create($options[1]);
} elseif ($op_list) {
- do_list($tar, $verbose);
+ do_list($tar, $verbose);
} elseif ($op_extract) {
- do_extract($tar);
+ do_extract($tar);
}
// {{{ getrwx()
function getrwx($bits) {
- $str = '';
- $str .= ($bits & 4) ? 'r' : '-';
- $str .= ($bits & 2) ? 'w' : '-';
- $str .= ($bits & 1) ? 'x' : '-';
- return $str;
+ $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;
- }
- }
+ 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;
+ 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;
+ 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;
}
// }}}
function do_create(&$tar, &$files)
{
- $tar->create($files);
+ $tar->create($files);
}
// }}}
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']);
- }
- }
- }
+ 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']);
+ }
+ }
+ }
}
// }}}
function do_extract(&$tar, $destdir = ".")
{
- $tar->extract($destdir);
+ $tar->extract($destdir);
}
// }}}
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)...]
+ 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
-f file Use <file> as input or output (default is stdin/stdout)
");
- fclose($fp);
- exit;
+ fclose($fp);
+ exit;
}
// }}}
-?>
\ No newline at end of file
+?>