httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r..@covalent.net
Subject [PATCH] Config modules step 1
Date Tue, 11 Apr 2000 15:27:54 GMT

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