It is sort of a specialized instance of the more generic framework I started. Not knowing when I will have time to get back to my stuff, and the fact that I don't think these two would actually conflict in any way other than there eventually being two ways to do the same thing, I don't have any problem putting this in.
-Rasmus On Thu, 14 Feb 2002, Thies C. Arntzen wrote: > On Wed, Feb 13, 2002 at 12:36:49PM +0100, Lukas Schroeder wrote: > > 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. > > how does this compare the the work rasmnus has done some time > ago - see attached mail? > > re, > tc > > > > > > > > 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 > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php