wez Fri Dec 15 05:03:03 2006 UTC
Modified files:
/php-src/ext/pdo_sqlite pdo_sqlite.c php_pdo_sqlite.h
php_pdo_sqlite_int.h sqlite_driver.c
sqlite_statement.c
Log:
merge php5 pdo_sqlite into head; this source compiles on both php5 and php6.
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/pdo_sqlite.c?r1=1.13&r2=1.14&diff_format=u
Index: php-src/ext/pdo_sqlite/pdo_sqlite.c
diff -u php-src/ext/pdo_sqlite/pdo_sqlite.c:1.13
php-src/ext/pdo_sqlite/pdo_sqlite.c:1.14
--- php-src/ext/pdo_sqlite/pdo_sqlite.c:1.13 Sun Jan 1 13:09:53 2006
+++ php-src/ext/pdo_sqlite/pdo_sqlite.c Fri Dec 15 05:03:02 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_sqlite.c,v 1.13 2006/01/01 13:09:53 sniper Exp $ */
+/* $Id: pdo_sqlite.c,v 1.14 2006/12/15 05:03:02 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -31,7 +31,7 @@
#include "php_pdo_sqlite_int.h"
#include "zend_exceptions.h"
-#define PHP_PDO_SQLITE_MODULE_VERSION "0.9"
+#define PHP_PDO_SQLITE_MODULE_VERSION "1.0.1"
/* {{{ pdo_sqlite_functions[] */
zend_function_entry pdo_sqlite_functions[] = {
@@ -100,7 +100,7 @@
"(bundled) "
#endif
PHP_PDO_SQLITE_MODULE_VERSION
- " $Id: pdo_sqlite.c,v 1.13 2006/01/01 13:09:53 sniper Exp $");
+ " $Id: pdo_sqlite.c,v 1.14 2006/12/15 05:03:02 wez Exp $");
php_info_print_table_row(2, "SQLite Library", sqlite3_libversion());
php_info_print_table_end();
}
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/php_pdo_sqlite.h?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/pdo_sqlite/php_pdo_sqlite.h
diff -u php-src/ext/pdo_sqlite/php_pdo_sqlite.h:1.3
php-src/ext/pdo_sqlite/php_pdo_sqlite.h:1.4
--- php-src/ext/pdo_sqlite/php_pdo_sqlite.h:1.3 Sun Jan 1 13:09:53 2006
+++ php-src/ext/pdo_sqlite/php_pdo_sqlite.h Fri Dec 15 05:03:02 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_sqlite.h,v 1.3 2006/01/01 13:09:53 sniper Exp $ */
+/* $Id: php_pdo_sqlite.h,v 1.4 2006/12/15 05:03:02 wez Exp $ */
#ifndef PHP_PDO_SQLITE_H
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/php_pdo_sqlite_int.h?r1=1.4&r2=1.5&diff_format=u
Index: php-src/ext/pdo_sqlite/php_pdo_sqlite_int.h
diff -u php-src/ext/pdo_sqlite/php_pdo_sqlite_int.h:1.4
php-src/ext/pdo_sqlite/php_pdo_sqlite_int.h:1.5
--- php-src/ext/pdo_sqlite/php_pdo_sqlite_int.h:1.4 Sun Jan 1 13:09:53 2006
+++ php-src/ext/pdo_sqlite/php_pdo_sqlite_int.h Fri Dec 15 05:03:02 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_sqlite_int.h,v 1.4 2006/01/01 13:09:53 sniper Exp $ */
+/* $Id: php_pdo_sqlite_int.h,v 1.5 2006/12/15 05:03:02 wez Exp $ */
#ifndef PHP_PDO_SQLITE_INT_H
#define PHP_PDO_SQLITE_INT_H
@@ -62,8 +62,13 @@
extern pdo_driver_t pdo_sqlite_driver;
extern int _pdo_sqlite_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char
*file, int line TSRMLS_DC);
-#define pdo_sqlite_error(s) _pdo_sqlite_error(s, NULL, __FILE__, __LINE__
TSRMLS_CC)
-#define pdo_sqlite_error_stmt(s) _pdo_sqlite_error(stmt->dbh, stmt, __FILE__,
__LINE__ TSRMLS_CC)
+extern int _pdo_sqlite_error_msg(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char
*sqlstate, const char *msg,
+ const char *file, int line TSRMLS_DC);
+#define pdo_sqlite_error(dbh) _pdo_sqlite_error(dbh, NULL, __FILE__, __LINE__
TSRMLS_CC)
+#define pdo_sqlite_errmsg(dbh, st, msg) _pdo_sqlite_error_msg(dbh, NULL, st,
msg, __FILE__, __LINE__ TSRMLS_CC)
+#define pdo_sqlite_error_stmt(stmt) _pdo_sqlite_error(stmt->dbh, stmt,
__FILE__, __LINE__ TSRMLS_CC)
+#define pdo_sqlite_errmsg_stmt(stmt, st, msg) _pdo_sqlite_error_msg(stmt->dbh,
stmt, st, msg, __FILE__, __LINE__ TSRMLS_CC)
+
extern struct pdo_stmt_methods sqlite_stmt_methods;
#endif
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/sqlite_driver.c?r1=1.31&r2=1.32&diff_format=u
Index: php-src/ext/pdo_sqlite/sqlite_driver.c
diff -u php-src/ext/pdo_sqlite/sqlite_driver.c:1.31
php-src/ext/pdo_sqlite/sqlite_driver.c:1.32
--- php-src/ext/pdo_sqlite/sqlite_driver.c:1.31 Sun Dec 10 02:32:17 2006
+++ php-src/ext/pdo_sqlite/sqlite_driver.c Fri Dec 15 05:03:02 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sqlite_driver.c,v 1.31 2006/12/10 02:32:17 pajoye Exp $ */
+/* $Id: sqlite_driver.c,v 1.32 2006/12/15 05:03:02 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -31,6 +31,30 @@
#include "php_pdo_sqlite_int.h"
#include "zend_exceptions.h"
+int _pdo_sqlite_error_msg(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char
*sqlstate, const char *msg,
+ const char *file, int line TSRMLS_DC)
+{
+ pdo_sqlite_db_handle *H = (pdo_sqlite_db_handle *)dbh->driver_data;
+ pdo_error_type *pdo_err = stmt ? &stmt->error_code : &dbh->error_code;
+ pdo_sqlite_error_info *einfo = &H->einfo;
+
+ einfo->errcode = SQLITE_ERROR;
+ einfo->file = file;
+ einfo->line = line;
+ einfo->errmsg = pestrdup(msg, dbh->is_persistent);
+ if (sqlstate) {
+ strcpy(*pdo_err, sqlstate);
+ } else {
+ strcpy(*pdo_err, "HY000");
+ }
+
+ if (!dbh->methods) {
+ zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC,
"SQLSTATE[%s] [%d] %s",
+ *pdo_err, einfo->errcode, einfo->errmsg);
+ }
+ return einfo->errcode;
+}
+
int _pdo_sqlite_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *file, int
line TSRMLS_DC) /* {{{ */
{
pdo_sqlite_db_handle *H = (pdo_sqlite_db_handle *)dbh->driver_data;
@@ -78,13 +102,8 @@
}
if (!dbh->methods) {
-#if PHP_VERSION_ID > 50200
zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC,
"SQLSTATE[%s] [%d] %s",
*pdo_err, einfo->errcode, einfo->errmsg);
-#else
- zend_throw_exception_ex(php_pdo_get_exception(TSRMLS_C), 0
TSRMLS_CC, "SQLSTATE[%s] [%d] %s",
- *pdo_err, einfo->errcode, einfo->errmsg);
-#endif
}
return einfo->errcode;
@@ -203,7 +222,7 @@
}
}
-static char *pdo_sqlite_last_insert_id(pdo_dbh_t *dbh, const char *name,
unsigned int *len TSRMLS_DC)
+static char *pdo_sqlite_last_insert_id(pdo_dbh_t *dbh, const char *name, int
*len TSRMLS_DC)
{
pdo_sqlite_db_handle *H = (pdo_sqlite_db_handle *)dbh->driver_data;
char *id;
@@ -471,11 +490,6 @@
char *func_name;
int func_name_len;
long argc = -1;
-#ifdef IS_UNICODE
- zval cbname;
-#else
- char *cbname;
-#endif
pdo_dbh_t *dbh;
pdo_sqlite_db_handle *H;
int ret;
@@ -488,21 +502,10 @@
dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
PDO_CONSTRUCT_CHECK;
- if (!zend_is_callable(callback, 0, &cbname)) {
-#ifdef IS_UNICODE
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "function '%R' is
not callable", Z_TYPE(cbname), Z_UNIVAL(cbname));
- zval_dtor(&cbname);
-#else
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "function '%s' is
not callable", cbname);
- efree(cbname);
-#endif
+ if (!zend_is_callable(callback, 0, NULL)) {
+ pdo_sqlite_errmsg(dbh, NULL, "callback is not callable");
RETURN_FALSE;
}
-#ifdef IS_UNICODE
- zval_dtor(&cbname);
-#else
- efree(cbname);
-#endif
H = (pdo_sqlite_db_handle *)dbh->driver_data;
@@ -556,11 +559,6 @@
char *func_name;
int func_name_len;
long argc = -1;
-#ifdef IS_UNICODE
- zval cbname;
-#else
- char *cbname;
-#endif
pdo_dbh_t *dbh;
pdo_sqlite_db_handle *H;
int ret;
@@ -573,36 +571,14 @@
dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
PDO_CONSTRUCT_CHECK;
- if (!zend_is_callable(step_callback, 0, &cbname)) {
-#ifdef IS_UNICODE
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "function '%R' is
not callable", Z_TYPE(cbname), Z_UNIVAL(cbname));
- zval_dtor(&cbname);
-#else
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "function '%s' is
not callable", cbname);
- efree(cbname);
-#endif
+ if (!zend_is_callable(step_callback, 0, NULL)) {
+ pdo_sqlite_errmsg(dbh, NULL, "step callback is not callable");
RETURN_FALSE;
}
-#ifdef IS_UNICODE
- zval_dtor(&cbname);
-#else
- efree(cbname);
-#endif
- if (!zend_is_callable(fini_callback, 0, &cbname)) {
-#ifdef IS_UNICODE
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "function '%R' is
not callable", Z_TYPE(cbname), Z_UNIVAL(cbname));
- zval_dtor(&cbname);
-#else
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "function '%s' is
not callable", cbname);
- efree(cbname);
-#endif
+ if (!zend_is_callable(fini_callback, 0, NULL)) {
+ pdo_sqlite_errmsg(dbh, NULL, "fini callback is not callable");
RETURN_FALSE;
}
-#ifdef IS_UNICODE
- zval_dtor(&cbname);
-#else
- efree(cbname);
-#endif
H = (pdo_sqlite_db_handle *)dbh->driver_data;
@@ -686,6 +662,13 @@
return NULL;
}
+#if PHP_MAJOR_VERSION < 6
+ if (PG(safe_mode) && (!php_checkuid(fullpath, NULL,
CHECKUID_CHECK_FILE_AND_DIR))) {
+ efree(fullpath);
+ return NULL;
+ }
+#endif
+
if (php_check_open_basedir(fullpath TSRMLS_CC)) {
efree(fullpath);
return NULL;
@@ -742,13 +725,9 @@
filename = make_filename_safe(dbh->data_source TSRMLS_CC);
if (!filename) {
-#if PHP_VERSION_ID > 50200
zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC,
- "open_basedir prohibits opening %s", dbh->data_source);
-#else
- zend_throw_exception_ex(php_pdo_get_exception(TSRMLS_C), 0
TSRMLS_CC,
- "open_basedir prohibits opening %s", dbh->data_source);
-#endif
+ "safe_mode/open_basedir prohibits opening %s",
+ dbh->data_source);
goto cleanup;
}
@@ -760,7 +739,11 @@
goto cleanup;
}
- if ((PG(open_basedir) && *PG(open_basedir))) {
+ if (
+#if PHP_MAJOR_VERSION < 6
+ PG(safe_mode) ||
+#endif
+ (PG(open_basedir) && *PG(open_basedir))) {
sqlite3_set_authorizer(H->db, authorizer, NULL);
}
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/sqlite_statement.c?r1=1.21&r2=1.22&diff_format=u
Index: php-src/ext/pdo_sqlite/sqlite_statement.c
diff -u php-src/ext/pdo_sqlite/sqlite_statement.c:1.21
php-src/ext/pdo_sqlite/sqlite_statement.c:1.22
--- php-src/ext/pdo_sqlite/sqlite_statement.c:1.21 Mon Nov 27 12:13:02 2006
+++ php-src/ext/pdo_sqlite/sqlite_statement.c Fri Dec 15 05:03:02 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sqlite_statement.c,v 1.21 2006/11/27 12:13:02 tony2001 Exp $ */
+/* $Id: sqlite_statement.c,v 1.22 2006/12/15 05:03:02 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -94,7 +94,6 @@
}
switch (PDO_PARAM_TYPE(param->param_type)) {
- case PDO_PARAM_LOB:
case PDO_PARAM_STMT:
return 0;
@@ -104,7 +103,23 @@
}
pdo_sqlite_error_stmt(stmt);
return 0;
-
+
+ case PDO_PARAM_LOB:
+ if (Z_TYPE_P(param->parameter)
== IS_RESOURCE) {
+ php_stream *stm;
+
php_stream_from_zval_no_verify(stm, ¶m->parameter);
+ if (stm) {
+
SEPARATE_ZVAL_IF_NOT_REF(¶m->parameter);
+
Z_TYPE_P(param->parameter) = IS_STRING;
+
Z_STRLEN_P(param->parameter) = php_stream_copy_to_mem(stm,
+
&Z_STRVAL_P(param->parameter), PHP_STREAM_COPY_ALL, 0);
+ } else {
+
pdo_raise_impl_error(stmt->dbh, stmt, "HY105", "Expected a stream resource"
TSRMLS_CC);
+ return 0;
+ }
+ }
+ /* fall through */
+
case PDO_PARAM_STR:
default:
if (Z_TYPE_P(param->parameter)
== IS_NULL) {
@@ -114,9 +129,9 @@
} else {
convert_to_string(param->parameter);
if(SQLITE_OK ==
sqlite3_bind_text(S->stmt, param->paramno + 1,
-
Z_STRVAL_P(param->parameter),
-
Z_STRLEN_P(param->parameter),
- SQLITE_STATIC))
{
+
Z_STRVAL_P(param->parameter),
+
Z_STRLEN_P(param->parameter),
+
SQLITE_STATIC)) {
return 1;
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php