--- /dev/null
+# -*- makefile -*-
+
+pear_install_targets = \
+ install-pear \
+ install-headers \
+ install-build \
+ install-programs
+
+peardir=$(PEAR_INSTALLDIR)
+
+PEAR_SUBDIRS = \
+ Archive \
+ Console \
+ PEAR \
+ PEAR/Command \
+ PEAR/Frontend \
+ XML
+
+# These are moving to /pear (in cvs):
+# Crypt \
+# File \
+# Date \
+# DB \
+# HTML \
+# HTTP \
+# Image \
+# Mail \
+# Net \
+# Schedule \
+
+PEAR_FILES = \
+ Archive/Tar.php \
+ Console/Getopt.php \
+ PEAR.php \
+ PEAR/Autoloader.php \
+ PEAR/Command.php \
+ PEAR/Command/Auth.php \
+ PEAR/Command/Common.php \
+ PEAR/Command/Config.php \
+ PEAR/Command/Install.php \
+ PEAR/Command/Package.php \
+ PEAR/Command/Registry.php \
+ PEAR/Command/Remote.php \
+ PEAR/Frontend/CLI.php \
+ PEAR/Common.php \
+ PEAR/Config.php \
+ PEAR/Dependency.php \
+ PEAR/Installer.php \
+ PEAR/Packager.php \
+ PEAR/Registry.php \
+ PEAR/Remote.php \
+ System.php \
+ XML/Parser.php
+
+# These are moving to /pear (in cvs):
+# Crypt/CBC.php \
+# Crypt/HCEMD5.php \
+# DB.php \
+# DB/common.php \
+# DB/fbsql.php \
+# DB/ibase.php \
+# DB/ifx.php \
+# DB/msql.php \
+# DB/mssql.php \
+# DB/mysql.php \
+# DB/oci8.php \
+# DB/odbc.php \
+# DB/pgsql.php \
+# DB/storage.php \
+# DB/sybase.php \
+# Date/Calc.php \
+# Date/Human.php \
+# File/Find.php \
+# File/Passwd.php \
+# File/SearchReplace.php \
+# HTML/Common.php \
+# HTML/Form.php \
+# HTML/IT.php \
+# HTML/ITX.php \
+# HTML/IT_Error.php \
+# HTML/Page.php \
+# HTML/Processor.php \
+# HTML/Select.php \
+# HTML/Table.php \
+# HTTP.php \
+# HTTP/Compress.php \
+# Mail.php \
+# Mail/RFC822.php \
+# Mail/sendmail.php \
+# Mail/smtp.php \
+# Net/Curl.php \
+# Net/Dig.php \
+# Net/SMTP.php \
+# Net/Socket.php \
+# Schedule/At.php \
+
+PEAR_PACKAGES=\
+ Net_Socket-1.0.tgz
+
+
+install-pear:
+ @if $(mkinstalldirs) $(INSTALL_ROOT)$(peardir); then \
+ for i in $(PEAR_SUBDIRS); do \
+ $(mkinstalldirs) $(INSTALL_ROOT)$(peardir)/$$i; \
+ done; \
+ for dir in PEAR/CommandUI; do \
+ test -d $(INSTALL_ROOT)$(peardir)/$$dir && rm -rf $(INSTALL_ROOT)$(peardir)/$$dir; \
+ done; \
+ for i in $(PEAR_FILES); do \
+ echo "Installing $$i"; \
+ dir=`echo $$i|sed 's%[^/][^/]*$$%%'`; \
+ $(INSTALL_DATA) $(srcdir)/$$i $(INSTALL_ROOT)$(peardir)/$$dir; \
+ done; \
+ rm -f $(INSTALL_ROOT)$(peardir)/PEAR/Command/Login.php; \
+ rm -f $(INSTALL_ROOT)$(peardir)/PEAR/CommandUI/CLI.php; \
+ rm -f $(INSTALL_ROOT)$(peardir)/PEAR/CommandResponse.php; \
+ rm -f $(INSTALL_ROOT)$(peardir)/PEAR/Uploader.php; \
+ else \
+ cat $(srcdir)/install-pear.txt; \
+ exit 5; \
+ fi
+
+phpincludedir = $(includedir)/php
+phpbuilddir = $(prefix)/lib/php/build
+
+BUILD_FILES = \
+ pear/pear.m4 \
+ build/mkdep.awk \
+ build/shtool \
+ Makefile.global \
+ scan_makefile_in.awk \
+ acinclude.m4
+
+bin_SCRIPTS = phpize php-config pear pearize phptar
+
+install-build:
+ @echo "Installing build environment"
+ @$(mkinstalldirs) $(INSTALL_ROOT)$(phpbuilddir) $(INSTALL_ROOT)$(bindir) && \
+ (cd $(top_srcdir) && cp $(BUILD_FILES) $(INSTALL_ROOT)$(phpbuilddir))
+
+install-programs:
+ @for prog in $(bin_SCRIPTS); do \
+ echo "Installing program: $$prog"; \
+ $(INSTALL) -m 755 $(builddir)/scripts/$$prog $(INSTALL_ROOT)$(bindir)/$$prog; \
+ done; \
+ for file in $(INSTALL_ROOT)$(bindir)/pearcmd-*.php; do \
+ rm -f $$file; \
+ done; \
+ for prog in phpextdist; do \
+ echo "Installing program: $$prog"; \
+ $(INSTALL) -m 755 $(srcdir)/scripts/$$prog $(INSTALL_ROOT)$(bindir)/$$prog; \
+ done
+
+HEADER_DIRS = \
+ / \
+ Zend \
+ TSRM \
+ ext/standard \
+ ext/session \
+ ext/xml \
+ ext/xml/expat \
+ main \
+ ext/mbstring \
+ ext/pgsql \
+ regex
+
+install-headers:
+ -@for i in $(HEADER_DIRS); do \
+ paths="$$paths $(INSTALL_ROOT)$(phpincludedir)/$$i"; \
+ done; \
+ $(mkinstalldirs) $$paths && \
+ echo "Installing header files" && \
+ for i in $(HEADER_DIRS); do \
+ (cd $(top_srcdir)/$$i && cp -p *.h $(INSTALL_ROOT)$(phpincludedir)/$$i; \
+ cd $(top_builddir)/$$i && cp -p *.h $(INSTALL_ROOT)$(phpincludedir)/$$i) 2>/dev/null || true; \
+ done
+
+$(builddir)/scripts/pear: $(srcdir)/scripts/pear.in $(top_builddir)/config.status
+ (CONFIG_FILES=$@ CONFIG_HEADERS= $(top_builddir)/config.status)
+
+$(builddir)/scripts/phpize: $(srcdir)/scripts/phpize.in $(top_builddir)/config.status
+ (CONFIG_FILES=$@ CONFIG_HEADERS= $(top_builddir)/config.status)
+
+$(builddir)/scripts/phptar: $(srcdir)/scripts/phptar.in $(top_builddir)/config.status
+ (CONFIG_FILES=$@ CONFIG_HEADERS= $(top_builddir)/config.status)
+
+$(builddir)/scripts/pearize: $(srcdir)/scripts/pearize.in $(top_builddir)/config.status
+ (CONFIG_FILES=$@ CONFIG_HEADERS= $(top_builddir)/config.status)
+
+$(builddir)/scripts/php-config: $(srcdir)/scripts/php-config.in $(top_builddir)/config.status
+ (CONFIG_FILES=$@ CONFIG_HEADERS= $(top_builddir)/config.status)
--- /dev/null
+<?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. |
+// +----------------------------------------------------------------------+
+// | Author: Stig Bakken <ssb@fast.no> |
+// +----------------------------------------------------------------------+
+//
+// $Id$
+
+require_once 'PEAR/Command/Common.php';
+require_once 'PEAR/Packager.php';
+require_once 'PEAR/Common.php';
+
+class PEAR_Command_Package extends PEAR_Command_Common
+{
+ // {{{ constructor
+
+ /**
+ * PEAR_Command_Package constructor.
+ *
+ * @access public
+ */
+ function PEAR_Command_Package(&$ui, &$config)
+ {
+ parent::PEAR_Command_Common($ui, $config);
+ }
+
+ // }}}
+
+ // {{{ _displayValidationResults()
+
+ function _displayValidationResults($err, $warn, $strict = false)
+ {
+ foreach ($err as $e) {
+ $this->ui->displayLine("Error: $e");
+ }
+ foreach ($warn as $w) {
+ $this->ui->displayLine("Warning: $w");
+ }
+ $this->ui->displayLine(sprintf('Validation: %d error(s), %d warning(s)',
+ sizeof($err), sizeof($warn)));
+ if ($strict && sizeof($err) > 0) {
+ $this->ui->displayLine("Fix these errors and try again.");
+ return false;
+ }
+ return true;
+ }
+
+ // }}}
+ // {{{ getCommands()
+
+ /**
+ * Return a list of all the commands defined by this class.
+ * @return array list of commands
+ * @access public
+ */
+ function getCommands()
+ {
+ return array('package',
+ 'package-info',
+ 'package-list',
+ 'package-validate',
+ 'cvstag');
+ }
+
+ // }}}
+ // {{{ getOptions()
+
+ function getOptions()
+ {
+ return array('Z', 'n' /*, 'f', 'd', 'q', 'Q'*/);
+ }
+
+ // }}}
+ // {{{ getHelp()
+
+ function getHelp($command)
+ {
+ switch ($command) {
+ case 'package':
+ return array('[<package.xml>]',
+ 'Creates a PEAR package from its description file (usually '.
+ 'named as package.xml)');
+ case 'package-list':
+ return array('<pear package>',
+ 'List the contents of a PEAR package');
+ case 'packge-info':
+ return array('<pear package>',
+ 'Shows information about a PEAR package');
+ case 'package-validate':
+ return array('<package.(tgz|tar|xml)>',
+ 'Verifies a package or description file');
+ case 'cvstag':
+ return array('<package.xml>',
+ 'Runs "cvs tag" on files contained in a release');
+ }
+ }
+
+ // }}}
+ // {{{ run()
+
+ /**
+ * Execute the command.
+ *
+ * @param string command name
+ *
+ * @param array option_name => value
+ *
+ * @param array list of additional parameters
+ *
+ * @return bool TRUE on success, FALSE for unknown commands, or
+ * a PEAR error on failure
+ *
+ * @access public
+ */
+ function run($command, $options, $params)
+ {
+ $failmsg = '';
+ switch ($command) {
+ // {{{ package
+
+ case 'package': {
+ $pkginfofile = isset($params[0]) ? $params[0] : 'package.xml';
+ ob_start();
+ $packager =& new PEAR_Packager($this->config->get('php_dir'),
+ $this->config->get('ext_dir'),
+ $this->config->get('doc_dir'));
+ $packager->debug = $this->config->get('verbose');
+ $err = $warn = array();
+ $packager->validatePackageInfo($pkginfofile, $err, $warn);
+ if (!$this->_displayValidationResults($err, $warn, true)) {
+ break;
+ }
+ $compress = empty($options['Z']) ? true : false;
+ $result = $packager->Package($pkginfofile, $compress);
+ $output = ob_get_contents();
+ ob_end_clean();
+ $lines = explode("\n", $output);
+ foreach ($lines as $line) {
+ $this->ui->displayLine($line);
+ }
+ if (PEAR::isError($result)) {
+ $this->ui->displayLine("Package failed: ".$result->getMessage());
+ }
+ break;
+ }
+
+ // }}}
+ // {{{ package-list
+
+ case 'package-list': {
+ // $params[0] -> the PEAR package to list its contents
+ if (sizeof($params) != 1) {
+ $failmsg = "Command package-list requires a valid PEAR package filename ".
+ " as the first argument. Try the command \"help package-list\"";
+ break;
+ }
+ $obj = new PEAR_Common();
+
+ if (PEAR::isError($info = $obj->infoFromTgzFile($params[0]))) {
+ return $info;
+ }
+ $list =$info['filelist'];
+ $caption = 'Contents of ' . basename($params[0]);
+ $this->ui->startTable(array('caption' => $caption,
+ 'border' => true));
+ $this->ui->tableRow(array('Package Files', 'Install Destination'),
+ array('bold' => true));
+ foreach ($list as $file => $att) {
+ if (isset($att['baseinstalldir'])) {
+ $dest = $att['baseinstalldir'] . DIRECTORY_SEPARATOR .
+ $file;
+ } else {
+ $dest = $file;
+ }
+ switch ($att['role']) {
+ case 'test':
+ $dest = '-- will not be installed --'; break;
+ case 'doc':
+ $dest = $this->config->get('doc_dir') . DIRECTORY_SEPARATOR .
+ $dest;
+ break;
+ case 'php':
+ default:
+ $dest = $this->config->get('php_dir') . DIRECTORY_SEPARATOR .
+ $dest;
+ }
+ $dest = preg_replace('!/+!', '/', $dest);
+ $file = preg_replace('!/+!', '/', $file);
+ $opts = array(0 => array('wrap' => 23),
+ 1 => array('wrap' => 45)
+ );
+ $this->ui->tableRow(array($file, $dest), null, $opts);
+ }
+ $this->ui->endTable();
+ break;
+ }
+
+ // }}}
+ // {{{ package-info
+
+ case 'package-info': {
+ $obj = new PEAR_Common();
+ if (PEAR::isError($info = $obj->infoFromTgzFile($params[0]))) {
+ return $info;
+ }
+ unset($info['filelist']);
+ unset($info['changelog']);
+ $keys = array_keys($info);
+ $longtext = array('description', 'summary');
+ foreach ($keys as $key) {
+ if (is_array($info[$key])) {
+ switch ($key) {
+ case 'maintainers': {
+ $i = 0;
+ $mstr = '';
+ foreach ($info[$key] as $m) {
+ if ($i++ > 0) {
+ $mstr .= "\n";
+ }
+ $mstr .= $m['name'] . " <";
+ if (isset($m['email'])) {
+ $mstr .= $m['email'];
+ } else {
+ $mstr .= $m['handle'] . '@php.net';
+ }
+ $mstr .= "> ($m[role])";
+ }
+ $info[$key] = $mstr;
+ break;
+ }
+ case 'release_deps': {
+ static $rel_trans = array(
+ 'lt' => '<',
+ 'le' => '<=',
+ 'eq' => '=',
+ 'ne' => '!=',
+ 'gt' => '>',
+ 'ge' => '>=',
+ );
+ $i = 0;
+ $dstr = '';
+ foreach ($info[$key] as $d) {
+ if ($i++ > 0) {
+ $dstr .= ", ";
+ }
+ if (isset($rel_trans[$d['rel']])) {
+ $d['rel'] = $rel_trans[$d['rel']];
+ }
+ $dstr .= "$d[type] $d[rel]";
+ if (isset($d['version'])) {
+ $dstr .= " $d[version]";
+ }
+ }
+ $info[$key] = $dstr;
+ break;
+ }
+ default: {
+ $info[$key] = implode(", ", $info[$key]);
+ break;
+ }
+ }
+ }
+ $info[$key] = trim($info[$key]);
+ if (in_array($key, $longtext)) {
+ $info[$key] = preg_replace('/ +/', ' ', $info[$key]);
+ }
+ }
+ $caption = 'About ' . basename($params[0]);
+ $this->ui->startTable(array('caption' => $caption,
+ 'border' => true));
+ foreach ($info as $key => $value) {
+ $key = ucwords(str_replace('_', ' ', $key));
+ $this->ui->tableRow(array($key, $value), null, array(1 => array('wrap' => 55)));
+ }
+ $this->ui->endTable();
+ break;
+ }
+
+ // }}}
+ // {{{ package-validate
+
+ case 'package-validate': {
+ if (sizeof($params) < 1) {
+ $params[0] = "package.xml";
+ }
+ $obj = new PEAR_Common;
+ $info = null;
+ if (file_exists($params[0])) {
+ $fp = fopen($params[0], "r");
+ $test = fread($fp, 5);
+ fclose($fp);
+ if ($test == "<?xml") {
+ $info = $obj->infoFromDescriptionFile($params[0]);
+ }
+ }
+ if (empty($info)) {
+ $info = $obj->infoFromTgzFile($params[0]);
+ }
+ if (PEAR::isError($info)) {
+ return $this->raiseError($info);
+ }
+ $obj->validatePackageInfo($info, $err, $warn);
+ $this->_displayValidationResults($err, $warn);
+ break;
+ }
+
+ // }}}
+ // {{{ cvstag
+
+ case 'cvstag': {
+ if (sizeof($params) < 1) {
+ $help = $this->getHelp($command);
+ return $this->raiseError("$command: missing parameter: $help[0]");
+ }
+ $obj = new PEAR_Common;
+ $info = $obj->infoFromDescriptionFile($params[0]);
+ if (PEAR::isError($info)) {
+ return $this->raiseError($info);
+ }
+ $err = $warn = array();
+ $obj->validatePackageInfo($info, $err, $warn);
+ if (!$this->_displayValidationResults($err, $warn, true)) {
+ break;
+ }
+ $version = $info['version'];
+ $cvsversion = preg_replace('/[^a-z0-9]/i', '_', $version);
+ $cvstag = "RELEASE_$cvsversion";
+ $files = array_keys($info['filelist']);
+ $command = "cvs";
+ /* until the getopt bug is fixed, these won't work:
+ if (isset($options['q'])) {
+ $command .= ' -q';
+ }
+ if (isset($options['Q'])) {
+ $command .= ' -Q';
+ }
+ */
+ $command .= ' tag';
+ if (isset($options['f'])) {
+ $command .= ' -f';
+ }
+ /* neither will this one:
+ if (isset($options['d'])) {
+ $command .= ' -d';
+ }
+ */
+ $command .= ' ' . $cvstag . ' ' . escapeshellarg($params[0]);
+ foreach ($files as $file) {
+ $command .= ' ' . escapeshellarg($file);
+ }
+ $this->ui->displayLine("+ $command");
+ if (empty($options['n'])) {
+ $fp = popen($command, "r");
+ while ($line = fgets($fp, 1024)) {
+ $this->ui->displayLine(rtrim($line));
+ }
+ pclose($fp);
+ }
+ break;
+ }
+
+ // }}}
+ default: {
+ return false;
+ }
+ }
+ if ($failmsg) {
+ return $this->raiseError($failmsg);
+ }
+ return true;
+ }
+
+ // }}}
+
+}
+
+?>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE package SYSTEM "package.dtd">
+<package version="1.0">
+ <name>DB</name>
+ <summary>Database Abstraction Layer</summary>
+ <description>
+DB is a database abstraction layer providing:
+* an OO-style query API
+* a DSN (data source name) format for specifying database servers
+* prepare/execute (bind) emulation for databases that don't support it natively
+* a result object for each query response
+* portable error codes
+* sequence emulation
+* sequential and non sequential row fetching as well as bulk fetching
+* ordered array, associative array and object formats supported for the fetched rows
+* row limit support
+* transactions support
+* table information interface
+* DocBook and PHPDoc API documentation
+
+DB layers itself on top of PHP's existing database extensions. The
+currently supported extensions are: dbase, fbsql, interbase, informix,
+msql, mssql, mysql, oci8, odbc, pgsql and sybase (a DB style interface
+to LDAP servers is also avaible from a separate package).
+</description>
+ <license>PHP License</license>
+ <maintainers>
+ <maintainer>
+ <user>ssb</user>
+ <role>lead</role>
+ <name>Stig Sæther Bakken</name>
+ <email>stig@php.net</email>
+ </maintainer>
+ <maintainer>
+ <user>cox</user>
+ <role>developer</role>
+ <name>Tomas V.V.Cox</name>
+ <email>cox@idecnet.com</email>
+ </maintainer>
+ </maintainers>
+ <release>
+ <version>2.0</version>
+ <state>stable</state>
+ <date>2002-04-07</date>
+ <notes>First packaged release.</notes>
+ <filelist>
+ <file role="php" baseinstalldir="/">DB.php</file>
+ <dir name="DB">
+ <file role="php">common.php</file>
+ <file role="php">dbase.php</file>
+ <file role="php">fbsql.php</file>
+ <file role="php">ibase.php</file>
+ <file role="php">ifx.php</file>
+ <file role="php">msql.php</file>
+ <file role="php">mssql.php</file>
+ <file role="php">mysql.php</file>
+ <file role="php">oci8.php</file>
+ <file role="php">odbc.php</file>
+ <file role="php">pgsql.php</file>
+ <file role="php">sybase.php</file>
+ <file role="php">storage.php</file>
+ <file role="data">IDEAS</file>
+ <file role="data">MAINTAINERS</file>
+ <file role="data">STATUS</file>
+ <file role="data">TESTERS</file>
+ <dir name="tests">
+ <file role="test">db_error.phpt</file>
+ <file role="test">db_parsedsn.phpt</file>
+ <file role="test">db_factory.phpt</file>
+ <file role="test">db_ismanip.phpt</file>
+ <file role="test">db_error2.phpt</file>
+ <dir name="oci8">
+ <file role="test">06prepexec.phpt</file>
+ <file role="test">08affectedrows.phpt</file>
+ <file role="test">09numrows.phpt</file>
+ <file role="test">13limit.phpt</file>
+ <file role="test">05sequences.phpt</file>
+ <file role="test">07errornative.phpt</file>
+ <file role="test">01connect.phpt</file>
+ <file role="test">10errormap.phpt</file>
+ <file role="test">04numcols.phpt</file>
+ <file role="test">03simplequery.phpt</file>
+ <file role="test">02fetch.phpt</file>
+ </dir>
+ <dir name="odbc">
+ <file role="test">06prepexec.phpt</file>
+ <file role="test">09numrows.phpt</file>
+ <file role="test">07errornative.phpt</file>
+ <file role="test">01connect.phpt</file>
+ <file role="test">10errormap.phpt</file>
+ <file role="test">04numcols.phpt</file>
+ <file role="test">03simplequery.phpt</file>
+ <file role="test">02fetch.phpt</file>
+ </dir>
+ <dir name="ibase">
+ <file role="test">06prepexec.phpt</file>
+ <file role="test">05sequences.phpt</file>
+ <file role="test">01connect.phpt</file>
+ <file role="test">10errormap.phpt</file>
+ <file role="test">04numcols.phpt</file>
+ <file role="test">03simplequery.phpt</file>
+ <file role="test">02fetch.phpt</file>
+ </dir>
+ <dir name="mysql">
+ <file role="test">06prepexec.phpt</file>
+ <file role="test">08affectedrows.phpt</file>
+ <file role="test">09numrows.phpt</file>
+ <file role="test">13limit.phpt</file>
+ <file role="test">05sequences.phpt</file>
+ <file role="test">07errornative.phpt</file>
+ <file role="test">12tableinfo.phpt</file>
+ <file role="test">01connect.phpt</file>
+ <file role="test">10errormap.phpt</file>
+ <file role="test">04numcols.phpt</file>
+ <file role="test">03simplequery.phpt</file>
+ <file role="test">14fetchmode_object.phpt</file>
+ <file role="test">02fetch.phpt</file>
+ </dir>
+ <dir name="pgsql">
+ <file role="test">06prepexec.phpt</file>
+ <file role="test">11transact.phpt</file>
+ <file role="test">08affectedrows.phpt</file>
+ <file role="test">09numrows.phpt</file>
+ <file role="test">13limit.phpt</file>
+ <file role="test">05sequences.phpt</file>
+ <file role="test">07errornative.phpt</file>
+ <file role="test">01connect.phpt</file>
+ <file role="test">10errormap.phpt</file>
+ <file role="test">04numcols.phpt</file>
+ <file role="test">03simplequery.phpt</file>
+ <file role="test">14fetchmode_object.phpt</file>
+ <file role="test">02fetch.phpt</file>
+ </dir>
+ <dir name="driver">
+ <file role="test">06prepexec.phpt</file>
+ <file role="test">08affectedrows.phpt</file>
+ <file role="test">09numrows.phpt</file>
+ <file role="test">13limit.phpt</file>
+ <file role="test">05sequences.phpt</file>
+ <file role="test">15quote.phpt</file>
+ <file role="test">01connect.phpt</file>
+ <file role="test">10errormap.phpt</file>
+ <file role="test">04numcols.phpt</file>
+ <file role="test">03simplequery.phpt</file>
+ <file role="test">14fetchmode_object.phpt</file>
+ <file role="test">02fetch.phpt</file>
+ </dir>
+ </dir>
+ </dir>
+ </filelist>
+ </release>
+</package>