From: Greg Beaver Date: Sun, 2 Aug 2009 19:13:43 +0000 (+0000) Subject: add missing fetch.php X-Git-Tag: php-5.2.11RC1~51 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c624bfb376f2dca41563c69f3ff0d9b944bddcb5;p=php add missing fetch.php --- diff --git a/pear/fetch.php b/pear/fetch.php new file mode 100644 index 0000000000..01d223392e --- /dev/null +++ b/pear/fetch.php @@ -0,0 +1,76 @@ + \n", $argv[0]); + exit(1); +} + +function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) { + static $filesize = null; + + switch($notification_code) { + case STREAM_NOTIFY_RESOLVE: + case STREAM_NOTIFY_AUTH_REQUIRED: + case STREAM_NOTIFY_COMPLETED: + case STREAM_NOTIFY_FAILURE: + case STREAM_NOTIFY_AUTH_RESULT: + /* Ignore */ + break; + + case STREAM_NOTIFY_REDIRECTED: + echo "Being redirected to: ", $message, "\n"; + break; + + case STREAM_NOTIFY_CONNECT: + echo "Connected...\n"; + break; + + case STREAM_NOTIFY_FILE_SIZE_IS: + $filesize = $bytes_max; + echo "Filesize: ", $filesize, "\n"; + break; + + case STREAM_NOTIFY_MIME_TYPE_IS: + echo "Mime-type: ", $message, "\n"; + break; + + case STREAM_NOTIFY_PROGRESS: + if ($bytes_transferred > 0) { + if (!isset($filesize)) { + printf("\rUnknown filesize.. %2d kb done..", $bytes_transferred/1024); + } else { + $length = (int)(($bytes_transferred/$filesize)*100); + printf("\r[%-100s] %d%% (%2d/%2d kb)", str_repeat("=", $length). ">", $length, ($bytes_transferred/1024), $filesize/1024); + } + } + break; + } +} + +isset($argv[1], $argv[2]) or usage($argv); + +if (!isset($_ENV['http_proxy'])) { + $copt = null; +} else { + $copt = array( + 'http' => array( + 'proxy' => preg_replace('/^http/i', 'tcp', $_ENV['http_proxy']), + 'request_fulluri' => true, + ), + ); +} + +$ctx = stream_context_create($copt, array("notification" => "stream_notification_callback")); + +$fp = fopen($argv[1], "r", false, $ctx); +if (is_resource($fp) && file_put_contents($argv[2], $fp)) { + echo "\nDone!\n"; + exit(0); +} + +$err = error_get_last(); +echo "\nError..\n", $err["message"], "\n"; +exit(1); + +