httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a.@atm9.com.dtu.dk
Subject Re: [PATCH] Config modules step 1
Date Tue, 11 Apr 2000 18:58:28 GMT

Looks good to me

+1

--
ridruejo@apache.org

> 
> 
> I am posting a patch to implement the first step in Config modules.  This
> is the step where we are generating a tree based on the config file, but
> that tree is never used.  As soon as I post this, I will modify the code
> to actually use the tree once it is built.
> 
> I will also be responding to one or two messages about the proposed 
> changes in a few minutes.
> 
> Please review the patch and make comments.  I would like to commit this
> quickly because it doesn't really change anything.  If there are no
> screams of outrage, I will commit tomorrow evening.
> 
> Ryan
> 
> Patch to current files:
> 
> Index: main/Makefile.in
> ===================================================================
> RCS file: /home/cvs/apache-2.0/src/main/Makefile.in,v
> retrieving revision 1.3
> diff -u -d -b -w -u -r1.3 Makefile.in
> --- main/Makefile.in	2000/03/15 22:46:29	1.3
> +++ main/Makefile.in	2000/04/11 18:12:32
> @@ -11,7 +11,7 @@
>      uri_delims.h test_char.h \
>  	buff.c http_config.c http_core.c http_log.c http_main.c \
>  	http_protocol.c http_request.c http_vhost.c util.c util_date.c \
> -	util_script.c util_uri.c util_md5.c \
> +	util_script.c util_uri.c util_md5.c util_cfgtree.c \
>  	rfc1413.c http_connection.c iol_file.c listen.c
>  
>  include $(top_srcdir)/build/ltlib.mk
> Index: main/http_config.c
> ===================================================================
> RCS file: /home/cvs/apache-2.0/src/main/http_config.c,v
> retrieving revision 1.34
> diff -u -d -b -w -u -r1.34 http_config.c
> --- main/http_config.c	2000/03/31 08:44:19	1.34
> +++ main/http_config.c	2000/04/11 18:12:32
> @@ -83,6 +83,7 @@
>  #include "http_request.h"	/* for default_handler (see invoke_handler) */
>  #include "http_main.h"
>  #include "http_vhost.h"
> +#include "util_cfgtree.h"
>  
>  HOOK_STRUCT(
>  	    HOOK_LINK(header_parser)
> @@ -837,6 +838,8 @@
>      const char *args, *cmd_name, *retval;
>      const command_rec *cmd;
>      module *mod = top_module;
> +    ap_directive_t *newdir;
> +    static ap_directive_t *current = NULL;
>  
>      if ((l[0] == '#') || (!l[0]))
>  	return NULL;
> @@ -849,6 +852,22 @@
>      cmd_name = ap_getword_conf(parms->temp_pool, &args);
>      if (*cmd_name == '\0')
>  	return NULL;
> +
> +    newdir = ap_pcalloc(parms->pool, sizeof(ap_directive_t));
> +    newdir->line_num = parms->config_file->line_number;
> +    newdir->directive = ap_pstrdup(parms->pool, cmd_name);
> +    newdir->args = ap_pstrdup(parms->pool, args);
> +
> +    if (cmd_name[0] == '<') {
> +        current = ap_add_node(current, newdir, 1);
> +    }
> +    else {
> +        current = ap_add_node(current, newdir, 0);
> +    }
> +    newdir = NULL;
> +    if (strncmp(cmd_name, "</", 2) == 0) {
> +        current = current->parent;
> +    }
>  
>      oldconfig = parms->context;
>      parms->context = config;
> 
> added file src/include/util_cfgtree.h:
> 
> /* ====================================================================
>  * The Apache Software License, Version 1.1
>  *
>  * Copyright (c) 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.
>  * ====================================================================
>  *
>  * This software consists of voluntary contributions made by many
>  * individuals on behalf of the Apache Software Foundation.  For more
>  * information on the Apache Software Foundation, please see
>  * <http://www.apache.org/>.
>  */
> 
> #ifndef AP_CONFTREE_H
> #define AP_CONFTREE_H
> 
> #include "apr_lib.h"
> 
> typedef struct ap_directive_t {
>     char *directive;
>     char *args;
>     int line_num;
>     struct ap_directive_t *next;
>     struct ap_directive_t *first_child;
>     struct ap_directive_t *parent;
> } ap_directive_t;
> 
> ap_directive_t *ap_add_node(ap_directive_t *current, ap_directive_t *todadd, int child);
> 
> #endif
> 
> 
> added file src/main/util_cfgtree.c:
> 
> /* ====================================================================
>  * The Apache Software License, Version 1.1
>  *
>  * Copyright (c) 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.
>  * ====================================================================
>  *
>  * This software consists of voluntary contributions made by many
>  * individuals on behalf of the Apache Software Foundation.  For more
>  * information on the Apache Software Foundation, please see
>  * <http://www.apache.org/>.
>  *
>  * Portions of this software are based upon public domain software
>  * originally written at the National Center for Supercomputing Applications,
>  * University of Illinois, Urbana-Champaign.
>  */
> 
> #define CORE_PRIVATE
> #include "util_cfgtree.h"
> 
> ap_directive_t *conf_tree;
> 
> ap_directive_t *ap_add_node(ap_directive_t *current, ap_directive_t *toadd, int child)
> {
>     if (current == NULL) {
>         conf_tree = toadd;
>         return conf_tree;
>     }
>     else if (child == 1){
>         current->first_child = toadd;
>         toadd->parent = current;
>         toadd->first_child = toadd->next = NULL;
>         return toadd;
>     }
>     else {
>         current->next = toadd;
>         toadd->parent = current->parent;
>         toadd->first_child = toadd->next = NULL;
>         return toadd;
>     }
> }
> 
> 
> 
> _______________________________________________________________________________
> Ryan Bloom                        	rbb@apache.org
> 406 29th St.
> San Francisco, CA 94131
> -------------------------------------------------------------------------------
> 


Mime
View raw message