From: Sascha Schumann Date: Mon, 6 Nov 2000 01:46:28 +0000 (+0000) Subject: Add apache_sub_req() X-Git-Tag: php-4.0.4RC3~308 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e7a632e95082486c1238e62c3fb6dadeaff36e62;p=php Add apache_sub_req() --- diff --git a/sapi/apache2filter/php_functions.c b/sapi/apache2filter/php_functions.c index c55a4e757d..f2265cc4da 100644 --- a/sapi/apache2filter/php_functions.c +++ b/sapi/apache2filter/php_functions.c @@ -18,20 +18,30 @@ #include "php_apache.h" -PHP_FUNCTION(apache_sub_req) +static request_rec *php_lookup_uri(INTERNAL_FUNCTION_PARAMETERS) { zval **p1; - request_req *rr; php_struct *ctx; SLS_FETCH(); if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &p1) == FAILURE) - WRONG_NUM_ARGS; + return NULL; convert_to_string_ex(p1); ctx = SG(server_context); - rr = ap_sub_req_lookup_uri(Z_STRVAL_PP(p1), ctx->f->r); + return ap_sub_req_lookup_uri(Z_STRVAL_PP(p1), ctx->f->r); +} + +PHP_FUNCTION(apache_sub_req) +{ + request_rec *rr; + + rr = php_lookup_uri(INTERNAL_FUNCTION_PARAM_PASSTHRU); + + if (!rr) + WRONG_NUM_ARGS; + if (rr->status == HTTP_OK) { ap_run_sub_req(rr); RETURN_TRUE; @@ -39,3 +49,43 @@ PHP_FUNCTION(apache_sub_req) RETURN_FALSE; } +#define ADD_LONG(name) \ + add_assoc_long(return_value, #name, rr->name) +#define ADD_STRING(name) \ + add_assoc_string(return_value, #name, rr->name, 1) + +PHP_FUNCTION(apache_lookup_uri) +{ + request_rec *rr; + + rr = php_apache_lookup_uri(INTERNAL_FUNCTION_PARAM_PASSTHRU); + if (!rr) + WRONG_NUM_ARGS; + + if (rr->status == HTTP_OK) { + array_init(return_value); + + ADD_LONG(status); + ADD_STRING(the_request); + ADD_STRING(status_line); + ADD_STRING(method); + ADD_LONG(mtime); + ADD_LONG(clength); + ADD_STRING(boundary); + ADD_STRING(range); + ADD_LONG(byterange); + ADD_LONG(chunked); + ADD_STRING(content_type); + ADD_STRING(handler); + ADD_LONG(no_cache); + ADD_LONG(no_local_copy); + ADD_STRING(unparsed_uri); + ADD_STRING(uri); + ADD_STRING(filename); + ADD_STRING(path_info); + ADD_STRING(args); + + return; + } + RETURN_FALSE; +}