#endif
#include "php.h"
-#ifdef ZEND_ENGINE_2
+#include "missing.h"
+
+/* broken static properties in PHP 5.0 */
+#if defined(ZEND_ENGINE_2) && !defined(WONKY)
#include "SAPI.h"
#include "php_ini.h"
#include "php_http_send_api.h"
#include "php_http_cache_api.h"
-#include "missing.h"
-
ZEND_EXTERN_MODULE_GLOBALS(http);
#define GET_STATIC_PROP(n) *GET_STATIC_PROP_EX(http_response_object_ce, n)
#define http_response_object_declare_default_properties() _http_response_object_declare_default_properties(TSRMLS_C)
static inline void _http_response_object_declare_default_properties(TSRMLS_D);
+#if BROKEN_STATICS
HashTable http_response_statics;
+#endif
zend_class_entry *http_response_object_ce;
zend_function_entry http_response_object_fe[] = {
case SEND_DATA:
{
zval *zdata = GET_STATIC_PROP(data);
- RETURN_SUCCESS(http_send_data(Z_STRVAL_P(zdata), Z_STRLEN_P(zdata)));
+ RETURN_SUCCESS(http_send_data_ex(Z_STRVAL_P(zdata), Z_STRLEN_P(zdata), 1));
}
case SEND_RSRC:
zval *the_stream = GET_STATIC_PROP(stream);
the_stream->type = IS_RESOURCE;
php_stream_from_zval(the_real_stream, &the_stream);
- RETURN_SUCCESS(http_send_stream(the_real_stream));
+ RETURN_SUCCESS(http_send_stream_ex(the_real_stream, 0, 1));
}
default:
{
- RETURN_SUCCESS(http_send_file(Z_STRVAL_P(GET_STATIC_PROP(file))));
+ RETURN_SUCCESS(http_send_file_ex(Z_STRVAL_P(GET_STATIC_PROP(file)), 1));
}
}
}
#include "php.h"
#include "missing.h"
-#if PHP_MAJOR_VERSION == 5
-
-static inline zval *new_zval(int persistent)
-{
- zval *z = pemalloc(sizeof(zval), persistent);
- INIT_PZVAL(z);
- return z;
-}
-
-static inline zval *tmp_zval(void)
-{
- zval *z;
- ALLOC_ZVAL(z);
- z->is_ref = 0;
- z->refcount = 0;
- return z;
-}
-
-static void dup_zval(zval **z)
-{
- zval_add_ref(z);
- SEPARATE_ZVAL(z);
-}
-
-
-# if PHP_MINOR_VERSION == 0
-
+#ifdef WONKY
int zend_declare_property_double(zend_class_entry *ce, char *name, int name_length, double value, int access_type TSRMLS_DC)
{
zval *property = new_zval(ce->type & ZEND_INTERNAL_CLASS);
ZVAL_BOOL(tmp, value);
zend_update_property(scope, object, name, name_length, tmp TSRMLS_CC);
}
-
-# endif /* PHP_MINOR_VERSION == 0 */
-
-int zend_declare_class_constant(zend_class_entry *ce, char *name, size_t name_length, zval *value TSRMLS_DC)
-{
- return zend_hash_add(&ce->constants_table, name, name_length, &value, sizeof(zval *), NULL);
-}
-
-int zend_declare_class_constant_long(zend_class_entry *ce, char *name, size_t name_length, long value TSRMLS_DC)
-{
- zval *constant = new_zval(ce->type & ZEND_INTERNAL_CLASS);
- ZVAL_LONG(constant, value);
- return zend_declare_class_constant(ce, name, name_length, constant TSRMLS_CC);
-}
-
-int zend_declare_class_constant_bool(zend_class_entry *ce, char *name, size_t name_length, zend_bool value TSRMLS_DC)
-{
- zval *constant = new_zval(ce->type & ZEND_INTERNAL_CLASS);
- ZVAL_BOOL(constant, value);
- return zend_declare_class_constant(ce, name, name_length, constant TSRMLS_CC);
-}
-
-int zend_declare_class_constant_double(zend_class_entry *ce, char *name, size_t name_length, double value TSRMLS_DC)
-{
- zval *constant = new_zval(ce->type & ZEND_INTERNAL_CLASS);
- ZVAL_DOUBLE(constant, value);
- return zend_declare_class_constant(ce, name, name_length, constant TSRMLS_CC);
-}
-
-int zend_declare_class_constant_string(zend_class_entry *ce, char *name, size_t name_length, char *value TSRMLS_DC)
-{
- return zend_declare_class_constant_stringl(ce, name, name_length, value, strlen(value) TSRMLS_CC);
-}
-
-int zend_declare_class_constant_stringl(zend_class_entry *ce, char *name, size_t name_length, char *value, size_t value_length TSRMLS_DC)
-{
- zval *constant = new_zval(ce->type & ZEND_INTERNAL_CLASS);
- if (ce->type & ZEND_INTERNAL_CLASS) {
- ZVAL_STRINGL(constant, zend_strndup(value, value_length), value_length, 0);
- } else {
- ZVAL_STRINGL(constant, value, value_length, 1);
- }
- return zend_declare_class_constant(ce, name, name_length, constant TSRMLS_CC);
-}
-
-int zend_update_static_property(zend_class_entry *scope, char *name, size_t name_len, zval *value TSRMLS_DC)
-{
- int retval;
- zval **property = NULL;
- zend_class_entry *old_scope = EG(scope);
-
- EG(scope) = scope;
-
- if (!(property = zend_std_get_static_property(scope, name, name_len, 0 TSRMLS_CC))) {
- retval = FAILURE;
- } else if (*property == value) {
- retval = SUCCESS;
- } else {
- value->refcount++;
- if (PZVAL_IS_REF(*property)) {
- zval_dtor(*property);
- (*property)->type = value->type;
- (*property)->value = value->value;
-
- if (value->refcount) {
- zval_copy_ctor(*property);
- }
- } else {
- REPLACE_ZVAL_VALUE(property, value, 1);
- }
- retval = SUCCESS;
- }
- zval_ptr_dtor(&value);
- EG(scope) = old_scope;
-
- return retval;
-}
-
-int zend_update_static_property_bool(zend_class_entry *scope, char *name, size_t name_len, zend_bool value TSRMLS_DC)
-{
- zval *tmp = tmp_zval();
- ZVAL_BOOL(tmp, value);
- return zend_update_static_property(scope, name, name_len, tmp TSRMLS_CC);
-}
-
-int zend_update_static_property_long(zend_class_entry *scope, char *name, size_t name_len, long value TSRMLS_DC)
-{
- zval *tmp = tmp_zval();
- ZVAL_LONG(tmp, value);
- return zend_update_static_property(scope, name, name_len, tmp TSRMLS_CC);
-}
-
-int zend_update_static_property_double(zend_class_entry *scope, char *name, size_t name_len, double value TSRMLS_DC)
-{
- zval *tmp = tmp_zval();
- ZVAL_DOUBLE(tmp, value);
- return zend_update_static_property(scope, name, name_len, tmp TSRMLS_CC);
-}
-
-int zend_update_static_property_string(zend_class_entry *scope, char *name, size_t name_len, char *value TSRMLS_DC)
-{
- zval *tmp = tmp_zval();
- ZVAL_STRING(tmp, value, 1);
- return zend_update_static_property(scope, name, name_len, tmp TSRMLS_CC);
-}
-
-int zend_update_static_property_stringl(zend_class_entry *scope, char *name, size_t name_len, char *value, size_t value_len TSRMLS_DC)
-{
- zval *tmp = tmp_zval();
- ZVAL_STRINGL(tmp, value, value_len, 1);
- return zend_update_static_property(scope, name, name_len, tmp TSRMLS_CC);
-}
-
-void zend_fix_static_properties(zend_class_entry *ce, HashTable *static_members TSRMLS_DC)
-{
- zend_hash_copy(static_members, ce->static_members, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));
- zend_hash_destroy(ce->static_members);
- zend_hash_init_ex(ce->static_members, static_members->nNumOfElements, NULL, ZVAL_PTR_DTOR, 1, 0);
-}
-
-void zend_init_static_properties(zend_class_entry *ce, HashTable *static_members TSRMLS_DC)
-{
- zend_hash_copy(ce->static_members, static_members, (copy_ctor_func_t) dup_zval, NULL, sizeof(zval *));
-}
-
-void zend_clean_static_properties(zend_class_entry *ce TSRMLS_DC)
-{
- zend_hash_clean(ce->static_members);
-}
-
-#endif /* PHP_MAJOR_VERSION == 5 */
+#endif
/*
* Local variables:
#include "php_version.h"
-#if (PHP_MAJOR_VERSION == 5)
-# if (PHP_MINOR_VERSION == 0)
+#if (PHP_MAJOR_VERSION == 5) && (PHP_MINOR_VERSION == 0)
+# define WONKY
+#endif
+
+#ifdef WONKY
extern int zend_declare_property_double(zend_class_entry *ce, char *name, int name_length, double value, int access_type TSRMLS_DC);
extern void zend_update_property_double(zend_class_entry *scope, zval *object, char *name, int name_length, double value TSRMLS_DC);
extern int zend_declare_property_bool(zend_class_entry *ce, char *name, int name_length, long value, int access_type TSRMLS_DC);
extern void zend_update_property_bool(zend_class_entry *scope, zval *object, char *name, int name_length, long value TSRMLS_DC);
-# endif
-
-extern int zend_declare_class_constant(zend_class_entry *ce, char *name, size_t name_length, zval *value TSRMLS_DC);
-extern int zend_declare_class_constant_null(zend_class_entry *ce, char *name, size_t name_length TSRMLS_DC);
-extern int zend_declare_class_constant_long(zend_class_entry *ce, char *name, size_t name_length, long value TSRMLS_DC);
-extern int zend_declare_class_constant_bool(zend_class_entry *ce, char *name, size_t name_length, zend_bool value TSRMLS_DC);
-extern int zend_declare_class_constant_double(zend_class_entry *ce, char *name, size_t name_length, double value TSRMLS_DC);
-extern int zend_declare_class_constant_string(zend_class_entry *ce, char *name, size_t name_length, char *value TSRMLS_DC);
-extern int zend_declare_class_constant_stringl(zend_class_entry *ce, char *name, size_t name_length, char *value, size_t value_length TSRMLS_DC);
-
-extern int zend_update_static_property(zend_class_entry *scope, char *name, size_t name_len, zval *value TSRMLS_DC);
-extern int zend_update_static_property_bool(zend_class_entry *scope, char *name, size_t name_len, zend_bool value TSRMLS_DC);
-extern int zend_update_static_property_long(zend_class_entry *scope, char *name, size_t name_len, long value TSRMLS_DC);
-extern int zend_update_static_property_double(zend_class_entry *scope, char *name, size_t name_len, double value TSRMLS_DC);
-extern int zend_update_static_property_string(zend_class_entry *scope, char *name, size_t name_len, char *value TSRMLS_DC);
-extern int zend_update_static_property_stringl(zend_class_entry *scope, char *name, size_t name_len, char *value, size_t value_len TSRMLS_DC);
-
-extern void zend_fix_static_properties(zend_class_entry *ce, HashTable *static_members TSRMLS_DC);
-extern void zend_init_static_properties(zend_class_entry *ce, HashTable *static_members TSRMLS_DC);
-extern void zend_clean_static_properties(zend_class_entry *ce TSRMLS_DC);
-
#endif
+
#endif
/*