X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_misc.c;h=0ba19f9b0ee908ea27e7de64bcf3766f6db7a1fa;hp=c4661b7befc2988875ba6cacfbbbaf96cff83c96;hb=47be714b40e14b6b5cdc2f35a7994efd13c2076e;hpb=880540695ec6784e5570a15533467f7dff98d4f1 diff --git a/php_http_misc.c b/php_http_misc.c index c4661b7..0ba19f9 100644 --- a/php_http_misc.c +++ b/php_http_misc.c @@ -6,7 +6,7 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2011, Michael Wallner | + | Copyright (c) 2004-2013, Michael Wallner | +--------------------------------------------------------------------+ */ @@ -17,7 +17,7 @@ /* SLEEP */ -PHP_HTTP_API void php_http_sleep(double s) +void php_http_sleep(double s) { #if defined(PHP_WIN32) Sleep((DWORD) PHP_HTTP_MSEC(s)); @@ -142,6 +142,29 @@ int php_http_select_str(const char *cmp, int argc, ...) /* ARRAYS */ +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,13 +229,7 @@ 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) +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; zval *zdata; @@ -228,48 +245,8 @@ PHP_HTTP_API size_t php_http_pass_fcall_callback(void *cb_arg, const char *str, return len; } -/* ERROR */ -static inline int scope_error_handling(long type TSRMLS_DC) -{ - if ((type == E_THROW) || (EG(error_handling) == EH_THROW)) { - return EH_THROW; - } - - if (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), php_http_object_class_entry TSRMLS_CC)) { - return php_http_object_get_error_handling(EG(This) TSRMLS_CC); - } - - return EH_NORMAL; -} - -void php_http_error(long type TSRMLS_DC, long code, const char *format, ...) -{ - va_list args; - - va_start(args, format); - switch (scope_error_handling(type TSRMLS_CC)) { - case EH_THROW: { - char *message; - zend_class_entry *ce = php_http_exception_class_entry; - - if (0&& EG(exception_class) && instanceof_function(EG(exception_class), php_http_exception_class_entry TSRMLS_CC)) { - ce = EG(exception_class); - } - - vspprintf(&message, 0, format, args); - zend_throw_exception(ce, message, code TSRMLS_CC); - efree(message); - break; - } - case EH_NORMAL: - php_verror(NULL, "", type, format, args TSRMLS_CC); - break; - case EH_SUPPRESS: - break; - } - va_end(args); -} +/* ZEND */ /* * Local variables: