X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_misc.c;h=c4661b7befc2988875ba6cacfbbbaf96cff83c96;hb=53cd22c1ef1112d21f6be89d0fbfead72216c640;hp=e4411e0aaf39efb2e654e46913d8287ec0beb001;hpb=94b41df5ff58a07118a24d935371b241e53d2669;p=m6w6%2Fext-http diff --git a/php_http_misc.c b/php_http_misc.c index e4411e0..c4661b7 100644 --- a/php_http_misc.c +++ b/php_http_misc.c @@ -116,6 +116,30 @@ size_t php_http_boundary(char *buf, size_t buf_len TSRMLS_DC) return snprintf(buf, buf_len, "%15.15F", PHP_HTTP_G->env.request.time * php_combined_lcg(TSRMLS_C)); } +int php_http_select_str(const char *cmp, int argc, ...) +{ + va_list argv; + int match = -1; + + if (cmp && argc > 0) { + int i; + + va_start(argv, argc); + for (i = 0; i < argc; ++i) { + const char *test = va_arg(argv, const char *); + + if (!strcasecmp(cmp, test)) { + match = i; + break; + } + } + va_end(argv); + } + + return match; +} + + /* ARRAYS */ int php_http_array_apply_append_func(void *pDest TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) @@ -188,6 +212,22 @@ PHP_HTTP_API size_t php_http_pass_wrapper(php_http_pass_callback_arg_t *cb, cons 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; + zval *zdata; + TSRMLS_FETCH_FROM_CTX(fcd->ts); + + MAKE_STD_ZVAL(zdata); + ZVAL_STRINGL(zdata, str, len, 1); + if (SUCCESS == zend_fcall_info_argn(&fcd->fci TSRMLS_CC, 2, &fcd->fcz, &zdata)) { + zend_fcall_info_call(&fcd->fci, &fcd->fcc, NULL, NULL TSRMLS_CC); + zend_fcall_info_args_clear(&fcd->fci, 0); + } + zval_ptr_dtor(&zdata); + return len; +} + /* ERROR */ static inline int scope_error_handling(long type TSRMLS_DC)