summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2005-10-01 02:48:11 +0000
committerWez Furlong <wez@php.net>2005-10-01 02:48:11 +0000
commit932346c00f897ba0a82b611325370af322396757 (patch)
tree03c6a6325dea1574661a489c2e65f42fc6bd6232
parent56f006a99883197b5433c3bbbd1c229a92211f19 (diff)
downloadphp-git-932346c00f897ba0a82b611325370af322396757.tar.gz
Allow compilation with PHP 5.0.x
Closes PECL #5514
-rwxr-xr-xext/pdo/pdo_dbh.c28
-rwxr-xr-xext/pdo/php_pdo.h13
2 files changed, 32 insertions, 9 deletions
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index 775bbb9b1d..2d59b8ec20 100755
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -762,7 +762,7 @@ static PHP_METHOD(PDO, getAttribute)
RETURN_LONG(dbh->error_mode);
case PDO_ATTR_DRIVER_NAME:
- RETURN_STRINGL(dbh->driver->driver_name, dbh->driver->driver_name_len, 1);
+ RETURN_STRINGL((char*)dbh->driver->driver_name, dbh->driver->driver_name_len, 1);
}
if (!dbh->methods->get_attribute) {
@@ -1141,6 +1141,32 @@ static int dbh_compare(zval *object1, zval *object2 TSRMLS_DC)
static zend_object_handlers pdo_dbh_object_handlers;
+PDO_API void php_pdo_declare_stringl_constant(const char *const_name,
+ size_t name_len, const char *value, size_t value_len TSRMLS_DC)
+{
+#if PHP_MAJOR_VERSION > 5 || PHP_MINOR_VERSION >= 1
+ zend_declare_class_constant_stringl(pdo_dbh_ce, const_name, name_len, value, value_len TSRMLS_CC);
+#else
+ zval *constant = malloc(sizeof(*constant));
+ ZVAL_STRINGL(constant, zend_strndup(value, value_len), value_len, 0);
+ INIT_PZVAL(constant);
+ zend_hash_update(&pdo_dbh_ce->constants_table, (char*)const_name, name_len+1, &constant, sizeof(zval*), NULL);
+#endif
+}
+
+PDO_API void php_pdo_declare_long_constant(const char *const_name,
+ unsigned int name_len, long value TSRMLS_DC)
+{
+#if PHP_MAJOR_VERSION > 5 || PHP_MINOR_VERSION >= 1
+ zend_declare_class_constant_long(pdo_dbh_ce, const_name, name_len, value TSRMLS_CC);
+#else
+ zval *constant = malloc(sizeof(*constant));
+ ZVAL_LONG(constant, value);
+ INIT_PZVAL(constant);
+ zend_hash_update(&pdo_dbh_ce->constants_table, (char*)const_name, name_len+1, &constant, sizeof(zval*), NULL);
+#endif
+}
+
void pdo_dbh_init(TSRMLS_D)
{
zend_class_entry ce;
diff --git a/ext/pdo/php_pdo.h b/ext/pdo/php_pdo.h
index c4b9c94c68..7754dba2b3 100755
--- a/ext/pdo/php_pdo.h
+++ b/ext/pdo/php_pdo.h
@@ -58,17 +58,14 @@ ZEND_END_MODULE_GLOBALS(pdo)
# define PDOG(v) (pdo_globals.v)
#endif
-#define REGISTER_PDO_CLASS_CONST_LONG(const_name, value) \
- zend_declare_class_constant_long(pdo_dbh_ce, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC);
+PDO_API void php_pdo_declare_long_constant(const char *const_name, size_t name_len, long value TSRMLS_DC);
+PDO_API void php_pdo_declare_stringl_constant(const char *const_name, size_t name_len, const char *value, size_t value_len TSRMLS_DC);
-#define REGISTER_PDO_CONST_LONG(const_name, value) { \
- zend_class_entry **pce; \
- if (zend_hash_find(CG(class_table), "pdo", sizeof("pdo"), (void **) &pce) != FAILURE) \
- zend_declare_class_constant_long(*pce, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC); \
-} \
+#define REGISTER_PDO_CLASS_CONST_LONG(const_name, value) \
+ php_pdo_declare_long_constant(const_name, sizeof(const_name)-1, (long)value TSRMLS_CC);
#define REGISTER_PDO_CLASS_CONST_STRING(const_name, value) \
- zend_declare_class_constant_stringl(pdo_dbh_ce, const_name, sizeof(const_name)-1, value, sizeof(value)-1 TSRMLS_CC);
+ php_pdo_declare_stringl_constant(const_name, sizeof(const_name)-1, value, sizeof(value)-1 TSRMLS_CC);
#define PDO_CONSTRUCT_CHECK \
if (!dbh->driver) { \