diff options
| author | Wez Furlong <wez@php.net> | 2005-10-01 02:48:11 +0000 |
|---|---|---|
| committer | Wez Furlong <wez@php.net> | 2005-10-01 02:48:11 +0000 |
| commit | 932346c00f897ba0a82b611325370af322396757 (patch) | |
| tree | 03c6a6325dea1574661a489c2e65f42fc6bd6232 | |
| parent | 56f006a99883197b5433c3bbbd1c229a92211f19 (diff) | |
| download | php-git-932346c00f897ba0a82b611325370af322396757.tar.gz | |
Allow compilation with PHP 5.0.x
Closes PECL #5514
| -rwxr-xr-x | ext/pdo/pdo_dbh.c | 28 | ||||
| -rwxr-xr-x | ext/pdo/php_pdo.h | 13 |
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) { \ |
