X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_misc.c;h=f14354abfab28291799129062f97f8a46553d108;hp=c4661b7befc2988875ba6cacfbbbaf96cff83c96;hb=7b028d0cbb030f9610084314f67b77907d8474a2;hpb=6cc24086f57aa1e8f4d6a2c12361635e7c24f60f diff --git a/php_http_misc.c b/php_http_misc.c index c4661b7..f14354a 100644 --- a/php_http_misc.c +++ b/php_http_misc.c @@ -142,6 +142,29 @@ int php_http_select_str(const char *cmp, int argc, ...) /* ARRAYS */ +PHP_HTTP_API unsigned php_http_array_list(HashTable *ht TSRMLS_DC, unsigned argc, ...) +{ + HashPosition pos; + unsigned argl = 0; + va_list argv; + + va_start(argv, argc); + for ( zend_hash_internal_pointer_reset_ex(ht, &pos); + SUCCESS == zend_hash_has_more_elements_ex(ht, &pos) && (argl < argc); + zend_hash_move_forward_ex(ht, &pos)) + { + zval **data, ***argp = (zval ***) va_arg(argv, zval ***); + + if (SUCCESS == zend_hash_get_current_data_ex(ht, (void *) &data, &pos)) { + *argp = data; + ++argl; + } + } + va_end(argv); + + return argl; +} + int php_http_array_apply_append_func(void *pDest TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) { int flags; @@ -206,12 +229,6 @@ int php_http_array_apply_merge_func(void *pDest TSRMLS_DC, int num_args, va_list /* PASS CALLBACK */ -PHP_HTTP_API size_t php_http_pass_wrapper(php_http_pass_callback_arg_t *cb, const char *str, size_t len) -{ - TSRMLS_FETCH(); - return cb->cb_zts(cb->cb_arg, str, len TSRMLS_CC); -} - PHP_HTTP_API size_t php_http_pass_fcall_callback(void *cb_arg, const char *str, size_t len) { php_http_pass_fcall_arg_t *fcd = cb_arg; @@ -236,7 +253,7 @@ static inline int scope_error_handling(long type TSRMLS_DC) return EH_THROW; } - if (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), php_http_object_class_entry TSRMLS_CC)) { + if (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), php_http_object_get_class_entry() TSRMLS_CC)) { return php_http_object_get_error_handling(EG(This) TSRMLS_CC); } @@ -251,9 +268,10 @@ void php_http_error(long type TSRMLS_DC, long code, const char *format, ...) switch (scope_error_handling(type TSRMLS_CC)) { case EH_THROW: { char *message; - zend_class_entry *ce = php_http_exception_class_entry; + zend_class_entry *ce = php_http_exception_get_class_entry(); - if (0&& EG(exception_class) && instanceof_function(EG(exception_class), php_http_exception_class_entry TSRMLS_CC)) { + /* FIXME wat? */ + if (0&& EG(exception_class) && instanceof_function(EG(exception_class), ce TSRMLS_CC)) { ce = EG(exception_class); }