]> granicus.if.org Git - php/commitdiff
Add apache_sub_req()
authorSascha Schumann <sas@php.net>
Mon, 6 Nov 2000 01:46:28 +0000 (01:46 +0000)
committerSascha Schumann <sas@php.net>
Mon, 6 Nov 2000 01:46:28 +0000 (01:46 +0000)
sapi/apache2filter/php_functions.c

index c55a4e757dfa0d8ff590c4cbd47303dc1f184970..f2265cc4dab21a696cb76f4fb270049bd4f427b3 100644 (file)
 
 #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;
+}