| /* ==================================================================== |
| * The Apache Software License, Version 1.1 |
| * |
| * Copyright (c) 1996-2000 The Apache Software Foundation. All rights |
| * reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * |
| * 3. The end-user documentation included with the redistribution, |
| * if any, must include the following acknowledgment: |
| * "This product includes software developed by the |
| * Apache Software Foundation (http://www.apache.org/)." |
| * Alternately, this acknowledgment may appear in the software itself, |
| * if and wherever such third-party acknowledgments normally appear. |
| * |
| * 4. The names "Apache" and "Apache Software Foundation" must |
| * not be used to endorse or promote products derived from this |
| * software without prior written permission. For written |
| * permission, please contact apache@apache.org. |
| * |
| * 5. Products derived from this software may not be called "Apache", |
| * nor may "Apache" appear in their name, without prior written |
| * permission of the Apache Software Foundation. |
| * |
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR |
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| * ==================================================================== |
| */ |
| |
| #define CORE_PRIVATE |
| #include "mod_perl.h" |
| |
| #define MP_TYPE_DIR 1 |
| #define MP_TYPE_SRV 2 |
| |
| static void *vector_from_sv (SV *sv, int *type) |
| { |
| |
| if(sv_derived_from(sv, "Apache") && SvROK(sv)) { |
| request_rec *r = sv2request_rec(sv, "Apache", Nullcv); |
| *type = MP_TYPE_DIR; |
| return r->per_dir_config; |
| } |
| else if(sv_derived_from(sv, "Apache::Server") && SvROK(sv)) { |
| server_rec *s = (server_rec *) SvIV((SV*)SvRV(sv)); |
| *type = MP_TYPE_SRV; |
| return s->module_config; |
| } |
| else { |
| croak("Argument is not an Apache or Apache::Server object"); |
| } |
| } |
| |
| MODULE = Apache::ModuleConfig PACKAGE = Apache::ModuleConfig |
| |
| PROTOTYPES: DISABLE |
| |
| BOOT: |
| items = items; /*avoid warning*/ |
| |
| SV * |
| get(self=Nullsv, obj, svkey=Nullsv) |
| SV *self |
| SV *obj |
| SV *svkey |
| |
| PREINIT: |
| SV *caller = Nullsv; |
| |
| CODE: |
| RETVAL = Nullsv; |
| if(svkey && (gv_stashpv(SvPV(svkey,na), FALSE))) |
| caller = svkey; |
| |
| if((svkey == Nullsv) || caller) { |
| module *mod = NULL; |
| |
| if(!caller) |
| caller = perl_eval_pv("scalar caller", TRUE); |
| |
| if(caller) |
| mod = perl_get_module_ptr(SvPVX(caller), SvCUR(caller)); |
| |
| if(mod) { |
| int type = 0; |
| void *ptr = vector_from_sv(obj, &type); |
| mod_perl_perl_dir_config *data = |
| get_module_config(ptr, mod); |
| if(data && data->obj) { |
| ++SvREFCNT(data->obj); |
| RETVAL = data->obj; |
| } |
| else |
| RETVAL = Nullsv; |
| } |
| } |
| if(!RETVAL) XSRETURN_UNDEF; |
| |
| OUTPUT: |
| RETVAL |
| |
| MODULE = Apache::ModuleConfig PACKAGE = Apache::CmdParms |
| |
| char * |
| info(parms) |
| Apache::CmdParms parms |
| |
| CODE: |
| RETVAL = ((mod_perl_cmd_info *)parms->info)->info; |
| |
| OUTPUT: |
| RETVAL |
| |
| int |
| GETC(parms) |
| Apache::CmdParms parms |
| |
| CODE: |
| #if MODULE_MAGIC_NUMBER >= 19980413 |
| RETVAL = cfg_getc(cmd_infile); |
| #else |
| croak("httpd too old for getc"); |
| #endif |
| OUTPUT: |
| RETVAL |
| |
| SV * |
| getline(parms, buff=Nullsv, len=MAX_STRING_LEN) |
| Apache::CmdParms parms |
| SV *buff |
| int len |
| |
| ALIAS: |
| Apache::CmdParms::READ = 1 |
| Apache::CmdParms::READLINE = 2 |
| |
| PREINIT: |
| char *l; |
| int ret = 0; |
| |
| CODE: |
| RETVAL = newSV(0); |
| l = (char *)palloc(parms->temp_pool, len); |
| ret = !cfg_getline(l, len, cmd_infile); |
| if(!buff) buff = sv_newmortal(); |
| |
| switch((ix = XSANY.any_i32)) { |
| case 0: |
| sv_setiv(RETVAL, ret); |
| sv_setpv(buff, l); |
| break; |
| |
| case 1: |
| sv_setiv(RETVAL, SvCUR(buff)); |
| sv_setpv(buff, l); |
| break; |
| |
| case 2: |
| sv_setpv(RETVAL, l); |
| break; |
| } |
| |
| OUTPUT: |
| buff |
| RETVAL |
| |
| char * |
| path(parms) |
| Apache::CmdParms parms |
| |
| CODE: |
| if(!(RETVAL = parms->path)) XSRETURN_UNDEF; |
| |
| OUTPUT: |
| RETVAL |
| |
| Apache::Server |
| server(parms) |
| Apache::CmdParms parms |
| |
| CODE: |
| RETVAL = parms->server; |
| |
| OUTPUT: |
| RETVAL |
| |
| Apache::Command |
| cmd(parms) |
| Apache::CmdParms parms |
| |
| CODE: |
| RETVAL = (Apache__Command)parms->cmd; |
| |
| OUTPUT: |
| RETVAL |
| |
| int |
| override(parms) |
| Apache::CmdParms parms |
| |
| CODE: |
| RETVAL = parms->override; |
| |
| OUTPUT: |
| RETVAL |
| |
| int |
| limited(parms) |
| Apache::CmdParms parms |
| |
| CODE: |
| RETVAL = parms->limited; |
| |
| OUTPUT: |
| RETVAL |