mirror of
https://github.com/php/php-src.git
synced 2024-10-13 12:32:38 +00:00
b10b24d50c
Add is_url field to wrapper structure; the stream wrapper openers will disallow opening is is_url && !PG(allow_url_fopen). Add infrastructure for stat($url) and opendir($url). Tidy up/centralize code that locates and instantiates wrappers for the various operations. Implement opendir for plain files. Make the PHP opendir and dir functions use the streams implementations. Add modelines for syntax highlighting the pear scripts in vim
192 lines
5.8 KiB
PHP
192 lines
5.8 KiB
PHP
#!@prefix@/bin/php -Cq
|
|
<?php // -*- PHP -*-
|
|
//
|
|
// +----------------------------------------------------------------------+
|
|
// | PHP Version 4 |
|
|
// +----------------------------------------------------------------------+
|
|
// | Copyright (c) 1997-2002 The PHP Group |
|
|
// +----------------------------------------------------------------------+
|
|
// | This source file is subject to version 2.02 of the PHP license, |
|
|
// | that is bundled with this package in the file LICENSE, and is |
|
|
// | available at through the world-wide-web at |
|
|
// | http://www.php.net/license/2_02.txt. |
|
|
// | If you did not receive a copy of the PHP license and are unable to |
|
|
// | obtain it through the world-wide-web, please send a note to |
|
|
// | license@php.net so we can mail you a copy immediately. |
|
|
// +----------------------------------------------------------------------+
|
|
// | Authors: Stig Bakken <ssb@fast.no> |
|
|
// | Tomas V.V.Cox <cox@idecnet.com> |
|
|
// +----------------------------------------------------------------------+
|
|
//
|
|
|
|
ini_set('allow_url_fopen', true);
|
|
set_time_limit(0);
|
|
ob_implicit_flush(true);
|
|
ini_set('track_errors', true);
|
|
ini_set('html_errors', false);
|
|
|
|
require_once 'PEAR.php';
|
|
require_once 'PEAR/Config.php';
|
|
require_once 'PEAR/Command.php';
|
|
require_once 'Console/Getopt.php';
|
|
|
|
PEAR_Command::setFrontendType('CLI');
|
|
$all_commands = PEAR_Command::getCommands();
|
|
$cmd_options = PEAR_Command::getOptions();
|
|
$ui = &PEAR_Command::getFrontendObject();
|
|
$progname = basename(__FILE__);
|
|
|
|
// XXX change Getopt to use raiseError() ?
|
|
$argv = Console_Getopt::readPHPArgv();
|
|
$options = Console_Getopt::getopt($argv, "c:C:d:D:h?sSqu:v" . $cmd_options);
|
|
if (PEAR::isError($options)) {
|
|
usage($options);
|
|
}
|
|
|
|
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($ui, "displayFatalError"));
|
|
$opts = $options[0];
|
|
|
|
$pear_user_config = '';
|
|
$pear_system_config = '';
|
|
$store_user_config = false;
|
|
$store_system_config = false;
|
|
$verbose = 1;
|
|
|
|
foreach ($opts as $opt) {
|
|
switch ($opt[0]) {
|
|
case 'c':
|
|
$pear_user_config = $opt[1];
|
|
break;
|
|
case 'C':
|
|
$pear_system_config = $opt[1];
|
|
break;
|
|
}
|
|
}
|
|
|
|
$config = &PEAR_Config::singleton($pear_user_config, $pear_system_config);
|
|
$verbose = $config->get("verbose");
|
|
$cmdopts = array();
|
|
|
|
foreach ($opts as $opt) {
|
|
$param = !empty($opt[1]) ? $opt[1] : true;
|
|
switch ($opt[0]) {
|
|
case 'd':
|
|
list($key, $value) = explode('=', $param);
|
|
$config->set($key, $value, 'user');
|
|
break;
|
|
case 'D':
|
|
list($key, $value) = explode('=', $param);
|
|
$config->set($key, $value, 'system');
|
|
break;
|
|
case 's':
|
|
$store_user_config = true;
|
|
break;
|
|
case 'S':
|
|
$store_system_config = true;
|
|
break;
|
|
case 'u':
|
|
$config->remove($param, 'user');
|
|
break;
|
|
case 'v':
|
|
$config->set('verbose', $verbose + 1);
|
|
break;
|
|
case 'q':
|
|
$config->set('verbose', $verbose - 1);
|
|
break;
|
|
default:
|
|
// all non pear params goes to the command
|
|
$cmdopts[$opt[0]] = $param;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($store_system_config) {
|
|
$config->store('system');
|
|
}
|
|
|
|
if ($store_user_config) {
|
|
$config->store('user');
|
|
}
|
|
|
|
$command = (isset($options[1][1])) ? $options[1][1] : null;
|
|
|
|
if (empty($command) && ($store_user_config || $store_system_config)) {
|
|
exit;
|
|
}
|
|
|
|
if (empty($all_commands[$command]) || $command == 'help') {
|
|
usage(null, @$options[1][2]);
|
|
}
|
|
|
|
$cmd = PEAR_Command::factory($command, $config);
|
|
if (PEAR::isError($cmd)) {
|
|
die($cmd->getMessage());
|
|
}
|
|
|
|
$cmdargs = array_slice($options[1], 2);
|
|
$ok = $cmd->run($command, $cmdopts, $cmdargs);
|
|
if ($ok === false) {
|
|
PEAR::raiseError("unknown command `$command'");
|
|
}
|
|
|
|
// {{{ usage()
|
|
|
|
function usage($error = null, $helpsubject = null)
|
|
{
|
|
global $progname, $all_commands;
|
|
$stderr = fopen('php://stderr', 'w');
|
|
fputs($stderr, "\n");
|
|
if (PEAR::isError($error)) {
|
|
fputs($stderr, $error->getMessage());
|
|
} elseif ($error !== null) {
|
|
fputs($stderr, $error);
|
|
}
|
|
if ($helpsubject != null) {
|
|
$put = cmdHelp($helpsubject);
|
|
} else {
|
|
$put =
|
|
"Usage: $progname [options] command [command-options] <parameters>\n".
|
|
"Type \"$progname help options\" to list all options.\n".
|
|
"Type \"$progname help <command>\" to get the help for the specified command.\n".
|
|
"Commands:\n " . implode("\n ", array_keys($all_commands));
|
|
}
|
|
fputs($stderr, "$put\n\n");
|
|
fclose($stderr);
|
|
exit;
|
|
}
|
|
|
|
function cmdHelp($command)
|
|
{
|
|
global $progname, $all_commands, $config;
|
|
if ($command == "options") {
|
|
return
|
|
"Options:\n".
|
|
" -v increase verbosity level (default 1)\n".
|
|
" -q be quiet, decrease verbosity level\n".
|
|
" -c file find user configuration in `file'\n".
|
|
" -C file find system configuration in `file'\n".
|
|
" -d foo=bar set user config variable `foo' to `bar'\n".
|
|
" -D foo=bar set system config variable `foo' to `bar'\n".
|
|
" -s store user configuration\n".
|
|
" -S store system configuration\n".
|
|
" -u foo unset `foo' in the user configuration\n".
|
|
" -h, -? display help/usage (this message)\n";
|
|
} elseif ($help = PEAR_Command::getHelp($command)) {
|
|
return "Usage : $progname $command {$help[0]}\n{$help[1]}";
|
|
}
|
|
return "No such command";
|
|
}
|
|
|
|
// }}}
|
|
|
|
/*
|
|
* Local variables:
|
|
* tab-width: 4
|
|
* c-basic-offset: 4
|
|
* indent-tabs-mode: nil
|
|
* End:
|
|
*/
|
|
// vim600:syn=php
|
|
|
|
?>
|