On Wed, Feb 13, 2002 at 08:13:42AM +0100, Markus Fischer wrote:
> Patches should always be against latest CVS.
here it is. against latest CVS.
regards,
-lukas
Index: sapi/apache/mod_php4.c
===================================================================
RCS file: /repository/php4/sapi/apache/mod_php4.c,v
retrieving revision 1.127
diff -u -r1.127 mod_php4.c
--- sapi/apache/mod_php4.c 11 Dec 2001 15:31:53 -0000 1.127
+++ sapi/apache/mod_php4.c 13 Feb 2002 11:20:58 -0000
@@ -483,6 +483,39 @@
}
/* }}} */
+/* {{{ php_get_request_handler
+ */
+static int php_get_request_handler(request_rec *r, char **target)
+{
+ HashTable *per_dir_conf;
+ php_per_dir_entry *per_dir_entry;
+ char *filename;
+
+ if (!(per_dir_conf = get_module_config(r->per_dir_config, &php4_module)))
+ return 0;
+
+ if (zend_hash_find(per_dir_conf, "request_handler",
+sizeof("request_handler")-1,
+ (void **)&per_dir_entry) == SUCCESS) {
+
+ if (!ap_os_is_path_absolute(per_dir_entry->value)) {
+ char *dirnam = ap_pstrdup(r->pool, r->filename);
+ char *x = strrchr(dirnam, '/');
+
+ if (x != NULL)
+ *x = 0;
+ filename = ap_make_full_path(r->pool, dirnam,
+per_dir_entry->value);
+ }
+ else
+ filename = ap_pstrdup(r->pool, per_dir_entry->value);
+
+ *target = filename;
+ return 1;
+ }
+
+ return 0;
+}
+/* }}} */
+
/* {{{ send_php
*/
static int send_php(request_rec *r, int display_source_mode, char *filename)
@@ -502,6 +535,9 @@
return OK;
}
+ if (php_get_request_handler(r, &filename))
+ r->filename = filename;
+
zend_first_try {
/* We don't accept OPTIONS requests, but take everything else */
if (r->method_number == M_OPTIONS) {
@@ -846,6 +882,26 @@
}
/* }}} */
+/* {{{ php_type_checker
+ */
+static int php_type_checker(request_rec *r)
+{
+ char *filename;
+
+ /* if a request_handler has been registered, the type checker tells
+ * apache to invoke our send_php handler; otherwise we deny responsibility
+ * for this request
+ */
+
+ if (php_get_request_handler(r, &filename)) {
+ r->handler = "application/x-httpd-php";
+ return OK;
+ }
+
+ return DECLINED;
+}
+/* }}} */
+
/* {{{ handler_rec php_handlers[]
*/
handler_rec php_handlers[] =
@@ -885,7 +941,7 @@
NULL, /* check_user_id */
NULL, /* check auth */
NULL, /* check access */
- NULL, /* type_checker */
+ php_type_checker, /* type_checker */
NULL, /* fixups */
NULL /* logger */
#if MODULE_MAGIC_NUMBER >= 19970103
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php