summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am6
-rw-r--r--build.mk2
-rw-r--r--configure.in3
-rw-r--r--pear/DB.php190
-rw-r--r--pear/Makefile.am9
-rw-r--r--pear/README29
6 files changed, 234 insertions, 5 deletions
diff --git a/Makefile.am b/Makefile.am
index d57126e236..a5e10f4299 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
AUTOMAKE_OPTIONS = foreign
ZEND_DIR = $(srcdir)/libzend
-SUBDIRS = libzend ext sapi $(TSRM_DIR) $(REGEX_DIR)
+SUBDIRS = libzend ext sapi $(TSRM_DIR) $(REGEX_DIR) . pecl
BUILDLDFLAGS = $(EXTRA_LDFLAGS) $(LDFLAGS)
@@ -21,9 +21,9 @@ libphp4_la_DEPENDENCIES = \
$(TSRM_LIB)
libphp4_la_LIBADD = $(libphp4_la_DEPENDENCIES) $(EXTRA_LIBS)
-
+
libphp4_la_LDFLAGS = $(BUILDLDFLAGS) $(PHP_RPATHS)
-
+
configuration-parser.h configuration-parser.c: configuration-parser.y
$(YACC) -p cfg -v -d $< -o configuration-parser.c
diff --git a/build.mk b/build.mk
index 69c52cee2c..b2bddd2ac3 100644
--- a/build.mk
+++ b/build.mk
@@ -15,7 +15,7 @@ LT_TARGETS = ltconfig ltmain.sh config.guess config.sub
SUBDIRS = libzend TSRM
-makefile_am_files = Makefile.am $(shell find ext sapi regex -name Makefile.am)
+makefile_am_files = Makefile.am $(shell find ext sapi regex pecl -name Makefile.am)
makefile_in_files = $(makefile_am_files:.am=.in)
makefile_files = $(makefile_am_files:e.am=e)
diff --git a/configure.in b/configure.in
index f9782e9c98..22de9d3452 100644
--- a/configure.in
+++ b/configure.in
@@ -689,7 +689,8 @@ AC_SUBST(PHP_SAPI)
AC_SUBST(INSTALL_IT)
#libphp4.module
-AC_OUTPUT([Makefile php4.spec ext/Makefile sapi/Makefile $PHP_OUTPUT_FILES
+AC_OUTPUT([Makefile php4.spec ext/Makefile sapi/Makefile pecl/Makefile
+ $PHP_OUTPUT_FILES
scripts/mkextlib regex/Makefile build-defs.h], [], [
if test ! -f $srcdir/ext/bcmath/number.c; then
diff --git a/pear/DB.php b/pear/DB.php
new file mode 100644
index 0000000000..cab6b7a4d3
--- /dev/null
+++ b/pear/DB.php
@@ -0,0 +1,190 @@
+<?php
+//
+// +----------------------------------------------------------------------+
+// | PHP version 4.0 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997, 1998, 1999 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.0 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_0.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> |
+// | |
+// +----------------------------------------------------------------------+
+//
+// Database independent query interface.
+//
+
+// {{{ Database independent error codes.
+
+define("DB_OK", 0);
+define("DB_ERROR", -1);
+define("DB_ERROR_SYNTAX", -2);
+define("DB_ERROR_CONSTRAINT", -3);
+define("DB_ERROR_NOT_FOUND", -4);
+define("DB_ERROR_ALREADY_EXISTS", -5);
+define("DB_ERROR_UNSUPPORTED", -6);
+define("DB_ERROR_MISMATCH", -7);
+define("DB_ERROR_INVALID", -8);
+define("DB_ERROR_NOT_CAPABLE", -9);
+define("DB_ERROR_TRUNCATED", -10);
+define("DB_ERROR_INVALID_NUMBER", -11);
+define("DB_ERROR_INVALID_DATE", -12);
+define("DB_ERROR_DIVZERO", -13);
+
+// }}}
+// {{{ Prepare/execute parameter types
+
+define("DB_PARAM_SCALAR", 1);
+define("DB_PARAM_OPAQUE", 2);
+
+// }}}
+// {{{ Binary data modes
+
+define("DB_BINMODE_PASSTHRU", 1);
+define("DB_BINMODE_RETURN", 2);
+define("DB_BINMODE_CONVERT", 3);
+
+// }}}
+
+// {{{ class DB
+
+/**
+ * This class implements a factory method for creating DB objects,
+ * as well as some "static methods".
+ *
+ * @version 100
+ * @author Stig Bakken <ssb@fast.no>
+ * @since 4.0b4
+ */
+class DB {
+ /**
+ * Create a new DB object for the specified database type.
+ * @param $type database type
+ * @return object a newly created DB object, or false on error
+ */
+ function factory($type) {
+ global $USED_PACKAGES;
+ // "include" should be replaced with "use" once PHP gets it
+ $pkgname = 'DB/' . $type;
+ if (!is_array($USED_PACKAGES) || !$USED_PACKAGES[$pkgname]) {
+ if (!@include("DB/${type}.php")) {
+ return DB_ERROR_NOT_FOUND;
+ } else {
+ $USED_PACKAGES[$pkgname] = true;
+ }
+ }
+ $classname = 'DB_' . $type;
+ $obj = new $classname;
+ return $obj;
+ }
+
+ /**
+ * Return the DB API version.
+ * @return int the DB API version number
+ */
+ function apiVersion() {
+ return 100;
+ }
+
+ /**
+ * Tell whether a result code from a DB method is an error.
+ * @param $code result code
+ * @return bool whether $code is an error
+ */
+ function isError($code) {
+ return is_int($code) && ($code < 0);
+ }
+
+ /**
+ * Return a textual error message for an error code.
+ * @param $code error code
+ * @return string error message
+ */
+ function errorMessage($code) {
+ if (!is_array($errorMessages)) {
+ $errorMessages = array(
+ DB_OK => "no error",
+ DB_ERROR => "unknown error",
+ DB_ERROR_SYNTAX => "syntax error",
+ DB_ERROR_CONSTRAINT => "constraint violation",
+ DB_ERROR_NOT_FOUND => "not found",
+ DB_ERROR_ALREADY_EXISTS => "already exists",
+ DB_ERROR_UNSUPPORTED => "not supported",
+ DB_ERROR_MISMATCH => "mismatch",
+ DB_ERROR_INVALID => "invalid",
+ DB_ERROR_NOT_CAPABLE => "DB implementation not capable",
+ DB_ERROR_INVALID_NUMBER => "invalid number",
+ DB_ERROR_INVALID_DATE => "invalid date or time",
+ DB_ERROR_DIVZERO => "division by zero"
+ );
+ }
+ return $errorMessages[$code];
+ }
+}
+
+// }}}
+// {{{ class DB_result
+
+/**
+ * This class implements a wrapper for a DB result set.
+ * A new instance of this class will be returned by the DB implementation
+ * after processing a query that returns data.
+ */
+class DB_result {
+ var $dbh;
+ var $result;
+
+ /**
+ * DB_result constructor.
+ * @param $dbh DB object reference
+ * @param $result result resource id
+ */
+ function DB_result($dbh, $result) {
+ $this->dbh = $dbh;
+ $this->result = $result;
+ }
+
+ /**
+ * Fetch and return a row of data.
+ * @return array a row of data, or false on error
+ */
+ function fetchRow() {
+ return $this->dbh->fetchRow($this->result);
+ }
+
+ /**
+ * Fetch a row of data into an existing array.
+ * @param $arr reference to data array
+ * @return int error code
+ */
+ function fetchInto(const $arr) {
+ return $this->dbh->fetchInto($this->result, &$arr);
+ }
+
+ /**
+ * Frees the resource for this result and reset ourselves.
+ * @return int error code
+ */
+ function free() {
+ $err = $this->dbh->freeResult($this->result);
+ if (DB::isError($err)) {
+ return $err;
+ }
+ $this->dbh = $this->result = false;
+ return true;
+ }
+}
+
+// }}}
+
+// Local variables:
+// tab-width: 4
+// c-basic-offset: 4
+// End:
+?>
diff --git a/pear/Makefile.am b/pear/Makefile.am
new file mode 100644
index 0000000000..2dd988ac9c
--- /dev/null
+++ b/pear/Makefile.am
@@ -0,0 +1,9 @@
+## Process this file with automake to produce Makefile.in
+
+pecldir=$(prefix)/lib/php
+pecl_DBdir=$(prefix)/lib/php/DB
+
+install-data-local:
+ $(mkinstalldirs) $(pecldir) $(pecl_DBdir)
+ $(INSTALL_DATA) $(srcdir)/DB.php $(pecldir)
+ $(INSTALL_DATA) $(srcdir)/DB/odbc.php $(pecl_DBdir)
diff --git a/pear/README b/pear/README
new file mode 100644
index 0000000000..b8ca9c09c6
--- /dev/null
+++ b/pear/README
@@ -0,0 +1,29 @@
+ PECL (pronounced "pickle") - PHP Extension and Code Library
+ -----------------------------------------------------------
+
+WHAT IS PECL?
+
+PECL is a code repository for PHP extensions and PHP library code
+similar to TeX's CTAN and Perl's CPAN.
+
+The intention behind PECL is to provide a means for library code
+authors to organize their code in a defined way shared by other
+developers, and to give the PHP community a single source for such
+code.
+
+
+ADMINISTRATION
+
+This section will describe the rules for how files are structured and
+how functions and classes should be named.
+
+
+TOOLS
+
+This section will describe the tools provided to PECL users.
+
+
+CODING RULES AND GUIDELINES
+
+* All PHP code _must_ use <?php ?>. <? ?> and other formats are not
+ portable.