X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_misc.c;h=4115042312b1f328f1032b1a1bfec218880dc40c;hp=bb9906252de18cafed51b29195754e0bb552677f;hb=7ba90c6d9d6843549fb9227d1a7aa05033e60772;hpb=1090760c65b564b30c0e30598cd19a1238e683f6 diff --git a/php_http_misc.c b/php_http_misc.c index bb99062..4115042 100644 --- a/php_http_misc.c +++ b/php_http_misc.c @@ -142,6 +142,30 @@ int php_http_select_str(const char *cmp, int argc, ...) /* ARRAYS */ +PHP_HTTP_API unsigned php_http_array_list(zval *hash TSRMLS_DC, unsigned argc, ...) +{ + HashTable *ht = HASH_OF(hash); + HashPosition pos; + unsigned argl = 0; + va_list argv; + + va_start(argv, argc); + for ( zend_hash_internal_pointer_reset_ex(ht, &pos); + 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;