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

Reply via email to